728x90
게시판 코드작성완료 후기 생생하게 공유드립니다. 많이 놀러와주세여:)
https://www.youtube.com/watch?v=P5s5JwvZjBA&t=27s&pp=sAQA
앞서 이전 포스트에서 main.jsp로그인 문제를 해결했는데,
동빈나에선 main.jsp UI디자인이 다르기 때문에 아래와 같이 코드를 수정했다.
# 로그인 유저 세션관리
우선 유저의 로그인 접속여부에 따라 loginGo.jsp와 main.jsp에 브라우저창에
보여주는 토글을 달리 설정했다.
<%@ page import="java.io.PrintWriter"%>
이 코드는 jsp파일에
loginGo.jsp의 값을 가져와주는 역할을하는 IO패키지의 PrintWriter을 호출하는 코드이다.
jsp파일안에서 java 코드를 넣을 땐 <%@ .. %> 이런 구문으로 입력해준다.
String userID = null;
if (session.getAttribute("userID") != null) {userID = (String) session.getAttribute("userID");}
HTTP세션에서 HttpSession 오브젝트가 아직 존재하지 않는 경우 작성되도록 null로 userID를 설정해주고,
login이 완료되면 userID가 값이 null이 안되므로 userID에 고유한 세션 ID를 사용해 넣어준다.
일반적으로 이를 쿠키로 브라우저에 다시 전송하므로 사용자의 각 후속 요청은 세션 ID가 들어 있는 쿠키를 전달을 통해 이루어진다. 결국 세션 관리 기능은 사용자의 기존 HttpSession 오브젝트를 찾는 데 이 ID를 사용한다고 보면된다.
만약, login이 안된다면? userID는 여전히 null값을 가지게된다.
https://dream-space.tistory.com/4
[Java IO_02] PrintWriter 클래스 사용법 예제분석
안녕하세요 다르입니다. 이번 포스팅에서는 IO패키지 Writer클래스의 자식클래스들중 하나인, PrintWriter에 관한 포스팅을 진행하겠습니다. IO패키지 포스팅은, 철저히 제 주관적인 경험에서, 자주
dream-space.tistory.com
https://www.ibm.com/docs/ko/was/9.0.5?topic=applications-developing-session-management-in-servlets
#main.jsp code 수정
그래서 이 userID 값에 따라 상단의 토글을 달리보여주는 코드는 아래와 같다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" , initial-scale="1">
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<title>BluevulpeBoard</title>
</head>
<body style="background-color: lightblue;">
<%
String userID = null;
if (session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
%>
<nav class="navbar navbar-default">
<!-- navbar-색상(inverse = 검은색, default = 색x) -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"
aria-expanded="false">
<!-- class="navbar-toggle collapsed"=>네비게이션의 화면 출력유무
data-toggle="collapse" : 모바일 상태에서 클릭하면서 메뉴가 나오게 설정 -->
<span class="icon-bar"></span> <span class="icon-bar"></span> <span
class="icon-bar"></span>
<!-- 아이콘 이미지 -->
</button>
<a class="navbar-brand" href="main.jsp">BluevulpeBoard</a>
<!-- Bootstrap navbar 기본 메뉴바 -->
</div>
<div class="collapse navbar-collapse"
id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<!-- navbar-nav => 네비게이션 바의 메뉴 -->
<li class="active"><a href="main.jsp">메인</a></li>
<!--메인페이지이므로 메인버튼을 강조해주는 active 클래스를 추가 -->
<li><a href="list.jsp">게시판</a></li>
<!-- 메뉴, 게시판의 main.jsp와 list.jsp의 파일로 각각 이동(동빈나에선 list.jsp대신 bbs.jsp파일명사용 -->
</ul>
<%
if (userID == null) {
%>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown"><a href="#" class="dropdown-toggle"
data-toggle="dropdown" role="button" aria-haspopup="true"
aria-expanded="false">접속하기<span class="caret"></span></a>
<!-- caret = creates a caret arrow icon (▼) -->
<ul class="dropdown-menu">
<li><a href="login.jsp">로그인</a></li>
<li><a href="join.jsp">회원가입</a></li>
</ul></li>
</ul>
<%
} else {
%>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown"><a href="#" class="dropdown-toggle"
data-toggle="dropdown" role="button" aria-haspopup="true"
aria-expanded="false">회원관리<span class="caret"></span></a>
<!-- caret = creates a caret arrow icon (▼) -->
<ul class="dropdown-menu">
<li><a href="logout.jsp">로그아웃</a></li>
</ul>
</li>
</ul>
<%
}
%>
</div>
</nav>
</body>
</html>
#loginGo.jsp code 수정
세션객체에서 getAttribute메소드를 사용해 userID 값에 따라 main.jsp에서 '로그인'버튼을 누르면
로그인여부를 알려주는 코드를 아래와 같이 loginGo.jsp에 추가해준다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="user.UserDAO" %>
<%@ page import="java.io.PrintWriter" %>
<jsp:useBean id="user" class="user.User" scope="page"/>
<jsp:setProperty name="user" property="userID"/>
<jsp:setProperty name="user" property="userPassword"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width", initial-scale="1">
<title>BluevulpeBoard</title>
</head>
<body style= "background-color : lightblue;">
<%
String userID = null;
if (session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
if (userID != null) {
PrintWriter script =response.getWriter();
script.println("<script>");
script.println("alert('이미 로그인이 되어 있습니다.')");
script.println("location.href = 'main.jsp'");
script.println("</script>");
}
UserDAO userDAO = new UserDAO();
int result = userDAO.login(user.getUserID(), user.getUserPassword());
if (result == 1) {
session.setAttribute("userID", user.getUserID());
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'main.jsp'");
script.println("</script>");
}
else if (result == 0) {
PrintWriter script =response.getWriter();
script.println("<script>");
script.println("alert('비밀번호가 틀립니다.')");
script.println("history.back()");
script.println("</script>");
}
else if (result == -1) {
PrintWriter script =response.getWriter();
script.println("<script>");
script.println("alert('존재하지 않는 id입니다.')");
script.println("history.back()");
script.println("</script>");
}
else if (result == -2) {
PrintWriter script =response.getWriter();
script.println("<script>");
script.println("alert('데이터베이스 오류가 발생했습니다.')");
script.println("history.back()");
script.println("</script>");
}
%>
</body>
</html>
# index.jsp 경로수정
login.jsp로 넘긴 걸 아래와 같이 main.jsp로 페이지이동하도록 코드수정한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BulevulpeBoard</title>
</head>
<body>
<script>
location.href = 'main.jsp';
</script>
</body>
</html>
Copyright ⓒ 2021 by bluevulpe All Contents cannot be copied without permission.
728x90
댓글