生活随笔
收集整理的這篇文章主要介紹了
URL重写实现会话跟踪
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
IT程序員開發(fā)必備-各類資源下載清單,史上最全I(xiàn)T資源,個(gè)人收藏總結(jié)!
為了防止用戶禁用cookie,可以使用URL重寫技術(shù)來實(shí)現(xiàn)會(huì)話跟蹤!
url重寫原理:當(dāng)服務(wù)器程序調(diào)用request.getSession();代碼時(shí),其會(huì)先看request.getCookies()方法中有沒有名為JSESSIONID的cookie帶過來,如果沒有,就看URL有沒有被重寫(即附帶JSESSIONID),如果有,則從服務(wù)器中找key為JSESSIONID的session對象,如果都沒有,則創(chuàng)建一個(gè)新的session。如果用戶禁用了cookie,則只能通過URL重寫方式實(shí)現(xiàn)會(huì)話跟蹤!
一、在Servlet中實(shí)現(xiàn)URL重寫:
?? 客戶端在訪問本Servlet后,會(huì)返回主頁面:
package edu.session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class EncodeURL extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();request.getSession(); //創(chuàng)建session//調(diào)用response的encodeURL方法,將自動(dòng)將JSESSION追加到url后面,如:url;jsessionid=BD111FFC653497E81B702A29B3AC6FE4String buyurl = response.encodeURL("/CookieAndSession/servlet/buy");String payurl = response.encodeURL("/CookieAndSession/servlet/pay");out.print("<a href='"+buyurl+"'>購買</a><br/>");out.print("<a href='"+payurl+"'>結(jié)賬</a><br/>");}}
http://localhost:8080/CookieAndSession/servlet/encodeurl(此事后cookie被禁用了)
源代碼:
這樣即可實(shí)現(xiàn)回跟蹤。
? 注意:
? 1. 但是如果用戶禁用cookie,則關(guān)閉了瀏覽器后,重新開啟瀏覽器,則回話失效,無法實(shí)現(xiàn)回話跟蹤;如果是用戶沒有禁用cookie,則可以通過設(shè)置裝載JSESSIONID的cookie的失效時(shí)間來控制瀏覽器關(guān)閉后session仍未失效。
?? 2.如果用戶沒有禁用cookie,而且又使用URL重寫,則:用戶在第一次訪問EncodeURLServlet時(shí),由于不知道用戶是否禁用了cookie,所以response.encodeURL()方法內(nèi)部會(huì)將JSESSIONID重寫在url上,但是一旦第二次訪問時(shí),由于用戶是帶著cookie來的,所以response.encodeURL()不會(huì)將JSESSIONID重寫在url上。
總結(jié)
以上是生活随笔為你收集整理的URL重写实现会话跟踪的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。