본문 바로가기
{Java}

21.06.23 {코딩일기} 동빈나 유튜버 JSP게시판 만들기 강좌(7) | 전자정부프레임워크 eclipse 게시판 만들기{day5}

by Davey 2021. 6. 24.
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

댓글