본문 바로가기

네트워크보안/asp

세션(Session) 값 얻기

클라이언트는 서버에 요청을 할 때마다 자신에게 주어진 세션 ID를 쿠키나 URL을 통해서 제공합니다. 서버에서는 그 세션 ID에 해당하는 세션 객체를 찾아서 거기에 담긴 정보를 가져옵니다. 정보를 저장할 때 사용하는 것이 setAttribute 메서드입니다. setAttribute 메서드는 이름과 값을 쌍으로 받아서 세션 객체에 저장을 하는 역할을 수행합니다. 세션 객체에 저장된 정보를 가져올 때에는 getAttribute 메서드를 사용하면 됩니다.

이번 절에서는 getAttribute 메서드와 그외의 객체의 정보를 가져오는 방법을 예제를 통하여 확인해보도록 하겠습니다.

sessionRead.jsp

세션에 저장한 정보를 불러오는 예제

<%@page contentType="text/html;charset=euc-kr" session="false"%>
<html><body>
<%
HttpSession session = request.getSession(
false);
String s = (String)session.getAttribute(
"id");
if(s==null){
out.print(
"설정된 세션이 없습니다.<br>");
}
else{
out.print(
"Attribute id 값 : "+s+"<br>");
}
%>
isNew():<%=session.isNew()%><br>
세션ID:<%=session.getId() %><br>
세션생성시간:<%=
new java.util.Date(session.getCreationTime()).toString() %><br>
세션마지막접속시간:<%=
new java.util.Date(session.getLastAccessedTime()).toString() %>
세션Active시간:<%=session.getMaxInactiveInterval() %>sec<br>
<a href=
"SessionDelete.jsp">session 삭제하기</a>
</body></html>

결과를 보시면 세션에 대한 여러 정보가 출력되었음을 알 수 있을 것입니다. 소스를 보시면, 먼저 서버로부터 세션객체를 얻어오고 있습니다. getSession 메서드를 호출하면 서버에서는 쿠키나 URL로부터 세션 ID를 뽑아내어서 서버에 저장되어 있는 세션 ID 목록과 비교를 하게되는데 그 결과 일치하는 세션 ID가 있다면 그 세션 ID의 세션 객체를 전달하고 없다면 null 값을 전달해줍니다.

n HttpSession session=request.getSession(false);

세션 객체로부터 정보를 가져오고 있습니다. getAttribute 메서드는 객체에 저장하였던 정보를 가져올 때 사용하는 메서드로서 매개변수로 가져오고자하는 속성의 이름을 대입하면 그 속성에 해당하는 값을 반환해줍니다. 저장할 때 Object형으로 업캐스팅을 하였으므로 가져올 때에는 원래의 형으로 다운캐스팅을 해주어야만 한다는 점을 잊으시면 안됩니다.

n String s=(String)session.getAttribute("id");

if문을 사용하여 세션 객체로부터 불러온 값이 null이 아니라면 웹 브라우져에 출력해주고 있습니다.

n if(s==null){

n out.print("설정된 세션이 없습니다.<br>");

n }else{

n out.print("Attribute id 값 : "+s+"<br>");

n }

세션 객체로부터 세션에 관한 다양한 정보를 얻어내고 있습니다. 각각에 대해 살펴보겠습니다. setMaxInactiveInterval 메서드는 세션을 유지할 시간을 설정하는 메서드입니다. 이 시간이 지나면 세션은 자동으로 종료됩니다. 단위는 second입니다.

n <% session.setMaxInactiveInterval(1*60); %>

isNew 메서드는 세션이 처음 생성되었을 경우엔 true를, 이미 생성되어 있었을 경우엔 false를 반환합니다. 최초의 요청시에는 true를 반환하지만 세션 유지 시간 내에 재요청시 false를 반환합니다. 세션 유지 시간이 지난 후 요청을 한다면 다시 true를 반환하겠죠.

n <%=session.isNew()%>

getId 메서드는 이 세션에 할당된 유일한 이름(일종의 id)을 반환해주는 메서드입니다.

n <%=session.getId() %>

getCreationTime 메서드는 세션이 처음 생성된 시간을 second로 반환해주는 메서드입니다. Date 객체를 사용하여 표준시로 변환하였습니다.

n <%=new java.util.Date(session.getCreationTime()).toString() %>

getLastAccessedTime 메서드는 세션이 유지되는 동안 마지막에 접속한 시간을 second로 반환해주고 있습니다.

n <%=new java.util.Date(session.getLastAccessedTime()).toString() %>

getMaxInactiveInterval 메서드는 설정된 세션 유지 시간 값을 불러오는 메서드입니다. 즉 setMaxInactiveInterval 메서드의 값을 불러오는 것이겠지요. 단위는 second입니다.

n <%=session.getMaxInactiveInterval() %>

세션 객체에 저장한 값을 불러올 때에는 getAttribute 메서드를 사용하는데 반환되는 형이 Object 형이므로 원래의 형을 찾기 위해서는 다운 캐스팅을 해 주어야 한다는 것을 이번 절을 통해 알아 보았습니다. 다음에는 결과에서 세션 삭제하기 링크를 누르면 발생하는 세션 종료의 방법에 대해 알아보겠습니다.

'네트워크보안 > asp' 카테고리의 다른 글

URL에 자동으로 세션(Session) ID 달고 다니기  (0) 2012.02.15
세션(session) 종료하기  (0) 2012.02.15
세션(Session) 값 설정  (0) 2012.02.15
세션(Session)이란?  (0) 2012.02.15
쿠키 읽어오기  (0) 2012.02.15