Cookie
將用戶相關的信息保存在客戶端
客戶端每次訪問服務器都會自動攜帶cookie的數據
Cookie cookie = new Cookie(name, value);
response.addCookie(cookie);
什么是會話Cookie
保存在瀏覽器內中的屬于會話cookie
特點:關閉瀏覽器的時候就會清楚cookie
什么是持久會話cookie
數據保存客戶端硬盤上
通過setMaxAge 設置為持久
Cookie的有效路徑
cookie.setPath(“/work”);
刪除cookie
cookie.setMaxAge(0);
cookie.setPath(“/work”);
response.addCookie(cookie);
//request.getRequestDispatcher(“/PRo.jsp”).forward();//轉發
response.sendRedirect(“/work/pro.jsp”);//重定向
有效域名
訪問sina的時候,設置cookie.setDomain(“.baidu.com”);
這是第三方cookie,是不安全的。一般瀏覽器都不接受。
訪問sina時候,生成的cookie,cookie.setDomain(.sina.com.cn);
這個是第一方cookie
---------------------------------------------
Session
為每一個客戶端生成唯一的編號,記錄客戶端要購買的記錄
服務器回應給客戶端編號
客戶端結賬的時候,發送給服務器編號
服務器獲得編號,通過編號查找客戶端購買的商品
會話級別、持久級別
IE6默認是會話級別,所以新開瀏覽器讀取不到session
解決方法:將jsessionid持久化
HttpSession httpSession = request.getSession();
httpSession.setAtt(name, value);
new Cookie(“JSESSIONID”,httpSession.getId());
cookie.setMaxAge(60 * 60);
cookie.setPath(“/work”);
response.addCookie(cookie);
-------------
禁用cookie后,session還能使用,對url進行重寫,拼接jsessionid
response.encodeURL();
如果服務器進行URL重寫,那么所有路徑都必須重寫
最好不要讓用戶禁用cookie
生命周期
Cookie生命周期
創建:
Cookie cookie = new Cookie(name,value);response.addCookie(cookie);
銷毀:
會話級別,瀏覽器關閉就銷毀
持久級別,過期后銷毀 MaxAge
Session生命周期
創建:
request.getSession();
銷毀:
情況一,服務器關閉
情況二,session過期時銷毀
1.web.xml文件配置session過期時間
<session-config>
<session-timeout>30</session-timeout> 單位:分鐘
</session-config>
默認一般不用配置,tomcat下web.xml有默認配置
2.調用session對象的方法
HttpSession session = request.getSession();
session.setMaxInactiveInterval(60 * 60); //單位是秒
情況三、調用invalidate()方法
session.invalidate();
--------------------------------
三種數據范圍
ServletContext
HttpServletRequest
HttpSession
共同方法:
setAtt 存入屬性
getAtt 取出屬性
removeAtt 移除屬性
什么時候使用?
ServletContext 服務器啟動時創建,服務器關閉銷毀
時間最長,所有Servlet共享,用于保存全局的數據
例如:數據庫連接、工程配置屬性、配置文件內容
HttpSession
在request.getSession()時候創建
在三種情況下銷毀
用來保存與用戶相關的數據
例如:登錄信息、購物車
HttpServletRequst 在客戶端發起請求時,服務器創建對象
在響應結束時,對象銷毀
保存servlet向jsp傳輸數據信息
例如:某個操作,servlet將操作結果傳遞jsp
servlet將登錄信息傳遞jsp、servlet將數據庫查詢結果傳遞給jsp
以上三種數據范圍,ServletContext > HttpSession > HttpServeletRequest
宗旨:優先使用生命周期短的,有利于服務器資源控制。
新聞熱點
疑難解答