Cookie and Session
一次会话是从浏览器开始访问某个站点到关闭浏览器的过程。
会话技术分为cookie和session技术
Cookie存储于客户端的内存中,因此不够安全。可以通过设置持久化时间在会话结束后仍然使其存在于浏览器的磁盘文件中,方法:setMaxAge(秒数)。
Session存储与服务器中,安全但是会增加服务器压力。
===================================================================================================================================
Cookie的创建Cookie cookie = new Cookie(String cookieName,String cookieValue);
cookie的生命周期是一次会话,如果不设置cookie的路径,则其默认为每次访问产生该cookie的web路径时均会携带该cookie
服务器端向客户端发送cookie的方法response.addCookie(cookie的对象);
如果想要删除客户端的已经存储的cookie信息,那么需要使用用同名同路径的持久化时间为0的cookie进行覆盖。
服务器端获取客户端携带的cookie的方法:通过request.getCookies(),获取一个cookie数组,然后遍历cookie,通过getName方法获得cookie的名字,通过条件判断获得该cookie值。
====================================================================================================================================
获取Session对象的方法;
HttpSession session = request.getSession();
在一次会话中,如果客户端在访问服务器的时候,服务器创建了session,这时候服务器会把Jsessionid传给客户端,这样如果该客户端再次访问服务器的时候,服务器使用该方法只会获得曾经创建过的session(实质就是根据JSESSIONID判断该客户端是否在服务器上已经存在 session了)
通过getId()获得Jsessionid。
Session的生命周期为在第一次执行request.getSession()时创建,在服务器关闭时结束或者是在浏览器不再访问该web工程资源的30分钟后销毁。可以在工程的web.xml的<session-timeout>30</session-timeout>中进行修改。也可以手动销毁,方法:.invalidate();
默认在一次会话中,也就是说在,一次会话中任何资源公用一个session对象。
可以借助cookie存储JSESSIONID来使得客户端多次会话中访问服务器都获得相同的内容。
方法:创造一个cookie,它的name为“JESSIONID”,value值为request.getSession().getId()获得的值,设置cookie的setMaxAge(),这样使得存入该Session域中的键值在该cookie生命周期内都能被访问到。.