Session, Cookie, Url重寫與Wap

  本文的目的是搞清楚Session, Cookie, Url重寫這些概念, 然後在這個基礎上闡述如何利用

Url重寫在Wap門戶的開發中維護Session.<o:p></o:p>

<o:p> </o:p>

什麼是Session, 什麼是Cookie?<o:p></o:p>

<o:p>Session是由應用服務器維持的一個服務器端的存儲空間,用戶在連接服務器時,會由服務器生成一個唯一的SessionID,用該SessionID爲標識符來存取服務器端的Session存儲空間。而SessionID這一數據則是保存到客戶端,用Cookie保存的,用戶提交頁面時,會將這一SessionID提交到服務器端,來存取Session數據。這一過程,是不用開發人員干預的。所以一旦客戶端禁用Cookie,那麼Session也會失效。</o:p>

<o:p>Cookie是客戶端的存儲空間,由瀏覽器來維持。<o:p></o:p><o:p></o:p></o:p>

<o:p> </o:p>

什麼是Url重寫?<o:p></o:p>

服務器也可以通過URL重寫的方式來傳遞SessionID的值,因此不是完全依賴Cookie如果客戶端Cookie禁用,則服務器可以自動通過重寫URL的方式來保存Session的值,並且這個過程對程序員透明。<o:p></o:p>

可以試一下,即使不寫Cookie,在使用request.getCookies();取出的Cookie數組的長度也是1,而這個Cookie的名字就是JSESSIONID,還有一個很長的二進制的字符串,是SessionID的值。

    實質上 URL 重寫是通過向 URL 連接添加參數,並把 session ID 作爲值包含在連接中。然而,爲使這生效,你需要爲你的 servlet 響應部分的每個連接添加 session ID. <o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

知道了Session, Cookie, Url的概念,那麼下面的這個問題就不難回答了:<o:p></o:p>

 

Wap中如何進行Session管理?<o:p></o:p>

WapPC不同之處在與Wap1.x不支持SessionCookie,Wap2.0雖然支持但是隻有協議支持還是不行,還要看手機終端支不支持?所以我們的解決方法就是完全不依賴Wap協議,完全不依賴手機終端,使用Url重寫進行Session的維護,這個方法只與服務器端有關.<o:p></o:p>

<o:p> </o:p>

利用Url進行Session重寫如何實現?

JSP實現
把 session ID 加到一個連接可以使用一對方法來簡化:response.encodeURL() 使 URL
包含 session ID,如果你需要使用重定向,可以使用 response.encodeRedirectURL ()
來對 URL 進行編碼。
 encodeURL () 及 encodeRedirectedURL () 方法首先判斷 cookies 是否被瀏覽器支持;
如果支持,則參數 URL 被原樣返回,session ID 將通過 cookies 來維持。

代碼示例:
不使用Url重寫:
<a href=http://wwww.myserver.com/servelet/user;userName=awaysrain>Link</a>

使用Url重寫:
通過HttpServletResponse接口中的encodeURL()方法編碼.
String myURL = response.encodeURL(http://wwww.myserver.com/servelet/user);
<a href= <%=myURL%> _fcksavedurl=" <%=myURL%>" _fcksavedurl=" <%=myURL%>" _fcksavedurl=" <%=myURL%>" >

JSTL實現
<c:url>可以爲會話管理重寫 URL
<a href="<c:url value='/content/sitemap.jsp'/>">View sitemap</a>

 

Struts實現:
struts配置文件中:
設置屬性redirect, contextRelative

<forward name="listArticlesForBlog"
   path="/template/listArticlesForBlog.jsp"
   redirect="true" 
   contextRelative="true"/>

最後一個比較搞的問題:
那麼在瀏覽器允許cookie的情況下,不要求瀏覽器關閉cookie的情況下使用
url重寫如何實現?

http://tomcat.apache.org/tomcat-5.5-doc/config/context.html
Context支持cookies參數。  設置cookies="false",強制只從url解析sessionid。

cookies 
Set to true if you want cookies to be used for session identifierContext
communication if supported by the client (this is the default). Set to
false if you want to disable the use of cookies for session identifier
communication, and rely only on URL rewriting by the application.
<o:p></o:p>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章