세션(Session)은 웹 서버 쪽의 웹 컨테이너에 상태를 유지하기 위한 정보를 저장한다.
세션은 정보를 유지하기 위해 javax.servlet.http의 HttpSession 인터페이스를 읽어서 사용한다.
쿠키(Cookie)는 웹 브라우저에 사용자의 상태를 유지하기 위한 정보를 저장한다.
쿠키는 정보를 브라우저에 저장해서 웹 서버가 쿠키 정보를 읽어서 사용한다.
session.setAttribute("설정한_세션_아이디", 세션에_넣을_값);
// 예시
session.setAttribute("user_id", user_id);
// 60*30 = 30분 [참고] 60*60 = 60분
session.setMaxInactiveInterval(30*60);
// 세션의 시간 무한대로 설정
session.setMaxInactiveInterval(-1);
session.getAttribute("user_id");
// 특정 세션 값 삭제
session.removeAttribute("user_id");
// 전체 세션 값 삭제
session.invalidate();
<%@ 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 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<!-- BODY -->
<body>
<%
// 이미 로그인 상태인 사람은 또다시 로그인하지 못하도록
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("alert('로그인 성공!')"); //
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>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<!-- HEAD -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<!-- BODY -->
<body>
<%
// 세션 전체 제거, 무효화
session.invalidate();
%>
<script>
location.href= 'main.jsp';
</script>
</body>
</html>
<%@ 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" />
<jsp:setProperty name="user" property="userName" />
<jsp:setProperty name="user" property="userGender" />
<jsp:setProperty name="user" property="userEmail" />
<!DOCTYPE html>
<html>
<!-- HEAD -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP 게시판 웹 사이트</title>
</head>
<!-- BODY -->
<body>
<%
// 이미 로그인 상태인 사람은 회원가입 페이지에 접속하지 못하도록
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>");
}
// 입력하지 않은 항목이 있을 경우
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) { // 동일한 ID를 입력했을 경우 데이터베이스에서 오류 발생 (userID는 고유한 기본키 PK)
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('이미 존재하는 아이디입니다.')");
script.println("history.back()");
script.println("</script>");
} else { // 회원가입이 정상적으로 이루어진 경우
session.setAttribute("userID", user.getUserID()); // 세션 관리
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("location.href='main.jsp'");
script.println("</script>");
}
}
%>
</body>
</html>