在jsp中的session和cookie的关系

来源:互联网 发布:mac os server 知乎 编辑:程序博客网 时间:2024/06/09 02:33
概述:
    具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。
    同时我们也看到,由于才服务器端保持状态的方案在客户端也需要保存一个标识,所以session
机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择。

引自:JSP入门 - 开发者-万维共享站(dev.w3pub.com)

论证:
如果session和cookie无关,服务器如果判断那个session是属于那个用户的呢。唯一判断的方法就是往客户端写入一个sessionid,然后每次都要比较客户端的sessionid和服务端的sessionid时候一致。不一致session就会失效。我把我的浏览器cookie禁用后csdn和网易的社区就告诉我已经超时了。你可以试一下。在jsp中可以通过重写url的方法来解决这个问题,就是把sessionid加到url后面。你还可以登陆到sina的邮件系统看一下,它的url后面都是跟着一大段字符的。

引自: Java / Web 开发 - CSDN社区 community.csdn.net

保存session id的几种方式
A.保存session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。
B.由于 cookie可以被人为的禁止,必须有其它的机制以便在cookie被禁止时仍然能够把session id传递回服务器,经常采用的一种技术叫做URL 重写,就是把session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在URL后 面。网络在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。
C.另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

引自:JSP入门 - 开发者-万维共享站(dev.w3pub.com)

定义:

The servlet container uses this interface to create a session between an HTTP client and an HTTP server. The session persists for a specified time period, across more than one connection or page request from the user. A session usually corresponds to one user, who may visit a site many times. The server can maintain a session in many ways such as using cookies or rewriting URLs.

引自: HttpSession (Servlet API Documentation)

 

结论:

    不管是cookie还是url都是为了在客户端保存一个唯一标记, 下载再访问时, 浏览器才知道这是哪个客户, 在session中找到这个客户前面的资料. 因为放在url中比较麻烦些, 一般都在cookie里面在IE中自定义安全选项, 选择接受cookie时提示, 就会看到每次session开始的时候会给你一个cookie, 里面的值是唯一的.cookie和url都是在访问页面的时候提交.

 
原创粉丝点击