web四大作用域

2021-09-02 01:27:39 字數 3550 閱讀 4072

1.page只在當前jsp有效,每次請求分別對應不同的request.

2.request,只在當前請求有效,每次請求分別對應不同的request域

【request域】可以呼叫request這個隱含物件的getattribute()方法來訪問具有這種範圍型別的物件。也可以使用getparameter(string name) return string來獲取xml裡傳遞給它的引數。

string data = 「xby request」;

request.setattribute(「data4」,data);

request.getrequestdispatcher("/1.jsp").forward(request, response);

request可以用於forward

string data = (string)request.getattribute(「data」);

out.write(data);

【如果在forward前將在servlet程式中寫入的部分內容已經被真正地傳送到客戶端,forward方法將丟擲illegalstateexception異常。】關鍵在跳轉後要return. 如果在呼叫forward方法前向servlet引擎的緩衝區(response)中寫入內容,只要寫入到緩衝區的內容還沒有真正輸出到客戶端,forward方法將可以被正常執行,原來寫入到緩衝區的內容 會被清空,但是,已經寫入到httpservletresponse物件的響應字段資訊保持有效。 forward請求**特點: 1.客戶端只發出了一次請求,而伺服器端有多個資源呼叫

3.session只在一次會話中有效,會話結束就無法取到資料了。getattribute(string name) return object

session.setattribute("name", "電視");

response.setcharacterencoding("utf-8");//處理中文亂碼問題

response.setcontenttype("text/html;charset=utf-8");//處理中文亂碼問題

printwriter out = response.getwriter();//處理中文亂碼問題

只有當getsession()時,伺服器才會為該瀏覽器建立session,他的生命週期預設為30min。

10 當使用request.getsession(false);時,就是檢視session,不生成session.例如在檢視已購買東西時,會使用。//ie8的話,開2個瀏覽器還是共享乙個session,ie7是伺服器把sessionid寫進了瀏覽器的程序中,而ie8是伺服器實現了多個同一款瀏覽器的session共享。【cookie】如果沒有指定cookies物件的有效期,則cookies物件只存在於客戶端的記憶體。當瀏覽器關閉時,cookies就會失效。

string sessionid = session.getid();

cookie cookie = new cookie("jsessionid", sessionid);

cookie.setpath("/servlet");

cookie.setmaxage(30*60);

response.addcookie(cookie);

session.setattribute("name", "電視");//重新寫cookie。設定時間。如果禁用cookie,就是使用利用url重寫技術讓瀏覽器的url帶上sessionid。

1.這是乙個容器

2.說明這個容器的作用範圍是整個應用程式範圍

rd.forward(request, response);這樣不好,因為涉及到多執行緒問題,servletcontext會被同一應用中的所有servlet所共享

通過servletcontext讀取web資源:

inputstream in= this.getservletcontext().getresourceasstream("/web-inf/classes/db.properties");

properties props = new properties();

props.load(in);

string username = props.getproperty("username");

string passwd = props.getproperty("passwd");

string path= this.getservletcontext().getrealpath("/web-inf/classes/db.properties");

fileinputstream in = new fileinputstream(path);】

四個域物件在選擇的時候,能用範圍小的絕不用範圍大的:

page:資料只是暫時存在集合,在jsp頁面的其他地方要用,用page(頁面中自定義的map)

(什麼時候需要用map了,就用page)

request:【程式產生資料,資料顯示完後就沒有用了】

資料只是做顯示的,看完了就沒用了。就存request域,請求**,servlet產生的處理結果(資料)交給jsp顯示。資料**可以帶資料。

session:【程式產生資料,顯示後等會還需要使用】

資料給使用者看完了,一定還要用,會話結束了就沒用了

使用者登入,使用者資訊發給客戶端看,看完了,一會訪問別的頁面還要看使用者資訊。

購物車,購物車成功了,給使用者看購物車,待會隨時間可以檢視購物車

請求重定向,因為是兩次請求,每一次請求的資料,第二次請求還要看。

四大作用域

1 page 裡的變數 只要頁面跳轉了,它們就不見了。如果把變數放到 pagecontext 裡,就說明它的作用域是 page 它的有效範圍只在當前 jsp頁面裡。從把變數放到 pagecontext 開始,到 jsp頁面結束,你都可以使用這個變數。2 request 裡的變數可以跨越 forwar...

四大作用域

名稱作用域 在所有應用程式中有效 全域性 session 在當前會話中有效 request 當前請求中有效 page 當前頁有效 所謂 作用域 指的是資訊共享範圍,通俗講就是乙個資訊在多大的範圍內有效。web互動最基本的單位是http請求,當乙個使用者進入 時就形成了乙個會話,在伺服器執行中有多少個...

JSP四大作用域

1.page裡的變數 只要頁面跳轉了,它們就不見了。如果把變數放到pagecontext裡,就說明它的作用域是page,它的有效範圍只在當前jsp頁面裡。從把變數放到pagecontext開始,到jsp頁面結束,你都可以使用這個變數。2 request裡的變數可以跨越forward前後的兩頁。但是只...