在文中提到的幾點知識,在這裡簡單梳理一下,
一、伺服器(server)跳轉的理解
伺服器跳**
所謂伺服器端跳轉就是指位址列內容不變(即客戶端瀏覽器的位址列不會顯示跳轉後位址的url)。
客戶端請求到達以後,伺服器發現當前資源給不出回應,要在伺服器內部請求另乙個資源的跳轉,即伺服器端跳轉。所以,這種跳轉與否客戶端不知道(url不變),屬於一次request。
客戶端跳**
所謂客戶端跳轉是指位址列內容發生改變(客戶端向伺服器發請求偶,然後伺服器再給客戶端乙個響應,然後客戶端再根據伺服器端給的響應中的url再向伺服器傳送請求,所以是兩次請求,因此位址列改變了,顯示的是最後一次請求位址)。
客戶端請求到達服務端,服務端返回乙個 「去訪問其他鏈結」 的回應,客戶端依此回應,第二次去訪問。所以,這種跳轉是客戶端根據回應位址又跳轉了一次,第二次跳轉後,已經出了request的屬性範圍。
1、儲存的時間不同,session有一定的生命時效,一般20分
三、cookie和session的區別
http是一種無狀態的協議,為了分辨鏈結是誰發起的,就需要我們自己去解決這個問題。不然有些情況下即使是同乙個**我們每開啟乙個頁面也都要登入一下。而session和cookie就是為解決這個問題而提出來的兩個機制。
應用場景:
cookie用於記住密碼,而session用於購物車
通俗講,cookie是訪問某些**以後在本地儲存的一些**相關的資訊,下次再訪問的時候減少一些步驟。另外乙個更準確的說法是:cookies是伺服器在本地機器上儲存的小段文字並隨每乙個請求傳送至同乙個伺服器,是一種在客戶端保持狀態的方案
session是存在伺服器的一種用來存放使用者資料的類hashtable結構。
通過上面的簡單敘述,很容易看出來最明顯的不同是乙個在客戶端乙個在服務端。因為cookie存在客戶端所以使用者可以看見,所以也可以編輯偽造,不是十分安全。
session過多的時候會消耗伺服器資源,所以大型**會有專門的session伺服器,而cookie存在客戶端所以沒什麼問題。
域的支援範圍不一樣,比方說a.com的cookie在a.com下都能用,而www.a.com的session在api.a.com下都不能用,解決這個問題的辦法是jsonp或者跨域資源共享
。四、如何操作cookie
以登入舉例子
存:var expires = new date();
expires.setmonth(expires.getmonth()+1);//儲存乙個月
document.cookie="username="+username+";expires="+expires.togmtstring();
document.cookie="userpass="+pswd+";expires="+expires.togmtstring();
取:cookie cookies = request.getcookies();
if (cookies != null)
if ("userpass".equals(newcookie.getname() ))}}
JSP九大內建物件
該物件代表 web 應用本身,整個 web 應用共享同乙個 物件,該物件主要用於在多個 jsp 頁面或 servlet 之間共享變數。通過 setattribute 方法將乙個值放入某個屬性,該屬性的值對整個 web 應用有效,因此 web 應用的每個 jsp 頁面或servlet 都可以訪問該屬性...
jsp九大內建物件
1.out 向客戶端輸出資料,位元組流。out.print 2.request 接受客戶端的http請求 getparamenter string name name表示表單的引數名 getparamentervalues string name 使用得到的是string getattribute ...
JSP九大內建物件
常用 out 向客戶端輸出內容 request 封裝客戶端的請求資訊 response 包含了響應客戶請求的有關資訊,具有頁面作用域 頁面訪問完後即銷毀 session 表示客戶端與伺服器端一次會話 其他 page 當前jsp頁面 pagecontext 本頁面內的所有操作 exception 異常...