您好,登錄后才能下訂單哦!
小編給大家分享一下jsp的四大作用域有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
首先要聲明一點,所謂“作用域”就是“信息共享的范圍”,也就是說一個信息能夠在多大的范圍內有效。4個JSP內置對象的作用域分別為:application、session、request、page 。
推薦課程:Java教程。
application 作用域
如果把變量放到application里,就說明它的作用域是application,它的有效范圍是整個應用。整個應用是指從應用啟動,到應用結束。我們沒有說“從服務器啟動,到服務器關閉”,是因為一個服務器可能部署多個應用,當然你關閉了服務器,就會把上面所有的應用都關閉了。 application作用域里的變量,它們的存活時間是最長的,如果不進行手工刪除,它們就一直可以使用。
Object getAttribute(String name) //從application中獲取信息;
void setAttribute(String name,Object value) //向application作用域中設置信息。
session作用域
如果把變量放到session里,就說明它的作用域是session,它的有效范圍是當前會話。所謂當前會話,就是指從用戶打開瀏覽器開始,到用戶關閉瀏覽器這中間的過程。
Object HttpSession.getAttribute(String name) //從session中獲取信息。
void HttpSession.setAttribute(String name,Object value)//向session中保存信息。
HttpSessionHttpServletRequest.getSessio() //獲取當前請求所在的session的對象。
session從瀏覽器發出第一個HTTP請求即可認為會話開始。但結束就不好判斷了,因為瀏覽器關閉時并不會通知服務器,所以只能通過如下這種方法判斷:如果一定的時間內客戶端沒有反應,則認為會話結束。Tomcat的默認值為120分鐘,但這個值也可以通過HttpSession的setMaxInactiveInterval()方法來設置:
void setMaxInactiveInterval(int interval)
如果想主動讓會話結束,例如用戶單擊“注銷”按鈕的時候,可以使用 HttpSession 的 invalidate()方法,用于強制結束當前session:void invalidate()
Session刪除的時間是:
1) Session超時:超時指的是連續一定時間服務器沒有收到該Session所對應客戶端的請求,并且這個時間超過了服務器設置的Session超時的最大時間。
2) 程序調用HttpSession.invalidate()
3) 服務器關閉或服務停止
注意:
1) 訪問*.html的靜態資源因為不會被編譯為Servlet,也就不涉及session的問題。
2) 當JSP頁面沒有顯式禁止session的時候,在打開瀏覽器第一次請求該jsp的時候,服務器會自動為其創建一個session,并賦予其一個sessionID,發送給客戶端的瀏覽器。
3) 由于session會消耗內存資源,因此,如果不打算使用session,應該在所有的JSP中關閉它。
4) session不會應該瀏覽器的關閉而刪除,只能通過以上三種方式刪除。
session存放在哪里?-----------服務器端的內存中。
Request作用域
request里的變量可以跨越forward前后的兩頁。但是只要刷新頁面,它們就重新計算了。
請求轉發:servlet. getRequestDispatcher("new.jsp").forward(req,resp);
注意:
1、轉發是服務器行為,而重定向是客戶端行為。
2、無論在服務器上如何轉發,瀏覽器地址欄中顯示的仍然是最初那個Servlet的地址。
page作用域
page對象的作用范圍僅限于用戶請求的當前頁面
request和page的生命周期都是短暫的,它們之間的區別:一個request可以包含多個page頁(include,forward及filter)。
以上是jsp的四大作用域有哪些的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。