๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŒ  ์ž๋ฐ” ์„œ๋ฒ„ ํŽ˜์ด์ง€ JSP/๐ŸŒŒ ์›น \ ์„œ๋ธ”๋ฆฟ Web , Servlet

Web - Servlet ์‹ค์Šต 5 (Session ์ด์šฉ ๋ฐฉ๋ฌธ ํšŸ์ˆ˜ ์นด์šดํŠธ)

by Meteora_ 2021. 3. 15.
728x90

html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- ์ €์žฅ๊ณต๊ฐ„ (server, Client)
cookie:client์ €์žฅ ๊ณต๊ฐ„, String
		ID,PassWord,๋ฐฉ๋ฌธํšŒ์ˆ˜
		์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋„ ์ ‘๊ทผ

session: server ์ €์žฅ๊ณต๊ฐ„, Object
		์ €์žฅ๊ธฐํ•œ ์„ค์ •, ๋ฐฉ๋ฌธํšŒ์ˆ˜
		ํ•œ๊ธ€์‚ฌ์šฉ ๊ธˆ์ง€
		๊ฐœ์ธ์ •๋ณด - (id,password,Name)


-->

<a href = "hello">hello Servlet</a>
<br><br>

<a href ="world">world Servlet</a>
</body>
</html>

Servlet

 

 

โ–  session ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ธฐ

session ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ request ๋‚ด์žฅ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ getSession() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

HttpSession session = request.getSession(true);

 

getSession() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์„œ๋ฒ„์—์„œ๋Š” ์ฟ ํ‚ค๋‚˜ URL๋กœ๋ถ€ํ„ฐ ์„ธ์…˜ ID๋ฅผ ๋ฝ‘์•„๋‚ด์„œ ์„œ๋ฒ„์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์„ธ์…˜ ID ๋ชฉ๋ก๊ณผ ๋น„๊ต๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์ผ์น˜ํ•˜๋Š” ์„ธ์…˜ ID๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์„ธ์…˜ ID์˜ ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ์—†๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ „๋‹ฌํ•ด ์ค€๋‹ค.

 

ํ•˜์ง€๋งŒ, ์„ธ์…˜ ๊ฐ์ฒด๋Š” ์›๋ž˜ JSP์˜ ๋‚ด์žฅ ๊ฐ์ฒด๋กœ ์ œ๊ณต๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์™€ ๊ฐ™์ด ์ง์ ‘ ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” session ๋‚ด์žฅ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•จ์œผ๋กœ์จ ์„ธ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. session ๋‚ด์žฅ ๊ฐ์ฒด๋Š” JSP ํŽ˜์ด์ง€์˜ pageContext ๋‚ด์žฅ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ getSession() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ์„ฑ๋œ๋‹ค.

 

HttpSession session = null;

session = pageContext.getSession();

package world;

import java.io.IOException;
import java.io.PrintWriter;

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;

@WebServlet("/world")
public class WorldServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setContentType("text/html; charset=utf-8");
		
		PrintWriter pw = resp.getWriter();
		
		pw.println("<html>");
		pw.println("<head>");
			pw.println("<title>์ œ๋ชฉ</title>");
		pw.println("</head>");
		
		pw.println("<body>");
		
			pw.println("<h3>worldServlet</h3>");
			
			HttpSession session = req.getSession(false);
			/*
			 	getSession(false)
			 	session object๊ฐ€ ์กด์žฌํ•˜๋ฉด, ํ˜„์žฌ HttpSession์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
				์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด null๋ฐ˜ํ™˜

			 	getSession(true)
			 	session object๊ฐ€ ์กด์žฌํ•˜๋ฉด, ํ˜„์žฌ HttpSession์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
				์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•œ๋‹ค
				
			 *
			 */
			
			if(session == null) {
				//์„ธ์…˜์ด ์—†์„๋•Œ if
				session = req.getSession(true);
				//์„ ํƒ
				session.setMaxInactiveInterval(30);//365*24*60*60 1๋…„
				//30์ดˆํ›„์—๋Š” ์„ธ์…˜์ด ์—†์–ด์ง„๋‹ค
                
                //session ์ƒ์„ฑ
				session.setAttribute("visited", "1");
				pw.println("<p>์ฒซ๋ฒˆ์งธ๋ฐฉ๋ฌธ์ž…๋‹ˆ๋‹ค</p>");
			}
			
			
			else {
				String visited = (String)session.getAttribute("visited");
				int count = Integer.parseInt(visited);
				
				count++;
				
				pw.println("<p>๋ฐฉ๋ฌธํšŸ์ˆ˜๋Š” "+ count +"๋ฒˆ์งธ ๋ฐฉ๋ฌธ์ž…๋‹ˆ๋‹ค</p>");
				session.setAttribute("visited", count + "");
				//๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ""๋ฅผ ๋’ค์— ์ถ”๊ฐ€
			}
		
		pw.println("</body>");
		
		
		
		pw.println("</html>");
		pw.close();
		
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPost(req, resp);
	}

}

๋Œ“๊ธ€