wap怎樣做到保持session?
什麼是Session, 什麼是Cookie?
Session是由應用伺服器維持的一個伺服器端的儲存空間,使用者在連線伺服器時,會由伺服器生成一個唯一的SessionID,用該SessionID為識別符號來存取伺服器端的Session儲存空間。而SessionID這一資料則是儲存到客戶端,用Cookie儲存的,使用者提交頁面時,會將這一SessionID提交到伺服器端,來存取Session資料。這一過程,是不用開發人員干預的。所以一旦客戶端禁用Cookie,那麼Session也會失效。
Cookie是客戶端的儲存空間,由瀏覽器來維持。
什麼是Url重寫?
伺服器也可以通過URL重寫的方式來傳遞SessionID的值,因此不是完全依賴Cookie。如果客戶端Cookie禁用,則伺服器可以自動通過重寫URL的方式來儲存Session的值,並且這個過程對程式設計師透明。
可以試一下,即使不寫Cookie,在使用request.getCookies();取出的Cookie陣列的長度也是1,而這個Cookie的名字就是JSESSIONID,還有一個很長的二進位制的字串,是SessionID的值。
實質上 URL 重寫是通過向 URL 連線新增引數,並把 session ID 作為值包含在連線中。然而,為使這生效,你需要為你的 servlet 響應部分的每個連線新增 session ID.
知道了Session, Cookie, Url的概念,那麼下面的這個問題就不難回答了:
Wap中如何進行Session管理?
Wap與PC不同之處在與Wap1.x不支援Session與Cookie,Wap2.0雖然支援但是隻有協議支援還是不行,還要看手機終端支不支援?所以我們的解決方法就是完全不依賴Wap協議,完全不依賴手機終端,使用Url重寫進行Session的維護,這個方法只與伺服器端有關.
利用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。
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.
對於javaweb專案下的實現實際上是在所有的url parameter前加了';jsessionid=D7A737159B84CB52197FD77577B79DF7'(後面是實際的sessionid)。
eg:
http://domain/i908game.do;jsessionid=D7A737159B84CB52197FD77577B79DF7?p1=v1
相關文章
- HttpWebRequest 保持sessionHTTPWebSession
- httpWebRequest保持session的方法HTTPWebSession
- 怎樣在敏捷開發中做到“事半功倍”敏捷
- 軟體怎樣做到支援二次開發
- 怎樣保持Oracle資料庫SQL效能的穩定性Oracle資料庫SQL
- [例項]C#怎麼樣才能做到隨機?C#隨機
- 怎樣從伺服器取的所有session伺服器Session
- session監聽器怎樣得到request和responseSession
- 怎麼做到關閉瀏覽器時,伺服器的session也清掉了?瀏覽器伺服器Session
- RFID物品出入庫管理是怎樣做到快速的呢?
- python爬蟲如何用session保持登入?Python爬蟲Session
- 碼農如何搭建菠菜wap網站與h5網站搭建怎樣收費網站H5
- 怎樣做到無損放大照片呢?Topaz Gigapixel AI中文APIAI
- 運營商大資料精準獲客是怎樣做到的大資料
- 怎樣做到設計時滿足設計的那些基本原則
- JSON unmarshal float型別怎麼保持JSON一樣的資料JSON型別
- 用C#使用HttpWebRequest Post資料時如何保持SessionHTTPWebSession
- 如何保持一個伺服器上session不過期伺服器Session
- 虛擬化運維IT運營負責怎麼樣保持正常運轉運維
- 爬蟲如何利用session方法保持登陸狀態(selenium)爬蟲Session
- 關於requests的session方法無法保持cookie的問題。SessionCookie
- [譯] 怎樣(以及為什麼要)保持你的 Git 提交記錄的整潔Git
- python+pytest介面自動化(10)-session會話保持PythonSession會話
- PHP中如何保持SESSION以及由此引發的一些思考PHPSession
- Session跟蹤機制是怎樣的?網路安全技術學習Session
- Session的執行機制及怎樣適用於微信小程式中Session微信小程式
- C#通過webRequest保持在同一Session中Post資料C#WebSession
- 3年Java開發的中年程式設計師怎樣在公司保持核心競爭力?Java程式設計師
- 把視覺化大屏變得像PPT一樣簡單,我是怎麼做到的?視覺化
- ionic2:專案壓縮後,wap或是apk開啟沒樣式APK
- APEX關卡設計分析,它是如何做到橫空出世依舊保持熱度至今?
- php程式怎麼做到非同步執行PHP非同步
- win10怎樣讓視窗總保持前置_win10視窗設定置頂的方法Win10
- 遠端辦公的管理者怎樣做到讓員工自管理,並且提升人效
- 四個月就能學成機器學習?我們認真準備了一下該怎樣做到機器學習
- PHP與WAP網站!PHP網站
- jquery mobile 建wap站jQuery
- WAP網站開發網站