JSESSIONID 和Cookie的区别与联系

JSESSIONID 和Cookie的区别与联系,第1张

1、SESSION

session是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以Cookie或URL重写为基础。默认使用Cookie来实现,系统会创造一个名为JSESSIONID的输出Cookie,或称为"Session Cookie",以区别Persistent Cookies(通常所说的Cookie).Session Cookie是存储在浏览器中,并不是写在硬盘上的,但是把浏览器的Cookie禁止后,使用response对象的encodeURL或encodeRedirectURL方法编码URL,WEB服务器会采URL重写的方式传递Sessionid,用户就可以在地址栏看到jsessionid=A09JHGHKHU68624309UTY84932之类的字符串。

通常Session Cookie是不能跨窗口使用,当用户新开了一个浏览器进入相同的页面时,系统会赋予用户一个新的SessionID,这样信息共享的目的就达不到,此时可以把SessionID保存在Persistent Cookie中,然后再新的窗口中读出来,就可以得到上一个窗口的SessionID了,这样通过Session Cookie和Persistent Cookie的结合,实现了跨窗口的会话跟踪。

2、COOKIE

所谓Cookie,只是一条极为短小的信息,它能够被网站自动地文本方式放置在一台电脑的硬盘中。通过Cookie,网站可以识别你是第一次访问,或是又一次访问它。网站还可以利用Cookie了解你对哪些内容感兴趣,收集与用户有关的信息,例如记录自动登录的时间限制,记录用户名,投票仅一次的限制等等。在你浏览某些网站的时,网站的程序会在你不知不自觉中将一个小的Cookie(作为一个文本文件)存储在你的硬盘中。如果你想知道自己电脑里都有什么样的Cookie,那么请在Windows目录下寻找Cookie的文件夹。

一个常见的误解是以为session在有客户端访问时就被创建

然而事实是直到某server端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建。

注意!!!!!!!!

如果JSP没有显示的使用 <%@ page session="false"%>关闭session

则JSP文件在编译成Servlet时将会自动加上这样一条句

HttpSession session = HttpServletRequest.getSession(true)

这也是JSP中隐含的 session对象的来历。

你可以自己去tomcat的work\Catalina\目录下查看编译好的jsp文件。

所以不是按照jsp的运行来看的,而是看你是否调用 HttpServletRequest.getSession(true)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11644203.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存