再解析這個四個域之前,不得不談一下伺服器的原理,我在
web伺服器那篇筆記當中沒有系統的說一下伺服器的作用:
參考j2ee書本 73頁內容
伺服器要為乙個請求單獨開啟乙個執行緒。通過io流來獲取和返回資料。還要解析使用者請求,生成響應資料。
jsp中是通過servlet _jspservice();方法完成解析引數,處理請求,生成響應資料。伺服器則完成前面和後面的多執行緒,網路通訊等功能。
所以jspservice()需要 httpservletrequest 和httpservletresponse引數
但是jsp如何和servlet進行互動呢
為了解決這個問題,所有的伺服器,都會提供乙個map結構:
就是這四大天王,四個域。我們把資料放到四個域中,就可以在伺服器後台裡交換資料了。但是範圍不同。
時間最久,範圍最大的乙個,它具體是指整個web應用範圍,
老二是session
session:http會話開始到結束這段時間。session 的作用範圍為一段使用者持續和伺服器所連線的時間,但與服務 器斷線 ,這個屬性就無效。只要將資料存入session物件,資料的範圍就為session;
session是通過httpsession介面實現的,它提供的主要方法如下所示。
object httpsession.getattribute(string name):從session中獲取資訊。
void httpsession.setattribute(string name, object value):向session中儲存資訊。
httpsession httpservletrequest.getsessio():獲取當前請求所在的session的物件。
session的開始時刻比較容易判斷,它從瀏覽器發出第乙個http請求即可認為會話開始。但結束時刻就不好判斷了,因為瀏覽器關閉時並不會通知伺服器,所以只能通過如下這種方法判斷:如果一定的時間內客戶端沒有反應,則認為會話結束。tomcat的預設值為30分鐘,配置檔案web.xml指出,但這個值也可以通過httpsession的setmaxinactiveinterval()方法來設定:
session機制通常是用來儲存客戶端的狀態資訊,狀態資訊需要儲存到伺服器的硬碟上,所以session的值必須要是可序列化的,否則將發生不可序列化的異常。
關於session 和cookie session cookie機制中詳細解釋
request
老三httprequest :作用範圍, 請求到請求結束,多用於servlet之間的通訊,傳遞訊息,請求完就結束了。常常用到requestdispatcher 的forward方法,**請求。
page:
小弟,為什麼page比request還小呢,他們有什麼區別。其實呢,page和request的生命週期都很短。但是乙個request可以包括多個page頁面。包括動態include filter forward
關於struts2
jsp中四個作用域
jsp中的四個作用域 jsp內建物件作用域表 名稱作用域 在所有應用程式中有效 session 在當前會話中有效 request 在當前請求中有效 page 在當前頁面有效 首先要宣告一點,所謂 作用域 就是 資訊共享的範圍 也就是說乙個資訊能夠在多大的範圍內有效。web互動的最基本單位為http請...
jsp中四個域物件
jsp中四大域物件 1 session session域,只能在同乙個session會話中使用 私有 2 request request域,只能在同乙個請求中使用 發 4 pagecontext page域,只能在在當前jsp頁面中使用。域物件的作用 儲存資料和獲取資料,用於資料共享 兩個web元件...
JSP中四個域物件
pagecontext page域 request request域 session session域 context域 域物件作用 儲存資料 和 獲取資料 用於資料共享。域物件方法 setattribute name object 儲存資料 getattribute name 獲取資料 remov...