Web
8 Jun 2020

Cookie

해당 게시글은 웹을 공부하기 위해 개인적으로 기록했던 자료입니다.

Session


Session이란 여러페이지에 걸쳐서 일어나는 요청 중에 특정 사용자를 파악할 수 있는 방법입니다.

Servlet Container(ex Tomcat)은 javax.servlet.http.HttpSession Interface로 Http client와 Http server사이에 Session을 생성합니다. 세션은 지속시간이 쿠키와 다릅니다. 세션은 적어도 하나의 사용자의 요청에 의한 연결(Connection)이 있는, 일정 시간동안 유지됩니다. 세션은 보통 유저 한명과 일치한다고 보면 됩니다.

HttpSession Interface를 사용해서 Session에 대한 정보를 조회하거나 수정할 수 있고 또한 객체를 바인딩할 수 있습니다.

Session in code


아래와 같은 form을 만들고 submit을 클릭하면 LoginServlet으로 넘어갑니다.

<form action="LoginServlet" method="post">
ID: <input type="text" name="userId">
pass: <input type="password" name="userPassword">
<input type="submit" value="login">
</form>



LoginServlet Servlet

protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("LoginServlet doProcess....");
		String userId = request.getParameter("userId");
		String userPassword = request.getParameter("userPassword");
		Member pMemberVO = new  Member(userId, userPassword, "Lee", "Seoul");
		HttpSession session = request.getSession();
		
		session.setAttribute("member", pMemberVO);
		
		PrintWriter out = response.getWriter();
		out.println("<html><body><h2>");
		out.println("SessionId: "+session.getId()+"<br>");
		out.println("userId: "+userId+"<br>");
		out.println("userPassword: "+userPassword+"<br>");
		out.println("<a href = ProductServlet>to next Link....</a>");
		out.println("</h2></body></html>");
		
	} 

LoginServlet Servlet에서 HttpSession Interface를 이용해 request.getSession으로 session 인스턴스를 생성합니다.

setAttribute method로 객체를 바인딩해서 navigation을 진행할 수 있습니다.

세션마다 고유의 ID가 있는데 getId()메소드를 통해 구해올 수 있습니다.

02session

protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		HttpSession session = request.getSession();
		Member memberVO = (Member) session.getAttribute("member");
		out.println("<html><body><h2>");
		out.println("SessionId: "+session.getId()+"<br>");
		out.println("userId: "+memberVO.getId()+"<br>");
		out.println("userPassword: "+memberVO.getPassword()+"<br>");
		out.println("<a href = ThirdServlet>to next Link....</a>");
		out.println("</h2></body></html>");
	}

다음 Servlet에서 getAttribute를 통해 member라는 이름으로 바인딩을 한 Member 객체를 불러옵니다.
03session02

세션 ID가 동일하게 유지되고 있습니다.


Tags:
0 comments