session servlet

2023. 2. 23. 14:43ใ†JSP&Servlet

์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋˜์ง„ id,pw ์ •๋ณด๋ฅผ ํ•œ๋ฒˆ ์ฝ์€ ํ›„ ๋ฒ„๋ฆผ(? ๊ธฐ์–ต์„ ๋ชป ํ•จ.

๊ทธ ๋’ค์— ๊ฐ™์€ id,pw๋ฅผ ๋˜์ ธ๋„ ์ด์ „์— ๋ฐ›์•˜๋˜ ์ •๋ณด์ธ์ง€ ๋ชจ๋ฅธ๋‹ค

๊ทธ๋ž˜์„œ ํ•œ๋ฒˆ ๋˜์ง€๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ž˜ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๊ฒŒ

์„œ๋ฒ„์— ์•„์ด๋”” ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„ : session 

ํด๋ผ์ด์–ธํŠธ์˜ ์ปดํ“จํ„ฐ์— ์ €์žฅ : cookie

 

๋ฐ์ดํ„ฐ๋ฅผ ์„ธ์…˜์— ์ €์žฅ
1. ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ

HttpSession session = request.getSession();

 

2. ์„ธ์…˜์— ๋ฐ์ดํ„ฐ ์ €์žฅ

session.setAttribute("name2", "python");

 

3. ์„ธ์…˜์˜ ๋ฐ์ดํ„ฐ ์ฝ์–ด์˜ค๊ธฐ

//()์•ˆ์€ ์„ธ์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์ด๋ฆ„ ์ž…๋ ฅ
//MemberDTO m = session.getAttribute("member"); //์ž์‹์€ ๋ถ€๋ชจ๊บผ ๋ชป ๋ฐ›์Œ(๋ฆฌํ„ดํƒ€์ž…:์˜ค๋ธŒ์ ํŠธ(๋ถ€๋ชจ)
//๋‚ด๊ฐ€ ๋ฐ›์•„์˜จ ์ž๋ฃŒํ˜•์œผ๋กœ ํ˜• ๋ณ€ํ™˜ํ•˜๋ฉด ๋ถ€๋ชจ๊บผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
MemberDTO m = (MemberDTO)session.getAttribute("member");
BoardDTO b = (BoardDTO)session.getAttribute("board");

 

jsp ํŒŒ์ผ์„ ์ฐพ๋Š” ๊ธฐ์ค€ ์œ„์น˜๋Š” webapp ํด๋”

RequestDispatcher dispatcher = request.getRequestDispatcher("view/test/session1.jsp"); 
dispatcher.forward(request, response);

webapp ๋ฐ‘์— view ํด๋” ์ƒ์„ฑ ๊ทธ ๋ฐ‘์— test ์ƒ์„ฑ ํ›„ test ์•ˆ์— session1 ์ƒ์„ฑ

 

session์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ jsp์—์„œ ๋นผ์„œ ๋ณด์—ฌ์ค„ ๋•Œ๋Š” 

name2 = ${sessionScope.name2 }
package session_test;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import dto.BoardDTO;
import dto.MemberDTO;

@WebServlet("/session01")
public class SessionServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public SessionServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		request.setAttribute("name1", "java");
		
		//๋ฐ์ดํ„ฐ๋ฅผ ์„ธ์…˜์— ์ €์žฅ
		//1. ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
		HttpSession session = request.getSession();
		
		//์„ธ์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์‹œ๊ฐ„ ์„ค์ •
		//session.setMaxInactiveInterval(60 * 60 * 24); //60*60 > ํ•œ์‹œ๊ฐ„ 60*60*24 ํ•˜๋ฃจ
		session.setMaxInactiveInterval(3);//3์ดˆ (์ž‘๋™ ์•ˆ ํ–ˆ์„ ๋•Œ๋ถ€ํ„ฐ 3์ดˆ)
		
		//2. ์„ธ์…˜์— ๋ฐ์ดํ„ฐ ์ €์žฅ(์›ํ•˜๋Š” ๋งŒํผ ๋„ฃ๊ธฐ ๊ฐ€๋Šฅ)
		session.setAttribute("name2", "python");
		session.setAttribute("age", 20); //์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฌธ์ž์—ด, ๋‘๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜ ์˜ค๋ธŒ์ ํŠธ
		session.setAttribute("member", new MemberDTO()); //๋งค๊ฐœ๋ณ€์ˆ˜ ์˜ค๋ธŒ์ ํŠธ๋ผ ๋‹ค ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ
		session.setAttribute("board", new BoardDTO());
		
		//3. ์„ธ์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•
		//()์•ˆ์€ ์„ธ์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์ด๋ฆ„ ์ž…๋ ฅ
		//MemberDTO m = session.getAttribute("member"); 
		//์ž์‹์€ ๋ถ€๋ชจ๊บผ ๋ชป ๋ฐ›์Œ(๋ฆฌํ„ดํƒ€์ž…:์˜ค๋ธŒ์ ํŠธ(๋ถ€๋ชจ) > ์˜ค๋ฅ˜
		//๋‚ด๊ฐ€ ๋ฐ›์•„์˜จ ์ž๋ฃŒํ˜•์œผ๋กœ ํ˜• ๋ณ€ํ™˜ํ•˜๋ฉด ๋ถ€๋ชจ๊บผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
		MemberDTO m = (MemberDTO)session.getAttribute("member");
		BoardDTO b = (BoardDTO)session.getAttribute("board");
		
		//4. ์„ธ์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์‚ญ์ œ
		//์ €์žฅ๋œ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ ์‚ญ์ œ : ()์•ˆ์€ ์„ธ์…˜์— ๋„ฃ์€ ๋ฐ์ดํ„ฐ ์ด๋ฆ„
		session.removeAttribute("name2");
		//์„ธ์…˜์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์‚ญ์ œ
		session.invalidate();
		
		//jsp ํŒŒ์ผ์„ ์ฐพ๋Š” ๊ธฐ์ค€ ์œ„์น˜๋Š” webapp ํด๋”
		RequestDispatcher dispatcher = request.getRequestDispatcher("view/test/session1.jsp"); 
		dispatcher.forward(request, response);

name1 nam2 ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๋Š”๋ฐ

name1์€ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ• name2๋Š” ์„ธ์…˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์„œ ๋„˜๊น€

 

session1.jsp์—์„œ ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
session1.jsp ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.<br>
name1 = ${name1 }<br>
<!-- ์„ธ์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ• -->
name2 = ${sessionScope.name2 } <br>
<a href="view/test/session2.jsp">ํŽ˜์ด์ง€ ์ด๋™</a>
<!-- ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ ๋ณด๋‚ด์ง€ ์•Š์•„๋„ ์ธํ„ฐ๋„ท ์ฐฝ์„ ๋„์ง€ ์•Š๋Š” ์ด์ƒ ๋ฐ์ดํ„ฐ ์‚ด์•„์žˆ๋‹ค-->
</body>
</html>

ํŽ˜์ด์ง€ ์ด๋™์œผ๋กœ session2.jsp ๊ฐ€๊ฒŒ ํ•จ.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
session2.jsp ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.<br>
name1 = ${name1 }<br>
<!-- ์„ธ์…˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ• -->
name2 = ${sessionScope.name2 } <br>
</body>
</html>

ํŽ˜์ด์ง€ ์ด๋™ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด
์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋„˜๊ธด ๋ฐ์ดํ„ฐ name1์€ ๋ฐ์ดํ„ฐ ์•ˆ ๋‚˜์˜ด

session์— ์ €์žฅํ•ด์„œ ๋„˜๊ธด name2๋Š” ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜จ๋‹ค.

 

์„ธ์…˜ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ ํ•œ๋ฒˆ ๋ณด๋‚ด๋ฉด ํŽ˜์ด์ง€ ์ด๋™ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋˜ ๋ณด๋‚ด์ง€ ์•Š์•„๋„ ์ธํ„ฐ๋„ท ์ฐฝ์„ ๋„์ง€ ์•Š๋Š” ์ด์ƒ ๊ณ„์† ๋ฐ์ดํ„ฐ ์‚ด์•„์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ์œ ํšจ ์‹œ๊ฐ„์„ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋‹ค.

session.setMaxInactiveInterval(60 * 60 * 24); //60*60 > ํ•œ์‹œ๊ฐ„ 60*60*24 ํ•˜๋ฃจ
session.setMaxInactiveInterval(3);//3์ดˆ (์ž‘๋™ ์•ˆ ํ–ˆ์„ ๋•Œ๋ถ€ํ„ฐ 3์ดˆ)