본문 바로가기

네트워크보안/asp

세션(Session) 값 설정

앞에서 세션의 의미를 살펴본 것을 바탕으로 여기서는 JSP API를 이용해서 세션을 실제로 다루어 보겠습니다. 예제를 통하여 세션을 생성하는 방법, 세션 객체에 값을 저장하고 불러오는 방법, 세션을 종료하는 방법에 대해 알아볼 것입니다.

다음은 텍스트필드를 통하여 사용자로부터 정보를 입력받아서, 세션을 생성한 후 그 정보를 “id”값으로 하여 세션에 저장하는 예제입니다.

SessionLogin.html

세션 객체에 저장될 데이터를 전송하는 예제

<html>

<body>

<h2>Session생성 Test</h2>

<form action="sessionCreate.jsp" method="post">

id : <input type="textField" name="id">

<input type="submit"value="확인">

</form>

</body>

</html>

sessionCreate.jsp

세션을 생성하고 정보를 저장하는 예제

<%@page contentType="text/html;charset=euc-kr" session="false" %>
<html>
<body>
<h2>Session생성 Test</h2>
<%
String id=request.getParameter(
"id");
if(id.equals("")){
response.sendRedirect(
"sessionLogin.html");
return;
}
HttpSession session=request.getSession(
true);
if(session.isNew()){
session.setAttribute(
"id",id);
out.print(
"새로운 세션이 생성되었습니다. <br>");
out.print(
"세션 ID: " + session.getId());
}
else{
%>
이미 세션이 존재합니다.<br>
세션ID :<%=session.getId() %>
<%}%>
</body>
</html>


결과를 보면, 세션이 처음 생성되고 그 페이지를 다시 로딩하면 이미 세션이 존재한다는 메시지가 출력됨을 알 수 있습니다. 그럼 예제를 분석해 보겠습니다.

먼저 선언문에서는 이 페이지에서 세션이 생성되는것을 직접 보여주기 위해서 이미 만들어진 내장객체 session을 쓰지 않겠다고 false로 지정해 줍니다.

n <%@page contentType="text/html;charset=euc-kr" session="false" %>

SessionLogin.html을 통해 전송된 id를 getParameter 메서드로 받아 스트링 타입의 변수 id에 저장하였습니다.

n String id=request.getParameter("id");

만일 변수 id에 아무것도 입력하지 않은 비어있는 값이 전송되어 왔다면 sendRedirect 메서드를 사용하여 다시 SessionLogin.html로 되돌려 보내고 있습니다.

n if(id.equals("")) {

n if(id.equals(“”){

n response.sendRedirect("SessionLogin.html");

n return;

n }

세션 객체를 생성하려면 HttpServletRequest의 getSession 메서드를 호출하면 됩니다. getSession 메서드를 호출하면 서버에서는 쿠키나 URL로부터 세션 ID를 뽑아내어서 서버에 저장되어있는 세션 ID 목록과 비교를 하게되는데 그 결과 일치하는 세션 ID가 있다면 그 세션 ID의 세션 객체를 전달하고, 없다면 새로 세션 객체를 생성하여 전달해줍니다.

n HttpSession session=request.getSession(true);

새로 생성된 세션이 새로 생성된 것이라면 세션 객체에 입력받은 id 값을 저장하고 있습니다. 세션 객체는 이름과 값을 쌍으로 입력받는 자료구조의 형태를 가지고 있는데, 이 때 객체에 입력할 때 사용하는 메서드가 setAttribute 메서드입니다. setAttribute 메서드의 첫번째 매개변수는 String형으로서 속성의 이름으로 사용되고 두번째 매개변수는 Object 형으로서 속성의 값으로 사용됩니다. 값으로 들어올 자료형을 예측할 수 없기 때문에 최상위의 Object 형으로 업캐스팅하여 모두 받아내겠다는 의미입니다.

n if(session.isNew()){

n session.setAttribute("id",id);

n }

getId 메서드를 사용하여 생성된 세션 ID를 확인하고 있습니다.

n out.print(세션 ID : + session.getId());

링크로 표시된 세션내용보기는 바로 이어서 나오는 세션 정보를 가져오는 페이지로 연결된 것입니다.

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

세션(session) 종료하기  (0) 2012.02.15
세션(Session) 값 얻기  (0) 2012.02.15
세션(Session)이란?  (0) 2012.02.15
쿠키 읽어오기  (0) 2012.02.15
쿠키 설정하기  (0) 2012.02.15