关闭

jsession的作用

219人阅读 评论(0) 收藏 举报

问题:为何出现如下url:http://www.xxx.com/xxx_app;jsessionid=xxxxxxxxxx?a=x&b=x,即jsession以;jsessionid=xxxxxxxxxx的形式出现在url中


1:session的作用

由于http协议是无状态会话协议,无法保存信息,session是为了解决用户在浏览活动中能够保存信息而诞生的。每一个session都会有唯一标识符jsessionid,jsessionid保存在cookie中,每次客户端请求,服务器都能通过保存在cookie中的jsessionid找到对应的session。也就是说session是基于cookie的实现。 ps:储存jsession的cookie与一般的cookie变量不同,jsessionid是保存在内存cookie中的,在一般的cookie文件中是看不到它的影子的。内存cookie在打开一个浏览器窗口的时候会创建,在关闭这个浏览器窗口的时候也同时销毁。这也就解释了为什么session变量不能跨窗口使用,要跨窗口使用就需要手动把jsessionid保存到cookie里面。

2:如果用户禁用了cookie?

当用户禁用了cookie,服务器理所应当的无法获取jsession,也无法获取对应的session,为了解决这问题,我们将使用重写url技术,将jsessionid以;jsessionid=xxxxxxxxxx的形势附加在url上,也就诞生了问题中的情况。 当用户禁用cookie时,整个会话活动过程url都必须携带jsession参数,而我们处理url的时候不得不去解析url,在解析完毕之后再附加上jsession参数返回,显得十分麻烦。故sun提供了以下两种方法,response.encodeurl()和response.encoderedirecturl()

ps:  另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

2.1两种方法的区别

两种方法本质上没有太大的区别。唯一需要注意的是,当使用sendredirect时,由于是产生新的请求,原来的请求会消失,故要使用

response.encoderedirecturl()

3:关于session

3.1:当程序需要使用session时,会先通过jsessionid查找相应的session来使用,如果查找不到,有可能会创建出一个session来使用,如果没有jsessionid,则会新创一个session并且产生对应的jsessionid,在本次响应结束时返还给客户端并且保存在cookie中jsession是一个极其难重复和被仿造的长字符串。

3.2:关于“只要关闭窗口,session就会消失”,服务器是无法感觉窗口是否关闭,只能通过特定时机清楚session(如在用户选择登出时,将session设置为过期)或者当session超过一定时间没有使用则使session过期的方法让消失。

4:cookie储存在哪里

保存jsessionid的cookie是储存在内存中的。那么什么时候是储存在内存中,什么时候是储存在硬盘中呢?

只要设置了过期时间的cookie都是储存在硬盘中,无任何操作的cookie就是储存在内存中


主要参考:http://sxsoft.blog.163.com/blog/static/190412229200911103116773

0
0
查看评论

关于tomcat7的JSESSION获取不到值得解决

tomcat7为了安全性,防止人为修改sessionid进行攻击,将cookie中JSESSION设置为httponly=true,这样无法使用cookie获取到JSESSIONID 如何获取JSESSIONID。修改tomcat目录下conf/context.xml文件。useHtt...
  • zhmi_1015
  • zhmi_1015
  • 2016-11-21 21:38
  • 645

jsession session

在一些投票之类的场合,我们往往因为公平的原则要求每人只能投一票,在一些WEB开发中也有类似的情况,这时候我们通常会使用COOKIE来实现,例如如下的代码:if (cookies.lenght == 0 || cookies == null)doStuffForNewbie();//没有访问过 }el...
  • sclxf
  • sclxf
  • 2009-10-18 10:39
  • 2077

HTTP Request jsession id and cookie

HTTP Request一般由3部分组成:  (1)Request Line  这一行由HTTP Method(如GET或POST)、URL、和HTTP版本号组成。  例如,GET http://www.w3.org/pub...
  • u011537073
  • u011537073
  • 2017-01-09 23:28
  • 324

other 关于jsession

jsession是什么:jsessionid是session的标识。这就好比每个人都有身份证一样。 当你与服务端进行会话时,比如说登陆成功后,服务端会为你开壁一块内存区间,用以存放你这次会话的一些内容,比如说用户名之类的。那么就需要一个东西来标志这个内存区间是你的而不是别人的,这个东西就是sess...
  • indieinside
  • indieinside
  • 2014-09-17 13:35
  • 993

Loadrunner重要概念——关联

关联:把脚本中某些写死的数据,转变成是撷取自服务器所发送的、动态的、每次都不一样的数据。   为什么要关联?食客问题,浏览器向web服务器发送第一个请求后,在服务器的回应数据包中,就有一个Session ID。以后浏览器再向服务器发送请求时,都会在请求数据包中夹带这个Sessio...
  • yiqin3399
  • yiqin3399
  • 2016-02-28 19:39
  • 663

理解HTTP session原理及应用2

其他知识: 浏览器访问某站点时,会自动取出与该站点对应的cookie信息(如果该站点在客户端创建了cookie的话),并将cookie信息内容随请求发到服务器中,最终封装到request对象中。 1.session会话对象是运行于服务器端的服务器对象,不同的客户端访问可以在服...
  • MJZ_CSDN
  • MJZ_CSDN
  • 2016-03-30 11:53
  • 193

-------------Unable to execute dex: GC overhead limit exceeded

http://fine36.blog.163.com/blog/static/1892510052013413112858940/ MyEclipse里面跑项目的时候,直接来了个这样的错误导致不能正常运行。MyEclipse也直接卡死不动了。 解决方法: 修改myeclipse...
  • dajian790626
  • dajian790626
  • 2014-07-01 19:54
  • 3892

jsessionid的困扰

问题:向某银行发送支付请求时,如果客户端cookie开启,第一次请求时,请求地址会自动增加一jsessionid,第二次没有问题。如果客户端cookie关闭,无论如何请求地址会自动添加一jsessionid,从而导致支付页面不能显示。 ------------------------- 查了...
  • yztezhl
  • yztezhl
  • 2014-02-11 16:35
  • 2303

jsessionid的简单说明

jsessionid
  • chunqiuwei
  • chunqiuwei
  • 2014-04-11 17:41
  • 33511

安卓小工具方法

获取状态栏高度: /** * * @return 状态栏高度 */ public static int getStatusBarHeight() { return Resources.getSystem().getDimensionPixel...
  • ithouse
  • ithouse
  • 2015-05-15 16:00
  • 971
    个人资料
    • 访问:2092次
    • 积分:180
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条