Jsp狀態(tài)管理
• http協(xié)議無狀態(tài)性
無狀態(tài)是指,當游覽器發(fā)送請求給服務器的時候,服務器響應客戶端請求。
但是當同一個游覽器再次發(fā)送請求給服務器的時候,服務器并不知道它就是剛才那個游覽器。
簡單說,就是服務器不會去記得你,所以就是無狀態(tài)協(xié)議。
• 保存用戶狀態(tài)的兩大機制
Session
Cookie
Cookie概述
• Cookie簡介
Cookie中文名稱“小甜點”,是Web服務器保存在客戶端的一些列文本信息。
典型應用一:判定注冊用戶是否已經(jīng)登錄網(wǎng)站
典型應用二:“購物車”的處理
典型應用三:視頻播放器的歷史記錄
典型應用四:記住用戶名和密碼功能
• Cookie的作用
對特定對象的追蹤
保存用戶網(wǎng)頁游覽記錄與習慣
簡化登錄
安全風險:容易泄露用戶信息
• Cookie的創(chuàng)建與使用
創(chuàng)建Cookie對象
Cookie newCookie = new Cookie(String key, Object value);
寫入Cookie對象
response.addCookie(newCookie);
讀取Cookie對象
Cookie[] cookies = request.getCookies();
• Cookie常用方法
設置cookie的有效期,以秒為單位。
void setMaxAge(int expiry)
在cookie創(chuàng)建后,對cookie進行賦值
void setValue(String value)
獲取cookie的名稱
String getName()
獲取cookie的值
String getValue();
獲取cookie的有效時間,以秒為單位
int getMaxAge();
• 創(chuàng)建cookie對象,并將對象保存在客戶端游覽器中
//創(chuàng)建cookie對象 Cookie cookie01 = new Cookie("name", "Ivy"); //設置Cookie的生命周期,如果設置為負值的話,關閉瀏覽器就失效。如果設為0,表示取消該cookie。 cookie01.setMaxAge(60*30); Cookie cookie02 = new Cookie("pass", "123"); //向游覽器輸出Cookie response.addCookie(cookie01); response.addCookie(cookie02);
• 從游覽器讀取該網(wǎng)站存放的所有cookie對象
//讀取所有的Cookie Cookie cookies[] = request.getCookies(); if(cookies != null){ out.print(cookies.length+"<br>"); for(int i=0; i<cookies.length; i++){ out.print(cookies[i].getName()+"<br>") ; out.print(cookies[i].getValue()+"<br>"); } }
• 從游覽器中刪除該網(wǎng)站存放的指定cookie對象
//刪除游覽器中的cookie Cookie cookie01 = new Cookie("name", "Ivy"); cookie01.setMaxAge(0); response.addCookie(cookie01);
• Session與Cookie的對比
cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務器上。
cookie不是很安全,別人可以分析存放在本地的cookie并進行cookie欺騙,考慮到安全應當使用session。
session會在一定時間內(nèi)保存在服務器上。當訪問增多,會比較占用服務器的性能考慮到減輕服務器性能方面,應當使用cookie。
單個cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個站點多保存20個cookie。
建議:將登陸信息等重要信息存放為session,其他信息如果需要保留,可以放在cookie中。
• 案例
cookie在登錄中的應用
• 練習
使用cookie通知用戶游覽該網(wǎng)站的次數(shù)
指令與動作
• include指令
語法
<%@ include file="URL"%>
• include動作
語法
<jsp:include page="URL" flush="true|false" />
page:要包含的頁面
flush:被包含的頁面是否從緩沖區(qū)讀取
• include指令與include動作區(qū)別
• <jsp:forward>動作
語法
<jsp:forward page="URL" />
等同于
request.getRequestDispatcher("/url").forward(request, response);
• <jsp:param>動作
語法
<jsp:param name="參數(shù)名" value="參數(shù)值">
常常與<jsp:forward>一起使用,作為其子標簽。
例如
test01.jsp
<body> <form action="test02.jsp" method="post"> <input type="text" name="user"> <input type="submit" value="提交"> </form> </body>
test02.jsp
<jsp:forward page="test.jsp"> <jsp:param value="1111" name="pass"/> </jsp:forward>
test.jsp
名字:<%=request.getParameter("user") %> 密碼:<%=request.getParameter("pass") %>
熱點新聞