session技術(shù)
(1)什么是session?
瀏覽器訪問服務(wù)器時,服務(wù)器會創(chuàng)建一個
對象(該對象稱為session對象,該對象有一個唯一
的id號,稱為sessionId),服務(wù)器在默認情況下,
會將這個sessionId以set-cookie消息頭的方式
發(fā)送給瀏覽器(即使用cookie機制),瀏覽器會將
sessionId保存到內(nèi)存里。當瀏覽器再次訪問服務(wù)
器時,會將sessionId發(fā)送給服務(wù)器。服務(wù)器依據(jù)
sessionId就可以找到之前創(chuàng)建的session對象。
(2) 如何獲得一個session對象?
a, HttpSession session =
request.getSession(boolean flag);
當flag為true:
服務(wù)器會檢查請求中是否包含sessionId,
如果沒有,服務(wù)器會創(chuàng)建一個session對象;
如果有,服務(wù)器依據(jù)sessionId去查找session
對象,如果找到了,則返回,找不到,創(chuàng)建
一個新的session對象。
當flag為false:
服務(wù)器會檢查請求中是否包含sessionId,
如果沒有,返回null;
如果有,服務(wù)器依據(jù)sessionId去查找session
對象,如果找到了,則返回,找不到,返回
null。
b,HttpSession session =
request.getSession();
該方法完全等價與request.getSession(true)。
(3) session的常用方法:
String session.getId(); //返回sessionId。
session.setAttribute(String name,
Object obj);
//name對應(yīng)的值不存在,返回null。
Object session.getAttribute(String name);
session.removeAttribute(String name);
(4)session的超時
服務(wù)器會將空閑時間過長的session對象
刪除掉,稱之為session超時。
服務(wù)器會有一個缺省的超時限制(一般是
30分鐘),這個缺省時間可以修改。
比如tomcat可以修改 conf/web.xml
30
該修改會影響到所有部署在這個服務(wù)器上的
應(yīng)用,一般不要修改。
可以對某個應(yīng)用,在web.xml文件中,添加
30
可以調(diào)用session.setMaxInactiveInterval(int
seconds)設(shè)置超時限制。
(5) session的刪除
session.invalidate();
案例:
session驗證
step1 在登錄成功之后,向session對象里
綁訂數(shù)據(jù):
session.setAttribute("user",user);
step2 對于需要保護的資源(即必須要登錄之
后才能訪問的資源),添加驗證代碼:
Object obj = session.getAttribute("user");
if(obj == null){
//沒有登錄
response.sendRedirect("login.jsp");
}else{
//正常訪問
}
![]() | ![]() .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 |
![]() | ![]() .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 |