session可以同时存在多个
比如这样一个情况:同一客户端机器多次请求同一个资源,对于多标签的浏览器来说,在一个浏览器窗口中,多个标签同时访问一个页面,session是一个。对于多个浏览器窗口之间,同时或者相隔很短时间访问一个页面,session是多个的,和浏览器的进程有关。对于一个同一个浏览器窗口,直接录入url访问同一应用的不同资源,session是一样的。
request.getSession(true):若存在会话则返回该会话,否则新建一个会话。
request.getSession(false):若存在会话则返回该会话,否则返回NULL
request.getSession()默认是true:如果session不存在那么将创建一个
Session&Cookie与用户登录检验
当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。 保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于 SEEESIONID。
cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。 经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。
例:
<form name=”"testform”" action=”"/xxx”">
<input type=”"hidden”" name=”"jsessionid”"
value=”"ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764″”>
<input type=”"text”">
</form>
URL重写
http://www.test.com/test;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
catalina 就是Tomcat服务器使用的 Apache实现的servlet容器的 名字。
Tomcat的核心分为3个部分:
- Web容器---处理静态页面;
- catalina --- 一个servlet容器-----处理servlet;
- 还有就是JSP容器,它就是把jsp页面翻译成一般的servlet。
http://yut-i.blog.163.com/blog/static/2425778220121159347221/
-------------------------------------------------
项目session失效问题以及解决方法
tomcat配置文件web.xml中配置的session失效时间不起作用,session在外网频繁失效
可能原因:项目部署在同一服务器下,ip或域名相同
调试中查看拦截器方法
session与域名、IP
项目部署在同一服务器,
http://netsecurity.51cto.com/art/201402/428721.htm
二级域名
baidu.com 一级域名
www.baidu.com 二级域名
bbs.baidu .com 二级域名
tieba.baidu .com 二级域名
不同二级域名之间共享session?