91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jsp四大作用域是哪幾個?

發布時間:2020-05-12 11:18:44 來源:億速云 閱讀:402 作者:Leah 欄目:web開發

jsp四大作用域是哪幾個?這個問題可能是我們日常工作經常見到的。通過這個問題,希望你能收獲更多。下面是解決這個問題的步驟內容

 JSP內置對象作用域

application:在所有應用程序中有效,即只要這個網站運行著,這個作用域就有效,這個指的程序的運行過程。

session:在當前會話中有效,即從瀏覽器訪問服務器開始,這個指的是用戶的一個訪問過程,即這次會話的開始到結束

request:在當前請求中有效,負責多個servlet之間的信息共享,即將信息放入到request中,在整個請求階段都是有效的,即用戶訪問的這個階段都可以獲取到這個數據

page:在當前頁面有效,即在一個jsp頁面上是有效的。

首先要聲明一點,所謂"作用域"就是"信息共享的范圍",也就是說一個信息能夠在多大的范圍內有效。

Web交互的最基本單位為HTTP請求。每個用戶從進入網站到離開網站這段過程稱為一個HTTP會話,一個服務器的運行過程中會有多個用戶訪問,就是多個HTTP會話。作用域解釋如下。

application:服務器啟動到停止這段時間。

session:HTTP會話開始到結束這段時間。

request:HTTP請求開始到結束這段時間。

page:當前頁面從打開到關閉這段時間。

1. application 作用域

application作用域就是服務器啟動到關閉的整段時間,在這個作用域內設置的信息可以被所有應用程序使用。application作用域上的信息傳遞是通過ServletContext實現的,它提供的主要方法如下所示:

Object getAttribute(String name):從application中獲取信息。

void setAttribute(String name, Object value):向application作用域中設置信息。

2. session作用域

session作用域比較容易理解,同一瀏覽器對服務器進行多次訪問,在這多次訪問之間傳遞信息,就是session作用域的體現。session是通過HttpSession接口實現的,它提供的主要方法如下所示。

Object HttpSession.getAttribute(String name):從session中獲取信息。

void HttpSession.setAttribute(String name, Object value):向session中保存信息。

HttpSession HttpServletRequest.getSession():獲取當前請求所在的session的對象。

session的開始時刻比較容易判斷,它從瀏覽器發出第一個HTTP請求即可認為會話開始。但結束時刻就不好判斷了,因為瀏覽器關閉時并不會通知服務器,所以只能通過如下這種方法判斷:如果一定的時間內客戶端沒有反應,則認為會話結束。Tomcat的默認值為120分鐘,但這個值也可以通過HttpSession的setMaxInactiveInterval(int interval)方法來設置,如果想主動讓會話結束,例如用戶單擊"注銷"按鈕的時候,可以使用 HttpSession 的 invalidate()方法,用于強制結束當前session。

3. request作用域

一個HTTP請求的處理可能需要多個Servlet合作,而這幾個Servlet之間可以通過某種方式傳遞信息,但這個信息在請求結束后就無效了。

Servlet之間的信息共享是通過HttpServletRequest接口的兩個方法來實現的。

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

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

JSP中的doGet()、doPost()方法的第一個參數就是HttpServletRequest對象,使用這個對象的 setAttribute()方法即可傳遞信息。

那么在設置好信息之后,要通過何種方式將信息傳給其他的Servlet呢?這就要用到RequestDispatcher接口的forward()方法,通過它將請求轉發給其他Servlet。

RequestDispatcher ServletContext.getRequestDispatcher(String path):取得Dispatcher以便轉發。path為轉發的目的Servlet。

void RequestDispatcher.forward(ServletRequest request, ServletResponse response):將request和response轉發。

因此,只需要在當前Servlet中先通過setAttribute()方法設置相應的屬性,然后使用forward()方法進行跳轉,最后在跳轉到的Servlet中通過使用getAttribute()方法即可實現信息傳遞。

PHP的程序員可能不太好理解這一段,因為PHP中沒有轉發的概念,一個請求只能由一個PHP文件來處理,所以PHP中根本沒有request作用域的概念。而Servlet則不同,請求可以在應用程序中任意轉發,所以用request作用域在不同Servlet之間傳遞信息。

注意兩點:

轉發不是重定向,轉發是在Web應用內部進行的。PHP支持重定向但沒有轉發。

轉發對瀏覽器是透明的,也就是說,無論在服務器上如何轉發,瀏覽器地址欄中顯示的仍然是最初那個Servlet的地址。重定向的瀏覽器地址是變化的。

4. page作用域

page對象的作用范圍僅限于用戶請求的當前頁面,對于page對象的引用將在響應返回給客戶端之后被釋放,或者在請求被轉發到其他地方后被釋放。對page對象的引用通常存儲在pageContext對象中。

以上介紹的作用范圍越來越小,request和page的生命周期都是短暫的,它們之間的區別:一個request可以包含多個page頁(include,forward及filter)。

看完上訴內容,你們對jsp四大作用域大概了解了嗎?如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临洮县| 深水埗区| 五家渠市| 陆良县| 华亭县| 东兴市| 玉田县| 彩票| 浦城县| 苍南县| 腾冲县| 鹤峰县| 太保市| 合肥市| 长沙县| 揭西县| 屏东市| 玛纳斯县| 磴口县| 宁德市| 平果县| 若尔盖县| 平阳县| 辽源市| 彭泽县| 泰州市| 吉林市| 房产| 武清区| 祁连县| 新竹县| 珠海市| 呼玛县| 横山县| 象州县| 阿拉善左旗| 星座| 郸城县| 华蓥市| 和林格尔县| 和田市|