Cookie / Session / URL重寫


Cookie

//創建一個Cookie對象
Cookie cookie = new Cookie("username","JACK");
//在客戶端存儲的時間(生命周期)單位是秒 7天  7*24*60*60
//如果這里設置為0 就表示客戶端不保存該cookie  即臨時cookie
//如果設置為-1  就表示客戶端關閉之后就刪除該cookie  也可以稱之為臨時cookie
cookie.setMaxAge(-1);
//設置cookie在客戶端存放的路徑  如果不設置,默認在本項目名稱目錄下
cookie.setPath("/");  
//將創建完好的cookie存放在response相應對象中
response.addCookie(cookie);

 

如果瀏覽器端拒絕存儲cookie信息,就會導致JSESSIONID的值不能正常到達客戶端,
那么客戶端向服務器發送請求時,就無法將JSESSIONID的值帶回到服務器中,從而導致找不到自己的會話Session
怎么解決:我們可以使用URL地址重寫的辦法解決

 

因為cookie在客戶端只允許存儲4k的數據,那么實際上cookie存儲了3k數據就已經到達了一個極限了,cookie就會顯得力不從心了,
所以在B/S交互中就需要一個更大的存儲數據對象,這就是session存在的重要起因。

Session會話

當用戶通過瀏覽器訪問服務器的應用程序時,程序會為每一個用戶創建一個session對象,實際上就是在內存中分配一塊內存給該用戶使用
該對象可以存儲大量的數據;
如果瀏覽器端禁用了cookie功能,那么服務器端傳遞給瀏覽器端的jsessionid就沒有辦法保存,
這時候當用戶再一次向服務器發送請求時,服務器會因為無法找到為用戶創建好的session,
就會再次創建一個session對象,這時就需要我們考慮如何為服務器減少創建session對象的次數;
使用response對象的兩個方法,保證服務端和瀏覽器端使用的是用一個jsessionid值。

 

URL重寫
1--servlet中涉及向客戶端輸出頁面元素的時候,可以在相應的請求地址外面包上一層方法,
  也就是說使用response.encodeURL(“請求地址”);為請求地址添加一個JSESSIONID的值
2--servlet中涉及跳轉到新的頁面時,可以使用response.encodeRedirectURL(“請求地址”);為請求地址添加一個JSESSIONID的值 3--在jsp頁面中,涉及到的請求地址,可以使用jstl標簽中url的value屬性進行設置   前提是需要導入兩個jar包 jstl-1.2.jar 和 standard-1.1.2.jar   <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>   如:<a href=<c:url value="encodeURL.action"></c:url>>encodeURL</a> 4--在jsp頁面中使用:<a href="<%=response.encodeURL("encodeURL.action")%>">encodeURL</a>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM