Web开发

注册

 

发新话题 回复该主题

Web时代Session和Cookie [复制链接]

1#

今天我们继续回顾以往的知识点,今天我们将重新的认识关于会话技术的知识。

浏览器开始访问网站到访问网站结束期间产生的多次请求响应组合在一起叫做一次会话,会议话的过程中会产生会话相关的数据,我们需要将这些数据保存起来。

Cookie

Cookie是客户端的技术,程序把每个用户的数据以cookie的形式写给用户的各自的浏览器,当用户使用浏览器再去访问服务器中的web资源时,这样,web资源处理的就是用户各自的数据了。Cookie是基于set-Cookie响应头和Cookie请求头工作的,服务器可以发送set-Cookie请求头命令浏览器保存一个cookie信息,浏览器会在访问服务器时以Cookie请求头的方式带回之前保存的信息cookie在浏览器中的存放只允许存个cookie,每个站点最多有20个cookie在浏览器的存放cookie是不安全的,很有很能被丢失;删除cookie必须设置maxAgepath一致性才可以覆盖

cookie是客户端技术

数据保存在客户端,这个信息可以保存很长时间数据随时有可能被清空,所以cookie保存的数据是不太靠谱的数据被保存在了客户端,随时有可能被人看走,如果将一些敏感信息比如用户名密码等信息存在cookie中,可能有安全问题

protectedvoiddoGet(HttpServletRequestquest,HttpServletResponsesponse)throwsServletException,IOException{//TODOAuto-generatedmethodstubsponse.setContentType("text/html;charset=utf-8");//创建cookie数组Cookie[]cookies=quest.getCookies();CookiefindC=null;if(cookies!=null){for(Cookiec:cookies){if("lasttime".equals(c.getName())){findC=c;}}}if(findC==null){sponse.getWriter().write("你是第一次访问这个网站");}else{//cookies是返回一个long行的值LonglastTime=Long.parseLong(findC.getValue());sponse.getWriter().write("你上次访问的时间是:"+newDate(lastTime).toLocaleString());}Datedate=newDate();Cookiecookie=newCookie("lasttime",date.getTime()+"");//设置cookies保存的最多时间//相当于sponse中添加了一个Set-cookie的响应头cookie.setMaxAge();//设置整个web应用的cookie信息都可以带过去;cookie.setPath(quest.getContextPath());sponse.addCookie(cookie);}

setMaxAge与getMaxAge方法

一个Cookie如果没有设置过MaxAge则这个Cookie是一个会话级别的Cookie,这个Cookie信息发给浏览器后浏览器会将它保存在浏览器的内存中,这意味着只要浏览器已关闭随着浏览器内存的销毁Cookie信息也就消失了.一个Cookie也可以设置MaxAge,浏览器一旦发现收到的Cookie被设置了MaxAge,则会将这个Cookie信息以文件的形式保存在浏览器的临时文件夹中,保存到指定的时间到来为止.这样一来即使多次开关浏览器,由于这些浏览器都能在临时文件夹中看到cookie文件,所以在cookie失效之前cookie信息都存在.想要命令浏览器删除一个Cookie,发送一个同名同path的cookie,maxage设置为0,浏览器以名字+path识别cookie,发现同名同path,cookie覆盖后立即超时被删除,从而就删除了cookie.就是一个覆盖.

setPath与getPath方法

用来通知浏览器在访问服务器中的哪个路径及其子路径时带着当前cookie信息过来如果不明确设置,则默认的路径是发送Cookie的Servlet所在的路径.

setDomain与getDomain方法

用来通知浏览器在访问哪个域名的时候带着当前的cookie信息.但是要注意,现代的浏览器一旦发现cookie设置过domain信息则会拒绝接受这个Cookie.我们平常不要设置这个方法.

Cookie是不可跨域名的。域名

分享 转发
TOP
发新话题 回复该主题