JAVA web 会话技术CookieSession
?會(huì)話(huà)技術(shù),指的是從打開(kāi)瀏覽器開(kāi)始訪(fǎng)問(wèn)某個(gè)站點(diǎn),到關(guān)閉瀏覽器的整個(gè)過(guò)程,稱(chēng)為一次會(huì)話(huà)。
會(huì)話(huà)技術(shù)分為Cookie和Session。
Cookie是指 將數(shù)據(jù)存儲(chǔ)在本地,減少服務(wù)器的存儲(chǔ)壓力,安全性不好,客戶(hù)端可清除Cookie。
Session是指將數(shù)據(jù)存儲(chǔ)在服務(wù)器,增加服務(wù)器的存儲(chǔ)壓力,安全性高,客戶(hù)端不可清除。
一、Cookie技術(shù)
? (一)、 服務(wù)器端怎么發(fā)送一個(gè)Cookie到客戶(hù)端
? 1、創(chuàng)建一個(gè)Cookie
? Cookie cookie = new Cookie( String cookieName,String cookieValue );
? Cookie 中不能存儲(chǔ)中文。
2 、設(shè)置Cookie的在客戶(hù)端的持久時(shí)間
?cookie.setMaxAge(int seconds)
如cookie.serMaxAge(60*60) 存儲(chǔ)60*60秒,過(guò)期后瀏覽器自動(dòng)刪除cookie。
3、 設(shè)置Cookie的存儲(chǔ)路徑
//4。為cookie設(shè)置攜帶路徑cookie.setPath("/WEB05/SendCookieServlet");//只有WEB05下所有都攜帶cookie.setPath("/WEB05");//服務(wù)器都攜帶cookcookie.setPath("/");//產(chǎn)生cookie路徑下的所有資源都攜帶cookie.setPath("");4、向客戶(hù)端發(fā)送Cookie
response.addCookie(cookie);5、刪除客戶(hù)端的Cookie
如果刪除已存在的Cookie信息,只要?jiǎng)?chuàng)建一個(gè)同名同路徑且持久時(shí)間為0的Cookie覆蓋就可以了。
?
? ?(二)、服務(wù)器端怎么接受客戶(hù)端攜帶Cookie的發(fā)送。
Cookie是以請(qǐng)求頭的方式發(fā)送的,Cookie:“name=zhangsan”
1、通過(guò)request獲得Cookie
? Cookie[] cookie = request.getcookies();
2、 遍歷cookie數(shù)組,獲得想要的 cookie信息。
?
for(Cookie cookie : cookies){ if(cookie.getName().equal(cookieName)){ String cookieValue = cookie.getValue(); } }實(shí)例: 如何用Cookie獲得網(wǎng)站的上一次訪(fǎng)問(wèn)時(shí)間:
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; //顯示上次訪(fǎng)問(wèn)時(shí)間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");//當(dāng)前時(shí)間String time=sdf.format(date);//1.創(chuàng)建Cookie對(duì)象,記錄當(dāng)前最新訪(fǎng)問(wèn)時(shí)間Cookie cookie=new Cookie("lastAccessTime",time);cookie.setMaxAge(60*10);//發(fā)送Cookie到客戶(hù)端 response.addCookie(cookie);//2.獲取客戶(hù)端攜帶的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("你是第一次訪(fǎng)問(wèn)!");}else{response.getWriter().write("你上一次訪(fǎng)問(wèn)的時(shí)間為"+lastAccessTime);}}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);} }?
Session技術(shù)
Session技術(shù)是將數(shù)據(jù)存儲(chǔ)在服務(wù)器端的技術(shù),會(huì)為每個(gè)客戶(hù)端都創(chuàng)建一塊內(nèi)存空間????? 存儲(chǔ)客戶(hù)的數(shù)據(jù),但客戶(hù)端需要每次都攜帶一個(gè)標(biāo)識(shí)ID去服務(wù)器中尋找屬于自己的內(nèi)???? 存空間。所以說(shuō)Session的實(shí)現(xiàn)是基于Cookie,Session需要借助于Cookie存儲(chǔ)客???? 戶(hù)的唯一性標(biāo)識(shí)JSESSIONID。
?一、獲得Session對(duì)象
?
HttpSession session = request.getSession();
?
二、? 怎樣向session中存取數(shù)據(jù)(session也是一個(gè)域?qū)ο?#xff09;
session.setAttribute(String name,Object obj);
session.getAttribute(String name);
session.removeAttribute(String name);
?
三、 Session的生命周期
創(chuàng)建:第一次執(zhí)行request.getSession()時(shí)創(chuàng)建
銷(xiāo)毀:
1)服務(wù)器(非正常)關(guān)閉時(shí)
2)session過(guò)期/失效(默認(rèn)30分鐘)
?
問(wèn)題:時(shí)間的起算點(diǎn) 從何時(shí)開(kāi)始計(jì)算30分鐘?
從不操作服務(wù)器端的資源開(kāi)始計(jì)時(shí)
?
可以在工程的web.xml中進(jìn)行配置
<session-config>
??????? <session-timeout>30</session-timeout>
</session-config>
3)手動(dòng)銷(xiāo)毀session
session.invalidate();
?
作用范圍:
默認(rèn)在一次會(huì)話(huà)中,也就是說(shuō)在,一次會(huì)話(huà)中任何資源公用一個(gè)session對(duì)象
轉(zhuǎn)載于:https://www.cnblogs.com/time-to-despair/p/9842589.html
總結(jié)
以上是生活随笔為你收集整理的JAVA web 会话技术CookieSession的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 解题:USACO15JAN Grass
- 下一篇: Django Form -- 对单个表单