jsp的四個做用域

做用域:page<request<session<applicationweb

做用域是當前信息共享的範圍,也就是信息可以在多大範圍內有效,Web交互的最基本單位爲HTTP請求。每一個用戶從進入網站到離開網站這段過程稱爲一個HTTP會話,一個服務器的運行過程當中會有多個用戶訪問,就是多個HTTP會話。做用域解釋以下。瀏覽器

    1:page 當前頁面打開到關閉時間
tomcat

        page對象的做用域僅限於當前用戶請求的頁面,對於page對象的引用將在相應返回客戶端後釋放,或者是轉發到其餘地方後釋放,對於page對象的引用常常存在pageContext對象中。
服務器

    2:request http請求開始到結束的時間
session

        一個http請求的處理可能須要多個servlet的配合,多個servlet能夠經過某種方式進行共享信息,但這個信息在請求結束後消失。
app

        servlet之間的信息共享經過HttpServletReqeust這個接口實現。jsp

     void setAttribute(String name, Object value):將對象value以name爲名稱保存到request做用域中。網站

  Object getAttribute(String name):從request做用域中取得指定名字的信息。url

        jsp中的doGet()和doPost()方法第一個傳遞的參數就是HttpServletRequest對象,使用這個對象的setAttribute()方法就能傳遞參數。
spa

        設置好信息後,如何在servlet之間傳輸,這就要用到RequestDispatcher的forward方法,經過他將請求轉發給其餘servlet。

        RequestDispatcher ServletContext.getRequestDispatcher(String path):取得Dispatcher對象用於轉發,path的目的地是其餘servlet,

  void RequestDispatcher.forward(ServletRequest request, ServletResponse response):將request對象和response對象進行轉發,

        所以只須要在當前Servlet之中利用setAttribute()設置參數,而後利用forwar()方法進行轉發,在其餘servlet中利用getAttribute()方法獲取參數。

        須要注意兩點:

        轉發不是重定向,轉發在web應用內部進行的,相對於web容器是透明的,因此說瀏覽器現實的地址仍是最初的servlet的地址。

        注:轉發和重定向

            轉發:jsp容器將使用一個內部方法調用目標頁面,目標頁面會繼續處理請求,可是對瀏覽器來講頁面url地址仍是最初的那個servlet地址,該request對象中的變量不會失效,就像把兩個頁面合在一塊兒同樣;

            重定向:頁面經過瀏覽器發送一個新的請求,request對象是失效,瀏覽器的地址也會變成新的url地址。

            一般轉發更快,並且request對象也不會失效。

    3:session http回話開始到結束時間

        session做用域比較好理解,同一個瀏覽器對服務器屢次訪問,在屢次訪問之間共享信息,就是session做用域的體現。session是經過實現HttpSession接口,他提供了一下方法:

    Object HttpSesseion.getAttribute(String name) 從session中獲取信息

    void HttpSession.setAttribute(String name, Object value)往session中設置信息

    HttpSession HttpServletRequest.getSession();獲取當前請求的session信息,

    session的開始時刻比較好判斷,他從瀏覽器發起第一個http請求就認爲回話開始,可是他的結束時間比較很差判斷,由於瀏覽器關閉並不會通知服務器,因此只能經過如下方法,第一個是等到回話結束,就認識session失效,tomcat默認的失效時間是120分鐘,但這個值也能夠經過HttpSession.setMaxInterval(int interval)來手動設置,第二個就是用戶在退出之間手動調用HttpSession的invalidate()方法,手動讓session失效。強制讓session失效。

    4:application 服務器從開始到結束的時間

     applicaton是從服務器開啓到關閉的時間,期間進行信息共享,application之間的信息共享經過servletContext進行實現,他主要提供一下接口

    void setAttribute(String name, Object value);設置內容

    Object getAttribute(String name);獲取對象內容   

相關文章
相關標籤/搜索