JSP狀態管理

2021-08-09 08:07:07 字數 3635 閱讀 1606

超文字傳輸協議(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...