JavaWeb(HttpSession與Cookie)學習筆記一

cookie的做用域

cookie只可以傳到當前目錄以及如下的目錄,不能夠傳到上一目錄。web

HttpSession的建立

  1. HttpSession的生命週期:

1).何時建立HttpSession對象
①.對於JSP:是否瀏覽器訪問服務端的任何一個JSP,服務器都會當即建立一個HttpSession對象呢?不必定。瀏覽器

若當前的JSP是客戶端訪問的當前WEB應用的第一個資源,且JSP的page指定的session屬性值爲false,
則服務器就不會爲JSP建立一個HttpSession對象;

若當前JSP不是客戶端訪問的當前WEB應用的第一個資源,且其餘頁面已經建立一個HttpSession對象,
則服務器也不會爲當前JSP頁面建立一個HttpSession對象,而回會把和當前會話關聯的那個HttpSession對象返回給當前的JSP頁面.服務器

②.對於Serlvet:若Serlvet是客戶端訪問的第一個WEB應用的資源,cookie

則只有調用了request.getSession()或request.getSession(true)纔會建立HttpSession對象
當request.getSession(false)的時候若是沒有與當前頁面關聯的HttpSession對象的時候就會返回null,
當request.getSession(true)(request.getSession(boolean create))的時候就會直接返回一個HttpSession對象 同request.getSession()。

總結:當客戶端訪問web第一個資源而且當前JSP或者Servlet沒有禁用當前頁面的默認建立的Session對象或者沒有調用request.getSession(false)方法的時候就會返回一個HttpSession對象。session

2). session="false" 到底表示什麼意思?當前JSP頁面禁用session隱含變量!但可使用其餘的顯式的HttpSession對象函數

HttpSession的銷燬

  1. 調用session對象的invalidate()方法會使session立刻失效。
  2. 當過了session的有效時間。
    能夠經過設置其有效時間來加速失效:調用session.setMaxInactiveInterval(int
    seconds),
    或者配置web.xml文件的配置:
    <session-config><session-timeout>minutes</session-timeout> </session-config>

URL重寫

瀏覽器把cookie被禁用的時候通常用URL重寫的方法進行sessionID的跟蹤,以便後續的上下文(即統一web中)可使用同一sessionID訪問同一session對象,其中進行URL重寫的方法有兩個:url

  • encodeURL(String url)resonpse.encodeURL(String url)
  • encodeRedirectURL(String url)response.sendRedirect(response.encodeRedirect(String url))code

    相同點:兩個會在cookie禁用的狀況下對URL進行加上JsessionId的重寫,固然,若是沒有禁用,兩者也不會對URL進行重寫。
    不通點:後者會對URL指向的資源進行判斷,若是不是本web應用裏的資源路徑也不會進行SessionID的添加,所以該函數URL參數必須是絕對路徑。
相關文章
相關標籤/搜索