// 저장된 Session 데이터 읽어오기
1. 세션 객체를 구한다.
2. 세션 데이터 읽어오기
형식) session객체.getAttribute("key값");
==> 이 메서드의 반환값은 Object 형이라 형변환을 해서 사용해야 한다.
String sessionValue = (String)session.getAttribute("testSession");
package kr.or.ddit.session;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
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("/sessionReadServlet.do")
public class SessionReadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//세션 객체를 구한다
HttpSession session = request.getSession();
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html><head><meta charset='utf-8'>");
out.println("<title>Session 연습 </title></head>");
out.println("<body>");
out.println("<h2>저장된 Session 데이터 확인하기 </h2><br><br>");
out.print("<br>");
out.println("<h3> 세션 데이터 1개 확인하기 </h3>");
//1개의 세션 데이터 가져오기
String sessionValue = (String) session.getAttribute("testSession");
if(sessionValue == null) {
out.println("<h3>키값이 'testSession' 인 세션값이 없습니다. </h3> ");
}else {
out.println("<h3>testSession의 세션값 : " + sessionValue + "</h3>");
}
out.println("<hr>");
out.println("<h3>전체 세션 데이터 확인하기 </h3>");
//여러개의 세션 데이터 가져오기
int cnt = 0;
Enumeration<String> sessionNames = session.getAttributeNames();
out.println("<ul>");
//다음 데이터가 있는지 검사
while(sessionNames.hasMoreElements()) {
cnt++;
//데이터값 가져오기
String sessionKey = sessionNames.nextElement();
out.println("<li>" + sessionKey + ":" + sesssion.getAttribute(sessionKey)
+ "</li>");
}
if(cnt == 0 ) out.println("<li>세션 데이터가 하나도 없습니다. </li>");
out.println("</ul>");
out.println("<hr>");
out.println("<h3>기타 세션관련 정보들 확인하기</h3>");
//세션ID => 세션을 구분하기 위한 고유한 값 ( 서버에 의해 자동 생성된다. )
//세션을 저장할 때 새션ID를 만들어서 수많은 사람들의 접속을 하더라도 구분
//세션 생성기간 => 1970년부터 1월 1일부터 세션이 만들어진 날짜 및 시간까지의
// 경과시간(단위 : 밀리세컨드)
out.println("세션 생성시간 : " + session.getCreationTime() + "<br>" ) ;
//최근 세션 접근 시간 ==> 1970년 1월 1일부터 경과시간(밀리세컨드단위)
out.println("최근 세션 접근 시간 : " + session.getLastAccessedTime() + "<br>");
//세션 유효시간 ==> (초 단위) '최근 세션 접근 시간' 이후로 '세션 유효시간' 안에 // 다시 저븐을 하징 ㅏㄶ고 유효시간이 경과되면 세션이 자동 삭제 ( 기본값 : 30분)
//세션 유효시간 설정하기 => session객체.setMaxInactiveInterval(초단위 시간);
out.println("세션 유효 시간 : " + session.getMaxInactiveInterval() + "<br>");
/*
명령어로 주는 방법이 있고 세션 유효시간을 web.xml 에 설정하는 방법도있다.
<session-config>
<session-timeout>분단위 시간 </session-timeout>
</session-config>
*/
out.println("세션 유효시간 : " + session.getMaxInactiveInterval() + "<br>");
out.println("<a href='" + request.getContextPath() + "/03/sessionTest.jsp'> 시작 문서로 이동 </a>");
out.println("</body>");
out.println("</html>");
//2.
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
댓글
댓글 쓰기