筆記——會話、cookie、url重寫

會話

容器幾乎會做cookie的所有工作,如

在響應中發送一個會話cookie(從請求中得到會話ID)

HttpSession session = request.getSession();

在服務器中請求一個會話,餘下的事情會自動完成

  • 建立新的HttpSession對象
  • 生成唯一的會話ID
  • 建立新的Cookie對象
  • 把會話ID與cookie關聯
  • 在響應中設置Cookie(在Set-Cookie首部下)

Session.isNew()

用戶還沒用這個會話ID做過響應isNew就返回true

如果沒有啓用cookie,客戶不會加入會話,isNew()方法總是會返回true

response.sendRedirect(response.encodeURL(url));

如果只想要一個已經有的會話

HttpSession session =request.getSession(false);  //如果沒有與此客戶關聯的會話,返回null
If(session == null){
    // do something
}

 

關鍵的HttpSession方法

  • getCreationTime():返回第一次創建會話的時間
  • getLastAccessedTime():返回容器最後一次得到包含這個會話ID的請求後過了多長時間(毫秒)
  • setMaxInactiveInterval():指定對於這個會話客戶請求的最大間隔時間(秒)
  • getMaxInactiveInterval():返回對於這個會話客戶請求的最大間隔時間(秒)
  • invalidate():結束會話。當前存儲在這個會話中的所有屬性也會接觸綁定

 

會話的三種死法

  • 超時
  • 在會話對象上調用invalidate()
  • 在部署描述文件中配置會話超時
<session-config>
    <session-timeout>15</session-timeout>  <!-- 15分鐘 -->
</session-config>

設置特定會話的會話超時

Session.setMaxInactiveInterval(15*60);    //15分鐘

 

Cookie在瀏覽器關閉後仍能存活

Cookie cookie = new Cookie(“username”,name);

Cookie.setMaxAge(30*60);  //單位秒,設置在客戶端存活多久

Response.addCookie(cookie)         //將cookie發送到客戶

 

URL重寫

jsp中

Cookie cookie = new Cookie(“username”,name);
Cookie.setMaxAge(30*60);  //單位秒,設置在客戶端存活多久
Response.addCookie(cookie)         //將cookie發送到客戶

servlet中

Stringpath = request.getContextPath();
response.sendRedirect(response.encodeURL(path+"/MyJsp.jsp"));

 

發佈了33 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章