cookie与session
Cookie
1.cookie是有由服务器生成以响应(response)方式发送并保存在客户端的信息载体,客户端进行同类访问的时候。请求(request)中可获取cookie。
同类请求:资源路径相同
2.下图的默认路径为servlet资源路径
3.资源路径相同的访问可以获取cookie并进行操作
Session(域)
1.
2.getsession方法:
getsession无参-创建时用:从请求中获取服务器的session,没有则创建
getsession有参(create)-获取时用:从请求中获取服务器的session,没有且create为true则创建
3.session是跨请求的,一次会话中互通的。(注意区分):
request.getattribute和session.getattribute有什么区别?:
(1).request的Attribute是一次请求里的参数,仅属于当前请求;
(2).session的Attribute是一个会话里的参数,也就是页copy面没有关闭前或者页面关闭后session超时你所有请求保存的参数
(3).application的Attribute是服务端的参数,也就是服务器关闭前,所有请求保存的参数
(4).所以一般情况application(servletcontext)>session>request 也就是说后者能拿到的通常前者都能拿到。
4.session原理:(基于cookie)
5.session的失效
1.session失效后不为null,但无数据
2.所谓的安全退出,其实就是session的实效
cookie的禁用
1.客户端禁用cookie后,每次请求服务器都会生成一个32位的JSESSIONID,生成一个httpsession,组成map的一个entry,并将JSESSIONID存在cookie中并发送给客户端,但响应中接收不到cookie,所以认为是第一次访问,又再来一次。
2.禁用后跟踪会话方法:在资源名称后+;+jsessionid=…(此方法也可以用来跨会话传参数)
3.禁用后重定向:重定向的uri(资源路径)用response.encodeRedirectURL(uri)处理后,在资源名称后自动加上;+jsessionid=…(禁不禁都能用,但是不安全)
4.禁用后非重定向:非重定向的uri(资源路径的超链接)用response.encodeURL(uri)处理后,在资源名称后自动加上;+jsessionid=…
5.禁言cookie可能导致大部分网站打不开,客户端会拒绝接受cookie