2020.12.01 고급자바 SessionRead 세션 읽어오기

 // 저장된 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);
}

}





댓글