标签:target 原因 添加 图片 依赖 write 对象 点击 inter
在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据(保存该浏览器(会话)的相关信息)时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
Session和Cookie的主要区别在于:
Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。
例如:京东购物车信息保存Cookie 、淘宝购物车信息保存Session
session对象:
存储session
对于上述图例的实现,用IE6保存session数据,当前浏览器可以获得,雅思英语词汇但是第二个IE6 无法获得第一个浏览器保存Session 数据,IE8以上 或 火狐浏览器:当打开多个浏览器窗口,之间Session共享
原因:IE6 cookie 中保存jsessionId 默认会话级别 ;IE8或者火狐 保存cookie中 jsessionId 默认持久cookie
(一)Session实现原理
因此,若果将session id 持久化 ,IE6也可以实现上述功能。其中的Session Id 可以通过Session.getId()方法获得(Session保存数据依赖于cookie来进行实现)。
将写回给 浏览器 JSESSIONID 持久化(手动)
因此,一般我们不允许用户禁用cookie,如果意外遇到这种情况可以:
禁用cookie解决方案
解决办法:URL重写
第二次访问服务器会带一个URL,由于不能通过cookie方式传递SessionId,所以需要在URL中携带SessionId,例如:
注意:携带SessionId信息是使用分号“;”而不是问号“?”
因此在writesession中添加如下即可:
问题1:如果客户端关闭浏览器,是否就删除了Session ?
没有,Session保存在服务器端
问题2:IE6 保存Session,关闭浏览器,再次打开,数据丢失了?
IE6默认jsessionId保存会话Cookie中,关闭浏览器,会话cookie就会被删除,新航道雅思客户端丢失jsessionid
无法找到服务器对应Session对象
(二)生命周期
Cookie生命周期:
Session生命周期
2、调用session对象 setMaxInactiveInterval(int interval) 单位是秒
(三)Session的应用举例
Session的一个常见应用就是购物车功能的实现:
JSTL:一个开源的JSP标签库,使用JSTL可以取代在传统JSP程序中嵌入java代码的做法,大大提高了代码的可维护性。(注意:使用JSTL之前,需要对JSTL进行配置)
表达式语言EL(Expression
Language),通过EL可以简化在JSP开发中对对象的引用,从而规范页面代码,增加程序的可读性及可维护性。
标签:target 原因 添加 图片 依赖 write 对象 点击 inter
原文地址:https://www.cnblogs.com/zhangyanran/p/10082231.html