超文字傳輸協議(http)存在乙個先天的不足,你啊就是http的無狀態性。無狀態性指的是當同乙個瀏覽器多次給伺服器傳送請求的時候,伺服器會做出響應,但是,伺服器不會知道是乙個瀏覽器傳送了這寫請求。這就是http洗衣的無狀態性。
因為協議的無狀態性,所以伺服器是記不住使用者的狀態的。
jsp中有儲存使用者的兩大機制:* session
* cookie
cookit的中文意思叫做「小甜餅」,是web伺服器儲存在客戶端的一系列文字資訊。安全風險:容易洩漏使用者的資訊cookie的典型用法:
* 判定註冊使用者是否已經登入**
* 「購物車」的處理,即儲存使用者新增到購物車中的資訊
建立cookie物件:
cookie newcookie =new cookie(string
key,object value);
寫入cookie物件
respose.addcookie(newcookie);
讀取cookie
cookie cookies=request.getcookies();
方法名稱
說明void setmaxage(int expiry)
設定cookie的有效期
void setvalue(string value)
在cookie建立後對cookie進行賦值
string getname()
獲取cookie的名稱
string getvalue()
獲取cookie的值
int getmaxage()
獲取cookie的有效時間(秒)
cookie在登入中用於儲存使用者的登入資訊(例如賬號和密碼)(1) logon.jsp頁面的主要**
登入頁構建了乙個提交使用者資訊的表單,action的屬性值定義為dologin_cookie.jsp,將業務邏輯的操作交給dologin_cookie.jsp頁面來操作。
<%
string username="";
string password="";
cookie cookie=request.getcookies(); //獲取cookie
if(cookie!=null&&cookie.length>0)
if(c.getname().equals("password")) }}
%>
登入頁面h2>
action="dologin_cookie.jsp"
method="post">
使用者名稱:td>
type="text"
name="username"
value="<%=username %>" />
td>
tr>
密碼:td>
type="password"
name="password"
value="<%=password %>" />
td>
tr>
colspan="2">
type="checkbox"
name="usercookie"
checked="checked" />
是否在十天之內儲存使用者資訊
td>
tr>
type="submit"
name="submit"
value="登入" />
td>
tr>
table>
form>
(2) dologin_cookie.jsp頁面的主要**dologin_cookie.jsp頁面接收登入頁(login.jsp)頁面提交的引數。執行下列**,儲存cookie或不儲存cookie。最後定義乙個a標籤,連線到user。jsp頁面。驗證cookie是否儲存
<%
request.setcharacterencoding("utf-8");
string username="";
string password="";
string usercookie=request.getparametervalues("usercookie");
//判斷使用者是否儲存使用者cookie
if(usercookie!=null&&usercookie.length>0)
else }}
}%>
href="users.jsp">顯示使用者的詳細資訊a>
(3) user.jsp頁面user.jsp 頁面驗證cookie時候可以儲存,若cookie已經儲存則會顯示使用者名稱和密碼。如果cookie沒有儲存,則使用者名稱和密碼為空:
<%
string username="";
string password="";
cookie cookie=request.getcookies();
if(cookie!=null&&cookie.length>0)
if(c.getname().equals("password")) }}
%>
驗證cookie是否儲存的頁面h1>
使用者名稱:<%=username %>
密碼:<%=password %>
tips:cookie其實是一段純文字檔案,它的值是ascii,所以是無法儲存中文的,解決的辦法就是在儲存和提起cookie的值的時候以字符集」utf-8」進行解碼和編碼 如下:
//編碼
string username=urlencoder.encode(request.getparameter("username"),"utf-8");
//解碼
string username=urldecoder.decode(c.getvalue(),"utf-8");
session
cookie
用來儲存使用者資訊
用來儲存使用者資訊
儲存的內容是object型別的資料
儲存的是string型別的資料
session隨會話的結束而在儲存中被銷毀
cookie可以長期儲存
session儲存的是重要的資訊
cookie儲存的是不重要的資訊
tips:
從安全性考慮,session的安全性比cookie要高
jsp狀態管理
jsp狀態管理 http協議是無狀態性的 儲存使用者狀態的兩大機制 1 session 2 cookie cookie 是web伺服器儲存在客戶端的一系列文字資訊 cookie的作用 對特定物件的追蹤 儲存使用者網頁瀏覽記錄的習慣 簡化登入 但是容易洩露使用者資訊 cookie的常用方法 建立coo...
Jsp狀態管理
無狀態是指,當瀏覽器傳送請求給伺服器的時候,伺服器會響應。但當同乙個瀏覽器再次傳送請求時,伺服器不會知道是剛才那個瀏覽器。簡單說,伺服器 不會儲存使用者狀態 不會記得客戶端是否訪問過,所以這就是無狀態協議 1 session 2 cookie cookie 是web伺服器儲存在客戶端的一系列文字資訊...
JavaWeb 4 JSP狀態管理
無狀態是指,當瀏覽器傳送請求給伺服器的時候,伺服器響應客戶端請求。但是當同乙個瀏覽器再次傳送請求給伺服器的時候,伺服器並不知道它就是剛才那個瀏覽器。簡單地說,就是伺服器不會去記得你,所以就是無狀態協議。1 session 2 cookie 是web伺服器儲存在客戶端的一系列文字資訊。建立cookie...