본문 바로가기

JSP/JSP Programming

[JSP] 세션(Session) 정보 얻어오기

반응형

■ 세션(Session) 정보 얻어오기

 ◎ getId 메소드

  ① 세션 객체의 getId 메소드는 세션 ID를 되돌리는 메소드로서 해당 세션을 가리키는 고유 ID 값을 String 형으로 변환한다.

  ② 세션 ID란 웹 브라우저에서 서버(JSP 페이지)에 접근(요청)하게 되면 서버가 웹 브라우저 단위당 세션이 설정되면서

      하나씩 부여하는 것으로서 웹 브라우저마다 유일한(중복되지 않는) 세션 ID를 부병하게 된다.

  ③ 이후에 서버에 접속해 오는 요청에 대해서 세션 ID를 비교해서 동일한 세션인지 아닌지를 구별하게된다.




# 세션 객체의 메소드를 사용하기

 infoSession.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>세션 객체의 메소드를 사용하기</title>
</head>
<body>
<center>
    <h3>[  세션 정보를 얻어오는 메소드를 사용하는 예제  ]</h3>
</center>
<hr/>
<%
    // 고유한 세션 객체의 ID를 되돌려준다.
    String id_str = session.getId();

    // 세션에 마지막으로 엑세스한 시간을 되돌려 준다.
    long lasttime = session.getLastAccessedTime();
   
    // 세션이 생성된 시간을 되돌려 준다.
    long createdtime = session.getCreationTime();
   
    // 세션에 마지막으로 액세스한 시간에서 세션이 생성된 시간을 빼면 웹 사이트에 머문 시간이 계산된다.
    long time_used = (lasttime - createdtime) / 60000;
   
    // 세션의 유효 시간 얻어오기
    int inactive = session.getMaxInactiveInterval() / 60;
   
    // 세션이 새로 만들어졌는지를 알려준다.
    boolean b_new = session.isNew();
%>
[1] 세션 ID는 [ <%= session.getId() %> ] 입니다.<br/><hr/>
[2] 당시이 웹 사이트에 머문 시간은 <%= time_used %> 분입니다.<br/><hr/>
[3] 세션의 유효 시간은 <%= inactive %> 분입니다.<br/><hr/>
[4] 세션이 새로 만드어 졌나요???<br/>
<%
    if (b_new) {
       
        out.print("예!! 새로운 세션을 만들었습니다.");
    }

    else {
       
        out.println("아니오!! 새로운 세션을 만들지 않았습니다");
    }
%>
<hr/>
</body>
</html>

 출력화면1 : 첫번째 실행 화면

 풀이

 -. 웹 브라우저 단위당 세션 ID가 부여 되는데 getId 메소드로 세션 ID 값을 얻어올 수 있다.

 -. 새로운 세션이 생성되었으므로 머문 시간은 0분이라고 출력된다.

 -. 세션이 새로 만들어 졌기 때문에 isNew 메소드는 true를 리턴한다.

 출력화면2 : 일정 시간이 지나고 웹 브라우저를 새로고침(F5)한다.

 풀이

 어느 정도의 시간이 흐른 후 웹 브라우저를 다시 띄우지 않고 새로고침(F5)을 하게 되면 다음과 같이 세션 ID는 동일하고 웹 사이트에 머문 시간은 3분이라고 출력된다. 당연히 세션이 새로 만들어지지 않게 되므로 isNew 메소드가 false를 리턴하게 된다.

 출력화면3 : 톰캣 재 시동한 후 재 실행

출력화면3의 경우 톰캣을 재시동하고 되지 않았다. 컴퓨터를 리붓하고나서야 다른 세션ID를 출력하였다.

반응형