吾将上下而求索……

博客园 首页 新随笔 联系 订阅 管理

一、会话技术概述
1、Cookie技术:客户端技术
Cookie是一段小信息。Servlet把这些小信息写到客户端的缓存中(Set-Cookie),客户端还能带着小信息给服务器(Cookie)。
a、Cookie的属性
name:(必须的)
value:(必须的)
comment:(可选的)针对该Cookie的注释。
path:(可选的)默认值是写Cookie的那个Servlet的访问路径。/day06/servlet/CookieDemo1
有一个cookie,名为a,它的路径为/day06/servlet
当访问http://localhost:8080/day06/aaa/SomeServlet时,浏览器不会带名为a的cookie带过来。
当访问http://localhost:8080/day06/servlet/bbb/ccc/ddd/aaaCookieDemo2,浏览器会带名为a的cookie带过来。

如果把cookie的路径设置为"/day06",意味着,day06中的所有资源都能得到a。

domain:(可选的)默认值是写Cookie的那个网站。如果domain取值为localhost,那么只有访问localhost这个网站时才会带过去。
maxage:(可选的)设置Cookie的最大存活时间。默认值是浏览器进程(一次会话)。单位是秒。
version:(可选的)
每个客户端针对一个网站,只支持20个cookie。最多保存300个cookie。每个cookie大小不能超过4KB
Tip:
domian+path+name:唯一定位一个Cookie
localhost/day06/servlet/lastAccessTime
localhost:domain
/day06/servlet/:path
lastAccessTime:name


b、如何向客户端写Cookie:HttpServletResponse.addCookie(Cookie c)
c、服务端如何得到客户端带过来的cookie:HttpServletRequest.getCookies()

2、HttpSession技术:服务端技术
---------------------------------------------------------------------------------------------------------------------------------
五、Cookie原理
六、Cookie案例:3个案例
---------------------------------------------------------------------------------------------------------------------------------
七、HttpSession原理
1、服务器端技术:HttpSession,它也是一个域对象。
2、HttpSession服务器端技术,实际上用的是cookie技术。服务器向客户端写了一个特殊的cookie,名字为"JSESSIONID",值为当前session对象的id(唯一),path是当前应用。
3、HttpSession中常用的方法
a、HttpServletRequest.getSession():根据客户端cookie(JSESSIONID)的值查找session对象,没有,创建一个session对象。
b、HttpServletReqeust.getSession(boolean create):如果为true,与a没有区别。如果为false,只会查找。
c、HttpSession.getId():唯一的session对象标识。

---------------------------------------------------------------------------------------------------------------------------------

 

八、HttpSession案例:3个案例
MD5、Base64编码;UUID等等
九、HttpSession对象的状态转换
十、客户端禁用cookie后,会话数据的保存问题
十一、浏览器IE,在什么情况下会开启一次新的会话。

 

一、Session案例:
1、完成用户的一次性登陆(含验证码)
2、防止表单重复提交:MD5、Base64编码
二、Session对象的状态转换(生命周期)
1、修改HttpSession对象的默认失效时间30分钟
web.xml
<session-config>
<session-timeout>1</session-timeout><!--失效时间,单位是分钟-->
</session-config>
三、浏览器IE,在什么情况下会开启一次新的会话。
1、IE7(含)-:
开启一个新的浏览器进程,就是一次新会话。
2、IE8(含)+:
开启一个新的浏览器进程,并没有开始新会话。(文件菜单、开始新会话)

新开启一个Tab页,与原有页面属于同一次会话。
通过一个页面的超链接(target="_blank"),与原有页面属于同一次会话。

四、客户端禁用cookie后,会话数据的保存问题
1、对于使用http://localhost来访问网站,即使客户端禁用了cookie,但是无效。
2、解决办法:URL重写。
http://192.168.1.250:8080/day07/servlet/RegistServlet
---->
http://192.168.1.250:8080/day07/servlet/RegistServlet;JSESSIONID=2983749832743298

String url = HttpServletResponse.encodeURL(String url)
特点:如果服务器知道客户端没有禁用cookie,那么该方法将不会重写URL。

posted on 2016-03-27 16:07  sun&flower  阅读(213)  评论(0编辑  收藏  举报