https://www.youtube.com/watch?v=eJRB__ErXd4&list=PLRx0vPvlEmdAZv_okJzox5wj2gG_fNh_6&index=7
세션이란 현재 접속한 회원에 할당하는 고유한 ID이다.
웹서버는 한명의 회원을 세션ID로 구분할 수 있다.
따라서 로그인에 성공했을때 세션ID를 부여하는것으로 부터 세션관리가 시작된다고 할 수 있다.
로그인 회원가입을 포함 세션관리는 보안등에 있어서 중요하여 숙지할 필요가 있다.
1. loginAction.jsp / joinAction.jsp에 로그인에 성공한 회원에 세션할당 기능추가
3. loginAction.jsp / joinAction.jsp에 재로그인이 안되게 코드 추가
loginAction.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="user.UserDAO" %>
<%@ page import="java.io.PrintWriter" %> <!-- 자바코드 쓸수 있게 해줌 -->
<% request.setCharacterEncoding("UTF-8"); %>
<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">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
<%
String userID = null;
if(session.getAttribute("userID") != null) { //user가 접속이 되어있다면 세션값이 할당되어 있다면
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());//userID를 세션값할당
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('존재하지 않는 아이디입니다.')");
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>
joinAction.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="user.UserDAO" %>
<%@ page import="java.io.PrintWriter" %>
<% request.setCharacterEncoding("UTF-8"); %>
<!-- 밑의 코드를 써야 내용 받을 수 있음 -->
<!-- 각각의 정보를 가져와 user라는 객체완성 -->
<jsp:useBean id="user" class="user.User" scope="page" />
<jsp:setProperty name="user" property="userID" />
<jsp:setProperty name="user" property="userPassword" />
<jsp:setProperty name="user" property="userName" />
<jsp:setProperty name="user" property="userGender" />
<jsp:setProperty name="user" property="userEmail" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
<%
String userID = null;
if(session.getAttribute("userID") != null) { //user가 접속이 되어있다면 세션값이 할당되어 있다면
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>");
}
//빈공간에 대한 처리, 입력안했을때
if (user.getUserID() == null || user.getUserPassword() == null || user.getUserName() == null
|| user.getUserGender() == null || user.getUserEmail() == null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('입력이 안 된 사항이 있습니다.')");
script.println("history.back()"); // 뒤로가기
script.println("</script>");
} else {
UserDAO userDAO = new UserDAO(); //데이터 베이스에 접근 가능한 객체생성
int result = userDAO.join(user);
if (result == -1) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('이미 존재하는 아이디입니다.')");
script.println("history.back()");
script.println("</script>");
} else { // 회원가입이 되었을때 로그인 페이지로 넘어감,-1이 아닌경우 전부 넘어가도록함
session.setAttribute("userID", user.getUserID());//userID를 세션값으로
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href = 'main.jsp'");
script.println("</script>");
}
}
%>
</body>
</html>
2. logoutAction.jsp 생성 이 페이지에서 세션할당 해지할 수 있음
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
<%
session.invalidate(); //현재 이 페이지에 접속한 회원이 세션을 빼앗기게함
%>
<script>
location.href = 'main.jsp'; //다시 메인페이지로 보냄
</script>
</body>
</html>
4. main.jsp 만들기
index.jsp에 login.jsp를 main.jsp로 변경해놓는다.
<%@ 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="css/bootstrap.css">
<title>JSP 게시판 웹 사이트</title>
</head>
<body>
<%
String userID = null;
if(session.getAttribute("userID") != null) {
userID = (String) session.getAttribute("userID"); //로그인한 사람들은 해당아이디가 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>
*테스트
로그아웃을 누르면 다시 처음 main.jsp로 돌아옴
'JSP > JSP게시판 만들기' 카테고리의 다른 글
JSP 게시판 만들기 / 게시판 데이터베이스 구축하기 [동빈나님 강의.9] (0) | 2021.09.29 |
---|---|
JSP 게시판 만들기 / 게시판 메인 페이지 디자인 [동빈나님 강의.8] (0) | 2021.09.28 |
JSP 게시판 만들기 / 회원가입 기능 구현하기 [동빈나님 강의.6] (0) | 2021.09.28 |
JSP 게시판 만들기 / 회원가입 페이지 디자인 [동빈나님 강의.5] (0) | 2021.09.27 |
JSP 게시판 만들기 / 로그인 기능 구현 [동빈나님 강의.4] (0) | 2021.09.27 |