Session与Cookie的详解及如何实现Session共享
2015-06-09 15:51
423 查看
首先我们来说一说Cookie,Cookie实际是Web服务端与客户端彼此传递的一部分内容,内容是任意的,但要在允许的长度范围内(一般每个域名在30-70不等)。客户端会将它保存在本地机器上(如IE会保存在本地的一个txt文件)。由于客户端程序对其进行管理,过期的Cookie会自动删除,我们可以通过以下方式来设置cookie的过期时间:
默认cookies失效时间是直到关闭浏览器,也可以指定cookie过期时间
每当客户端访问某个域下某个目录中的网页时,便会将保存在本地并且属于哪个域下对应的目录的Cookie信息附在网页请求头部信息当中一并发送给服务端。
下面我们来说一说Session:
See塞申斯欧诺保存在服务器端,为了获得更高的存取速度,服务器一般把Session放在内存中,每一个用户都会有一个独立的session。如果Session内容过于复杂,当大量用户访问服务器时可能会导致内存溢出。因此,session里的信息应该尽量精简。
为了防止内存溢出,服务器会把长时间内没有活跃的session从内存删除,这个时间就是session的超时时间。具体设置方法有以下三种:
1、在主页面或公共页面假如session.setMaxInactiveInterval(900);可以通过对应的getMaxInavtiveInterval()获取,单位是秒,时间以服务器时间为准
2、在web.xml
3、直接在应用服务器中,如果是tomcat,在conf/web.xml中, 找到默认30分钟
Session的共享(以tomcat为例)
需要的jar包
•kryo-1.03.jar
•minlog-1.2.jar
•reflectasm-0.9.jar
•asm-3.2.jar
•kryo-serializers-0.8.jar
•msm-kryo-serializer-1.3.6.jar
•joda-time-1.1.jar
将上述jar包放入%TOMCATHOME%lib下,然后修改conf/server.xml
在不影响系统代码的情况下实现了多条tomcat的session的共享
默认cookies失效时间是直到关闭浏览器,也可以指定cookie过期时间
//首先说一下Cookie的创建和删除 // java Cookie cookie = new Cookie("cookieName",strNum);//创建 Cookie[] cookies = request.getCookies(); for(int i=0;i<cookies.length;i++){ Cookie cookie = new Cookie("bbs_0001",null); cookie.setMaxAge(0); //cookie.setPath("/");//根据你创建cookie的路径进行填写 response.addCookie(cookie); } //js document.cookie = name+"="+value+";expires="+expdate.toGMTString()+";path=/"; setCookie(name, 1, -1);//设置成已过期
Response.Cookies("user_name").Expires=Date+1; //保存Cookies一个小时 Response.Cookies("myCookie").Expires=(now()+1/24); Response.Cookies("myCookie").Expires=DateAdd("h",1,Now()); //设置60个月以后过期 Response.Cookies("myCookie").Expires=DateAdd("m",60,now()); //在expires后面定义的时间可以用时间函数代替 //date()+7表示今天的时间加上7天,而second()+7则是7秒了
每当客户端访问某个域下某个目录中的网页时,便会将保存在本地并且属于哪个域下对应的目录的Cookie信息附在网页请求头部信息当中一并发送给服务端。
下面我们来说一说Session:
See塞申斯欧诺保存在服务器端,为了获得更高的存取速度,服务器一般把Session放在内存中,每一个用户都会有一个独立的session。如果Session内容过于复杂,当大量用户访问服务器时可能会导致内存溢出。因此,session里的信息应该尽量精简。
为了防止内存溢出,服务器会把长时间内没有活跃的session从内存删除,这个时间就是session的超时时间。具体设置方法有以下三种:
1、在主页面或公共页面假如session.setMaxInactiveInterval(900);可以通过对应的getMaxInavtiveInterval()获取,单位是秒,时间以服务器时间为准
2、在web.xml
<session-config> <session-timeout>1</session-timeout> </session-config>
3、直接在应用服务器中,如果是tomcat,在conf/web.xml中, 找到默认30分钟
Session的共享(以tomcat为例)
需要的jar包
•kryo-1.03.jar
•minlog-1.2.jar
•reflectasm-0.9.jar
•asm-3.2.jar
•kryo-serializers-0.8.jar
•msm-kryo-serializer-1.3.6.jar
•joda-time-1.1.jar
将上述jar包放入%TOMCATHOME%lib下,然后修改conf/server.xml
<host name="localhost" appBase="webapps" unpackWARS="true" autoDeploy="true" Validation="false" xmlNamespaceAware="false"> <contest docBase="/sessiontest" path="/sessiontest" reloadable="true"> <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1.localhost:1211" requestUriIgnorePattern=".*\(png|gif|jpg|css|js)$" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serizlizer.kryo.KryoTranscodeFactory" customerConverter="de.javakaffee.web.msm.serizlizer.kryo.JodaDateTimeRegistration" /> </context> </host>
在不影响系统代码的情况下实现了多条tomcat的session的共享
相关文章推荐
- [Swust OJ 648]--简单字典(数位dp)
- A Reusable Aspect for Memory Allocation Checking
- SAT作文评分关键在于主题表达
- Codeforces550C:Divisibility by Eight
- java多线程数据或代码共用的情况
- 硬盘分区的UUID
- Function类型-没有重载
- 相关知识: JavaScript
- ActivityManagerService (三)
- Javascript实现div的toggle效果实例分析
- Java学习笔记(1)--环境搭建
- UVA 1306 LA 2531 The K-League
- Memcached源码分析之一
- 5.3.4 Convert Sorted Array to Binary Searh Tree
- 阿里云SDK手册之java SDK
- vector和map的erase()函数
- 淘宝卖家制图必读的PS技巧大全
- smali学习笔记
- android 之 未知错误 处理问题
- XerverVM磁盘扩展