会话管理
来源:互联网 发布:sql max用法 编辑:程序博客网 时间:2024/04/27 23:02
定义:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程 称之为一个会话。
注:点击浏览器的超链接后,以一个新窗口打开,这个也是同一个会话过程,是基于浏览器的。
保存会话数据的两种技术(实现用户的数据共享)
Cookie
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自 的数据了。
javax.servlet.http.Cookie类
public Cookie(String name,String value):构造函数用于封装用户的数据
setValue与getValue方法:设置或获取Cookie的值
setMaxAge与getMaxAge方法:设置或获取Cookie的有效期。
注意:不设置有效期默认为会话范围,关闭浏览器就没了。
setPath与getPath方法:设置和获取Cookie的有效目录
注意:没设置有效目录默认为当前程序所在目录。
setDomain与getDomain方法:设置和获取Cookie 的有效域。如设置为 .sina.com以后访问这个域就 待着Cookie。(这个方法没用,浏览器会阻止第三方的Cookie)
getName方法:获取Cookie的名称。
response接口也中定义了一个addCookie方法,它用于在其响应头中增加一个相应的Set-Cookie头字段。 同样,request接口中也定义了一个getCookies方法,它用于获取客户端提交的Cookie。
案例首页显示用户上次登录的时间public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//由于有中文显示,防止乱码发生response.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();out.write("您上次访问时间是:");//1.获取用户上次访问的时间,显示Cookie cookies[] = request.getCookies();//第一次访问没有时间,所以要注意空的判断for(int i=0;cookies!=null && i<cookies.length;i++){Cookie cookie = cookies[i];//cookie命名为lastAccessTimeif(cookie.getName().equals("lastAccessTime")){long time = Long.parseLong(cookie.getValue());//将毫秒值转成日期对象Date date = new Date(time);out.write(date.toLocaleString());}}//2.把本次的时间以cookie的形式回写给客户机 (lastAccessTime)Cookie cookie = new Cookie("lastAccessTime",System.currentTimeMillis()+"");//如果不设置有效期,当关闭浏览器下次就不会显示时间了cookie.setMaxAge(1*24*60*60);response.addCookie(cookie);}
Cookie注意事项
1、一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。
2、一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提 供的Cookie。
3、浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制 为4KB。
4、服务器端想删除客户端的cookie就可以将setMaxAge的参数设为0则是命令浏览器删除该cookie。
删除cookie时,path必须一致,否则不会删除
Session
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自 的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各 自的session中取出数据为用户服务。
Session和Cookie的主要区别在于:
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的session中。
Session是基于Cookie的。
实现原理
当访问数据时,服务器就会帮浏览器创建Session对象,每个Session都有个id号,创建完毕后服务器立马会把id号以Cookie的形式回写给浏览器,当下次访问另一个资源时,就会检测有没有这个id号的 Session,这也是为什么拿到同一个Session的原因。(通过这个原理我们帮浏览器实现Cookie的回写, 并设置有效期,就能实现多浏览器共享)每一个Session默认存在30分钟,过后就被摧毁。这个时间 可以在conf的web.xml文件中更改。
- 管理会话
- 管理会话
- 会话管理
- 会话管理
- 会话管理
- 会话管理
- 会话管理
- 会话管理
- 会话管理
- 会话管理
- 会话管理
- 管理会话
- 会话管理
- 会话管理
- 会话管理
- 会话管理
- 会话管理
- 会话管理
- extjs动态树的生成。
- 易语言POST教程-CSDN上传头像解析
- hibernate session译文
- Sublime text 3/2破解版_破解方法_注册机_序列号_下载
- ARM926EJ-S/ARM920T 协处理器 CP14, CP15详解
- 会话管理
- hdu1335(进制之间的转换)
- eclipse中的输入提示怎么设置 让它为我们提示所有的输入呢?
- 一台机器同时运行两个Tomcat
- 解决 css 中Z-index 一直不起作用
- H.264中SAD SATD及常见知识点
- 黑马程序员——单例设计模式
- “智能”的让IE浏览器关闭时,用户也退出系统
- 建了一个白盒测试技术交流QQ群