JAVA web 会话技术CookieSession
?會話技術,指的是從打開瀏覽器開始訪問某個站點,到關閉瀏覽器的整個過程,稱為一次會話。
會話技術分為Cookie和Session。
Cookie是指 將數據存儲在本地,減少服務器的存儲壓力,安全性不好,客戶端可清除Cookie。
Session是指將數據存儲在服務器,增加服務器的存儲壓力,安全性高,客戶端不可清除。
一、Cookie技術
? (一)、 服務器端怎么發送一個Cookie到客戶端
? 1、創建一個Cookie
? Cookie cookie = new Cookie( String cookieName,String cookieValue );
? Cookie 中不能存儲中文。
2 、設置Cookie的在客戶端的持久時間
?cookie.setMaxAge(int seconds)
如cookie.serMaxAge(60*60) 存儲60*60秒,過期后瀏覽器自動刪除cookie。
3、 設置Cookie的存儲路徑
//4。為cookie設置攜帶路徑cookie.setPath("/WEB05/SendCookieServlet");//只有WEB05下所有都攜帶cookie.setPath("/WEB05");//服務器都攜帶cookcookie.setPath("/");//產生cookie路徑下的所有資源都攜帶cookie.setPath("");4、向客戶端發送Cookie
response.addCookie(cookie);5、刪除客戶端的Cookie
如果刪除已存在的Cookie信息,只要創建一個同名同路徑且持久時間為0的Cookie覆蓋就可以了。
?
? ?(二)、服務器端怎么接受客戶端攜帶Cookie的發送。
Cookie是以請求頭的方式發送的,Cookie:“name=zhangsan”
1、通過request獲得Cookie
? Cookie[] cookie = request.getcookies();
2、 遍歷cookie數組,獲得想要的 cookie信息。
?
for(Cookie cookie : cookies){ if(cookie.getName().equal(cookieName)){ String cookieValue = cookie.getValue(); } }實例: 如何用Cookie獲得網站的上一次訪問時間:
package com.oracle.web;import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date;import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //顯示上次訪問時間Servlet public class LastAccessServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {Date date=new Date();SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//當前時間String time=sdf.format(date);//1.創建Cookie對象,記錄當前最新訪問時間Cookie cookie=new Cookie("lastAccessTime",time);cookie.setMaxAge(60*10);//發送Cookie到客戶端 response.addCookie(cookie);//2.獲取客戶端攜帶的CookieString lastAccessTime=null;Cookie[] cookies=request.getCookies();if(cookies!=null){for(Cookie c:cookies){if(c.getName().equals("lastAccessTime")){lastAccessTime=c.getValue();}}}//解決中文亂碼response.setContentType("text/html;charset=utf-8");if(lastAccessTime==null){response.getWriter().write("你是第一次訪問!");}else{response.getWriter().write("你上一次訪問的時間為"+lastAccessTime);}}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);} }?
Session技術
Session技術是將數據存儲在服務器端的技術,會為每個客戶端都創建一塊內存空間????? 存儲客戶的數據,但客戶端需要每次都攜帶一個標識ID去服務器中尋找屬于自己的內???? 存空間。所以說Session的實現是基于Cookie,Session需要借助于Cookie存儲客???? 戶的唯一性標識JSESSIONID。
?一、獲得Session對象
?
HttpSession session = request.getSession();
?
二、? 怎樣向session中存取數據(session也是一個域對象)
session.setAttribute(String name,Object obj);
session.getAttribute(String name);
session.removeAttribute(String name);
?
三、 Session的生命周期
創建:第一次執行request.getSession()時創建
銷毀:
1)服務器(非正常)關閉時
2)session過期/失效(默認30分鐘)
?
問題:時間的起算點 從何時開始計算30分鐘?
從不操作服務器端的資源開始計時
?
可以在工程的web.xml中進行配置
<session-config>
??????? <session-timeout>30</session-timeout>
</session-config>
3)手動銷毀session
session.invalidate();
?
作用范圍:
默認在一次會話中,也就是說在,一次會話中任何資源公用一個session對象
轉載于:https://www.cnblogs.com/time-to-despair/p/9842589.html
總結
以上是生活随笔為你收集整理的JAVA web 会话技术CookieSession的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解题:USACO15JAN Grass
- 下一篇: Django Form -- 对单个表单