Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


URL Rewriting을 이용한 session tracking
 
cookie나 session 이 지원되지않을 경우 server와 client사이에서 일정한 session 을 유지하기 위한 URL Rewriting방법 ( 2003/03/31 ) 612
Written by ienvyou - 최지웅
1 of 2
 

JSP나 혹은 Servlet을 이용하여 싸이트를 구축 할시에 Http Server와 Client Browser사이에 Session을 유지하기위해 Cookie나 Session을 이용할수 없는 경우에 URL Rewriting을 이용하는 방법.

1. Session Tracking

<html>
<head>
<title>Session Tracking Test</title>
</head>
<body>
<%
session = request.getSession (true);
%>
<h1>Session Tracking Test</h1>
<%
Integer ival = (Integer)session.getValue("counter");
if (ival == null) ival = new Integer (1);
else ival = new Integer (ival.intValue () +  1);
session.putValue ("counter", ival);
%>
This page accessed
<p>counter: <%= ival %>
<p>Session ID: <%=session.getId() %>
<p>Is New..? <%=session.isNew() %> 
</body></html>

위의 예제를 Browser에서 실행 했을 경우 계속 접속을 하게 되면 Counter가 증가 하게 됩니다즉 Client와의 Session이 계속 유지 되면서 Server와 동작 하게 됩니다. 하지만 Browser에서 Cookie를 disable시키면(client에서 Session의 정보를 유지하지 않으면) 제접속시 Server쪽에서는 계속 새로운 사용자가 접속하는 것으로 인식을 하게 됩니다.

이런 경우 Client Browser에서 Cookie를 사용하면 별 문제가 생기지 않지만 만약 Cookie를 disable해놓고 사용한다면 Server와의 Session이 끊기게 됩니다.

가장 치명적인 부분은 사용자 Browser에서 Cookie를 disable해놓은 경우 전자 상거래가 이루어 지지 않는 다는 겁니다.

우리는 이러한 상황에서 URL Rewriting을 사용하게 됩니다.


2.Session 객체를 이용한 Session Traking

source: booklist.jsp

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<p>Book List </p>
<table border="1" width="183">
<tr>
<td height="50" width="48">
<img src="book1.jpg" width="45" height="60"></td>
<td height="50" width="119">
<a href=<%=response.encodeURL("Cart.jsp?content=book1")%>>구매</a></td>
</tr>
<tr>
<td height="48" width="48">
<img src="book2.jpg" width="48" height="60"></td>
<td height="48" width="119">
<a href=<%=response.encodeURL("Cart.jsp?content=book2")%>>구매</a></td>
</tr>
</table>
<p>  </p>
</body>
</html>

		   

source:Cart.jsp

<%@ page  language="java" import = "java.lang.*"  %>
  <% 
       session = request.getSession (true);
  %>
<% if (request.getParameter("content") == null) { %>
	

주문 하신 물건이 없습니다. <%} else if (request.getParameter("content").equals("")) { %>

주문 하신 물건이 없습니다. <%}else { String content = request.getParameter("content"); System.out.println(content); if(content.equals("book1")){ Integer ii=(Integer)session.getAttribute(content); if(ii==null){ session.setAttribute(content,new Integer(1)); }else{ Integer i =(Integer)session.getAttribute(content); int count = (i.intValue()); count++; session.setAttribute(content,new Integer(count)); } }else if(content.equals("book2")){ Integer ii=(Integer)session.getAttribute(content); if(ii==null){ session.setAttribute(content,new Integer(1)); }else{ Integer i =(Integer)session.getAttribute(content); int count = (i.intValue()); count++; session.setAttribute(content,new Integer(count)); } } }%> <% String all[]=session.getValueNames(); System.out.println("Size "+all.length); for(int i=0;i<all.length;i++){ out.println("< p>"+all[i]+":"+((Integer)session.getValue(all[i])).intValue()); } %>

< a href="/url/booklist.jsp">목록보기< /a>

위의 두가지 jsp문서에서 각각의 책을 구입하게 되었을경우 이내용을 Cart.jsp가 받아서 session에 추가 하게 됩니다. 간단한 예제를 위해 servlet이나 bean같은것은 생략 하도록 하겠습니다.

이경우 browser에서 Cookie를 disable해 놓으면 server쪽에서는 매 request마다 새로운 session으로 처리 하게 됩니다.

 

 
1 2
References
 
Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD