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四大作用域
1.page裡的變數 只要頁面跳轉了,它們就不見了。如果把變數放到pagecontext裡,就說明它的作用域是page,它的有效範圍只在當前jsp頁面裡。從把變數放到pagecontext開始,到jsp頁面結束,你都可以使用這個變數。2 request裡的變數可以跨越forward前後的兩頁。但是只...
JSP四大作用域
1 servletcontext域物件 代表整個web應用的物件 生命週期 在web應用被載入之後立即建立servletcontext物件,伺服器關閉或者web應用被移出容器時將會銷毀servletcontext物件。作用範圍 整個web應用。主要功能 在整個web應用範圍內實現資源的共享。2 se...
Jsp 四大作用域
jsp中的四大作用域,主要是指以下四個 page作用域 request作用域 session作用域這四個作用域的作用範圍,由上到下是乙個比乙個大。page直譯就是頁面的意思,所以page作用域就比較好理解了 page作用域表示只在當前頁面有效。當程式執行跑出了當前的頁面,你就無法在其它的頁面訪問當前...