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前後的兩頁。但是只...