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

news/2024/5/18 14:12:17 标签: 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的共享


http://www.niftyadmin.cn/n/1454939.html

相关文章

Dockerfile和supervisor部署项目配置文件模板

Dockerfile模板 FROM python:latestWORKDIR /root/RUN mkdir /etc/supervisor # 创建存放supervisor配置文件的文件夹 RUN mkdir -p /root/projects/logs/gunicorn/ # 创建gunicorn日志文件夹 要和supervisor中gunicorn日志文件路径一致 RUN mkdir -p /root/projects/logs/cel…

抽象类和接口的区别,使用场景

国内顶级IT公司面试题的答案 字符流和字节流的区别&#xff0c;使用场景&#xff0c;相关类 线程安全的概念&#xff0c;实现线程安全的几种方法 抽象类和接口的区别&#xff0c;使用场景 hash算法的实现原理&#xff0c;hashcode的实现原理 error和exception的区别&#xff0…

linux下openssh完全实施方案(含公钥加密安全访问技术)

SSH的概念和原理这里就不再叙述。下面主要讲解一下linux下的openssh的配置&#xff0c;以及公钥加密安全访问技术的实施。 环境&#xff1a; Linux Server(192.168.100.100)--------------------Linux Client(192.168.100.99) 过程&#xff1a; 1.linux下的openssh-server默认是…

uva 10118 - Free Candies(记忆化搜索)

题目大意&#xff1a;10118 - Free Candies 题目大意&#xff1a;有4堆糖果&#xff0c; 每堆糖果有n颗糖果&#xff0c;然后给出每颗糖果的类型1~20&#xff0c;然后只有取走当前堆的前面一颗糖果后才可以取后面的糖果&#xff0c; 然后小伙伴有一个篮子&#xff0c;篮子可以装…

Maven实战——使用Nexus创建私服(上)

首先下载Nexus&#xff0c;官方下载地址是http://nexus.sonatype.org/download, 我们可以根据需要下载不同的Bundle包&#xff0c;都是有.tar.gz、.zip和.war格式的 1、bundle方式安装nexus nexues的Bundle自带了Jetty容器&#xff0c;因此用户不需要额外的web容器就能直接启…

傻瓜式游戏工具引擎

作为开发者&#xff0c;选择工具至关重要。哪些移动游戏开发工具好用呢&#xff1f;国外科技媒体Mobyaffiliates评选出了以下八种供大家参考。 毫无疑问&#xff0c;游戏是所有App里最赚钱的一大类&#xff0c;但曾经在多数人看来&#xff0c;游戏开发是一件高深莫测的事&#…

celery动态设置定时任务实践

首先celery是一种异步任务队列&#xff0c;如果还不熟悉这个开源软件的请先看看官方文档&#xff0c;快速入门。 这里讲的动态设置定时任务的方法不使用数据库保存定时任务的信息&#xff0c;所以是项目重启后定时任务配置就会丢失&#xff0c;如果想保存成永久配置&#xff0…

Maven实战——实用Nexus创建私服(下)

使用Maven部署构件至Nexus 日常开发生成的快照版本构件可以直接部署到Nexus中策略为Snapshot的宿主仓库中&#xff0c;项目正式发布的构建部署到Nexus中策略为Release的宿主仓库中。POM的配置方式如下&#xff1a; <project>...<distributionManagement><repo…