码迷,mamicode.com
首页 > 其他好文 > 详细

Session与Cookie的详解及如何实现Session共享

时间:2015-06-09 17:20:37      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:cookie   session   session共享   

首先我们来说一说Cookie,Cookie实际是Web服务端与客户端彼此传递的一部分内容,内容是任意的,但要在允许的长度范围内(一般每个域名在30-70不等)。客户端会将它保存在本地机器上(如IE会保存在本地的一个txt文件)。由于客户端程序对其进行管理,过期的Cookie会自动删除,我们可以通过以下方式来设置cookie的过期时间:
默认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的共享

Session与Cookie的详解及如何实现Session共享

标签:cookie   session   session共享   

原文地址:http://blog.csdn.net/fuyuwei2015/article/details/46427679

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!