session이란 ? 

HTTP 프로토콜을 이용하는 웹 환경에서 상태를 유지 방법이다.

HTTP는 새로고침을 할 때마다 새로운 HTTP가 생성이 되는데, 예를 들어 어떠한 페이지에서 로그인을 했을 시 다음 화면으로 넘어갈 때 로그인이 바로 풀리지 않는다. 그 이유는 세션에 로그인 정보가 저장되어 있기 때문이다.

저장공간은 server이며, 저장기한 등을 설정할 수 있다.

 

 

session사용 예시

html 예시

<body>

<a href="hello">hello servlet</a>

</body>

java 예시

package serv;

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("/hello")
public class HelloServlet 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>");
	
		HttpSession session = req.getSession();
		
		session.setMaxInactiveInterval(2 * 60 * 60);
		session.setAttribute("member", "abc123");
		String member = (String)session.getAttribute("member");
		
		pw.println("<p>session정보:" + member + "</p>");
        
		session.invalidate();
		
		pw.println("</body>");
		pw.println("</html>");
		pw.close();
	}
}

 

HttpSession 

session사용을 위한 객체

HttpSession 메소드

getSession() getSession(true) → default
session object가 존재하면, 현재 HttpSession을 반환한다
존재하지 않으면 새로 생성한다.
getSession(false)
session object가 존재하면, 현재 HttpSession을 반환한다
존재하지 않으면 null을 반환한다.
setMaxInactiveInterval() 저장기한(유효시간)을 설정한다. 
기한계산방법
- 1년 : 365 * 24 * 60 * 60
- 10분 : 10 * 60
setAttribute(String name, Obejct value) 세션에 데이터를 저장한다.
name은 저장할 데이터의 변수명, value는 저장값이 된다.
getAttribute(String name) name에 저장한 value를 가져온다. 형변환은 필수이다.
invalidate 세션을 종료합니다.

 

실행화면

클릭 후 실행화면

+ Recent posts