阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

142次阅读
没有评论

共计 2276 个字符,预计需要花费 6 分钟才能阅读完成。

首先我们来说一说 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);// 设置成已过期 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 的共享

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-06/118608.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计2276字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中