WEB Project/JSP

JSP 게시판 만들기 - 7강

꾸준하게 :) 2020. 3. 24. 15:23

7강 접속한 회원 세션 관리하기 (JSP Advanced Development Tutorial #7)

 

 

※ 세션 관리

 

- 세션은 기본적으로 현재 접속한 회원에게 할당해주는 고유의 아이디

- 우리의 웹 서버는 한 명의 회원을 세션 아이디로 구분

- 따라서 로그인에 성공했을때 세션 아이디 부여부터 세션 관리가 시작된다고 할 수 있다.

- 먼저, 'loginAction.jsp' 페이지와 'joinAction.jsp' 페이지에게 각각 세션을 부여할 수 있게 하는 작업을 해본다.

 

- 또한, 로그인이 된 유저는 로그인과 회원가입 페이지에 들어갈 수 없도록 해야 함

- 그러므로 아래 '소스코드 1'의 코드를 각각의 페이지에 추가해보자.

 

[소스코드 1]

 

▶ 다음 코드를 'loginAction.jsp' 'joinAction.jsp'의 body 태그 상단에 추가한다.

 

1
2
3
4
5
6
7
8
9
10
11
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>");
}
cs

 

 

 

 

[소스코드 2]

 

'logoutAction.jsp' : 부여한 세션을 다시 할당 해제하는 페이지

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
<%
session.invalidate();
%>
<script>
location.href = 'main.jsp';
</script>
</body>
</html>

 

 

[소스코드 3]

 

'index.jsp' 페이지의 경로를 'login.jsp'가 아니라 'main.jsp' 수정

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
<script>
location.href = 'main.jsp'; // 이 부분을 수정한다
</script>
</body>
</html>
view raw index.jsp hosted with ❤ by GitHub

 

 

[소스코드 4]

 

▶ 가장 중요하다고 할 수 있는 메인 페이지, 'main.jsp'

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.PrintWriter" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width", initial-scale="1">
<link rel="stylesheet" href="css/bootstrap.css">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
<%
String userID = null;
if (session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID");
}
%>
<nav class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"
aria-expanded="false">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="main.jsp">JSP 게시판 웹 사이트</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="active"><a href="main.jsp">메인</a></li>
<li><a href="bbs.jsp">게시판</a></li>
</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>
<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>
<ul class="dropdown-menu">
<li><a href="logoutAction.jsp">로그아웃</a></li>
</ul>
</li>
</ul>
<%
}
%>
</div>
</nav>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="js/bootstrap.js"></script>
</body>
</html>
view raw main.jsp hosted with ❤ by GitHub

 

 

[실행화면 1]

 

▶ 메인 페이지 접속 화면

- 현재 로그인이 되어있지 않기 때문에 '접속하기' 버튼이 나와있는 모습이다.

 

 

 

[실행화면 2 & 실행화면 3]

 

▶ 회원가입 페이지에서 정보를 입력한 상태의 화면과 '회원가입' 버튼을 누른 후 화면

 

 

- '회원가입' 버튼을 누르게 되면 바로 로그인 및 접속이 되고, '로그아웃' 버튼이 보이는 화면을 볼 수 있다.

 

 

- '로그아웃' 버튼을 누르게 되면 다시 메인 페이지로 이동하게 된다.

 

 

이런 식으로 현재 접속한 회원의 세션을 관리함으로써 특정한 페이지에서 어떠한 내용은 보이고 어떠한 내용은 안 보이도록 관리해주는 것

세션 관리를 통해 전반적인 회원의 정보를 관리하고 이러한 페이지 구성 같은 경우를 회원이 로그인했는지 안 했는지에 따라 구성해보는 시간이었다.

● 세션 관리는 로그인 및 회원가입을 포함해서 갖가지 보안에 있어서 가장 중요한 요소이기 때문에 숙지해야 한다.

 

 

 

출처 : https://www.youtube.com/watch?v=eJRB__ErXd4&list=PLRx0vPvlEmdAZv_okJzox5wj2gG_fNh_6&index=7

 

'WEB Project > JSP' 카테고리의 다른 글

JSP 게시판 만들기 - 9강  (0) 2020.03.26
JSP 게시판 만들기 - 8강  (0) 2020.03.25
JSP 게시판 만들기 - 6강  (0) 2020.03.23
JSP 게시판 만들기 - 5강  (0) 2020.03.22
JSP 게시판 만들기 - 4강  (0) 2020.03.21