会话技术——Session和Cookie
一、会话技术
1、什么是会话:客户打开浏览器访问一个网站,访问完毕之后,关闭浏览器。这个过程称之为一个会话。就如同打电话。
2、会话在编程中主要解决的问题是:保存各个用户的数据信息。
3、保存用户各自数据的主要技术:
客户端技术:Cookie
服务端技术:HttpSession
二、Cookie
1、获取Cookie采用request.getCookies()
2、设置Cookie采用response.addCookie(Cookie c)
3、cookie的属性
3.1maxAge:默认是浏览器的进程。也就是说不设置该属性,浏览器关闭后,cookie就被删除了。 也可以设置其存活时长,单位为妙
3.2path:默认是产生cookie的应用的访问路径。
如果设置了路径,只能被包含此路径的资源访问
假如设置路径为“/day06”,也就是说,该cookie只能被day06这个应用访问
假如设置路径为“/day07”(day06的应用增加的cookie),该cookie只能被day07访问,而day06是访问不到的
假如设置路径为“/”,该cookie可以被同一个服务器的所有应用访问
三、Session
1、IE7及以下版本,新开窗口都会开启一次新会话
2、每个客户端都有各自的Session对象,以SessionId标识。
3、Session技术实际上是借助Cookie技术实现的。在创建session时,会将该Session的ID以cookie:JSESSIONID=sessionId的形式写给客户端。
4、Session默认情况下何时失效?
时间到了,默认是30分钟
更改Session的失效时间方法: 修改web.xml文件,在根元素中增加以下内容:
<session-config> <session-timeout>1</session-timeout><!--单位为分钟--> </session-config>
5、客户端禁用了cookie怎么办?
解决办法:URL重写。以下两个方法可以实现重写。要对该站多有的URL都要进行重写。
(1)response.encodeRedirectURL(java.lang.String?url) :针对重定向的地址进行重写
(2)response.encodeURL(java.lang.String?url):其他地址进行重写
(在老的浏览器中,用localhost访问网站,即使禁用了cookie,cookie还是有效的)