[JSP] 세션

세션(session)

  • 서버 세션을 사용하면 클라이언트의 상태를 저장할 수 있음
  • 쿠키와의 차이점은 세션은 웹 브라우저가 아닌 서버에 값을 저장한다는 점
  • 웹 컨테이너에서 클라이언트의 정보를 보관 및 상태를 유지할 때 사용
  • 로그인한 사용자 정보를 유지하기 위한 목적
  • 클라이언트마다 세션이 생성
    • 웹 브라우저에 정보 보관: 쿠키
    • 웹 컨테이너에 정보 보관: 세션

세션 연결예제

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<title>Session</title>
</head>
<body>
	<form method="post" action="session01_process.jsp">
		<p>아이디: <input type="text" name="id" /></p>
		<p>비밀번호: <input type="password" name="passwd" /></p>
		<p><input type="submit" value="전송" /></p>
	</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<title>Session</title>
</head>
<body>
	<%
		String user_id = request.getParameter("id");
		String user_pw = request.getParameter("passwd");
		
		if(user_id.equals("admin")&&user_pw.equals("admin1234")){
			session.setAttribute("userID", user_id);
			session.setAttribute("userPW", user_pw);
			out.print("세션설정성공<br>");
			out.print(user_id +"님 환영하무니다");
		}else{
			out.print("세션 설정 실패이무니다");
		}
	%>
</body>
</html>
  • 세션 정보확인하기

    • session.getId() : 세션id 정보확인
    • session.getCreationTime(): 세션 생성시간
<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<title>세션정보</title>
</head>
<body>
<%
	// long타입의 시간 값을 저장하기 위해 사용
	Date time = new Date();
	SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
%>
세션 id : <%=session.getId() %><br>
<%
	// 세션의 생성 시간을 Date 객체인 time에 저장
	time.setTime(session.getCreationTime());
%>
세션 생성 시간: <%=formatter.format(time) %><br>
<%
	// 세션의 마지막 접근 시간(long) -> Date 타입으로 세팅
	time.setTime(session.getLastAccessedTime());
%>
최근접근시간: <%=formatter.format(time) %><br>
</body>
</html>

  • 세션에 정보 저장하기 예제
  • set
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	session.setAttribute("MEMBERID", "ddit");
	session.setAttribute("NAME", "개똥이");
%>
<!DOCTYPE html>
<html>
<head>
<title>세션에 정보저장</title>
</head>
<body>
세션에 정보를 저장했습니다. <br>
<a href="getMemberInfo.jsp">저장된 세션의 정보보기</a>
</body>
</html>

  • get
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	// object라 형변환 필요
	String memberId = (String)session.getAttribute("MEMBERID"); //ddit
	String name = (String)session.getAttribute("NAME");
	
%>
<!DOCTYPE html>
<html>
<head>
<title>저장된 세션의 정보확인</title>
</head>
<body>
회원id: <%=memberId %><br>
회원이름: <%=name %><br>
<a href="/setMemberInfo.jsp">되돌아가기</a>
</body>
</html>

  • 세션 종료
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	session.invalidate();
%>
<!DOCTYPE html>
<html>
<head>
<title>세션 종료</title>
</head>
<body>
세션을 종료하였습니다.
</body>
</html>

세션 예제

  • session.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
	<form action="session_process.jsp" method="post">
		<p>아이디: <input type="text" name="id"></p>
		<p>비밀번호: <input type="password" name="pass"></p>
		<input type="submit" value="전송">
	</form>
</body>
</html>
  • session_process.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
	<%
		String id = request.getParameter("id");
		String pass = request.getParameter("pass");
		
		if(id.equals("admin")&&pass.equals("admin1234")){
			session.setAttribute("userID", id);
			response.sendRedirect("welcome.jsp");
		}else{
			out.print("응 아니야");
		}
		
	
	%>
</body>
</html>
  • welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>

<title>Insert title here</title>
</head>
<body>
	<%
		
		String id = (String)session.getAttribute("userID");
		if(id==null){
			response.sendRedirect("session_out.jsp");
		}
		out.print(id+"님 반갑습니다. <br>");
	%>
	<a href="session_out.jsp" >로그아웃</a>
</body>
</html>
  • session_out.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	session.invalidate();
	response.sendRedirect("session.jsp");
%>
<!DOCTYPE html>
<html>
<head>
<title>세션 종료</title>
</head>
<body>

</body>
</html>

좋은 웹페이지 즐겨찾기