一 session简单介绍
session含义有狭义和广义之分,狭义上我们将浏览器访问服务器时,服务器创建的操作空间称为session;广义上,session是指一个浏览器(终端用户)与交互系统(服务器)进行通信的时间间隔,通常指从注册进入系统到注销退出系统所经过的时间,以及分配的操作空间称为session。通常,我们将浏览器访问服务器时创建的会话对象称为session。
二 session与cookie区别
1 cookie数据存放在客户端的浏览器上,session数据保存在服务器上。
cookie会保存用户的操作信息,比如你浏览网站所打的文字或是一些选择,当你下次再次访问这个网站时,服务器根据你的cookie数据给你推送特定内容。cookie使用较普遍,比如公共网站的用户登录信息等;
session主要保存用户当次浏览网页时的缓存信息,比如用户刚才浏览的某个网页或者用户刚才的选择信息等等。
2 cookie通常保存在硬盘或内存中,session保存在内存中。
默认情况下(没有设置cookie过期时间),cookie保存在内存中,这种生命周期为浏览器会话期的cookie称为 会话cookie;
session机制是一种服务器端机制,通常使用散列表结构保存于内存中。
3 cookie大小有限制,通常不超过4K;session没有限制,根据用户需求动态变化。
4 cookie不是很安全,可以分析本地cookie从而进行cookie欺骗;session比较占用内存,当访问量较大时,服务 器性能会有很大影响。
5 访问方式区别
cookie保存在本地,当你访问服务器时,服务器会首先查看客户端是否保存服务器上次留下的cookie资料,通过资料来显示相应内容,存储在硬盘上的cookie可以在不同浏览器进程间共享,而会话cookie,不同浏览器有不同的处理方式;session保存在服务器端,当程序需要给客户端的请求创建session时,服务器首先检查客户端的请求中是否包含session的标识sessionID,如果存在则服务器检索出session,如果不存在,则服务器创建一个session,并且生成一个与此session关联的sessionID返回给客户端,客户端通过cookie来保存这个sessionID,当客户端cookie被禁用时,我们还可以通过重写URL来将sessionID传递会服务器。
三 使用方式
第一次访问时,服务器会创建一个新的session,并且产生一个sessionID传给客户端,单击刷新,浏览器再次请求服务器,客户端会存储的cookie中的sessionID一起传递到服务器。
五 session对象的创建和销毁
1 创建
session是在服务器端建立的,客户端只能通过sessionID来匹配session,服务器端如何创建session呢?一个常见的误解就是session在客户端访问时就会创建,但是事实是只有服务端程序调用HttpServletRequest.getSession();或者request.getSession(boolean);时才会创建session;JSP页面不会控制是否创建session,只能控制是否显示session。
2 销毁
session的销毁
1、在tomcat下设置
注:30指分钟
注:15指分钟
注:参数900单位是秒,即在没有活动15分钟后,session将失效。单位为秒,设置为-1表示永不过期。
注意:
如果上述三个地方如果都设置了,有个优先级的问题,从高到低的顺序:(1)--(2)--(3)。
session含义有狭义和广义之分,狭义上我们将浏览器访问服务器时,服务器创建的操作空间称为session;广义上,session是指一个浏览器(终端用户)与交互系统(服务器)进行通信的时间间隔,通常指从注册进入系统到注销退出系统所经过的时间,以及分配的操作空间称为session。通常,我们将浏览器访问服务器时创建的会话对象称为session。
二 session与cookie区别
1 cookie数据存放在客户端的浏览器上,session数据保存在服务器上。
cookie会保存用户的操作信息,比如你浏览网站所打的文字或是一些选择,当你下次再次访问这个网站时,服务器根据你的cookie数据给你推送特定内容。cookie使用较普遍,比如公共网站的用户登录信息等;
session主要保存用户当次浏览网页时的缓存信息,比如用户刚才浏览的某个网页或者用户刚才的选择信息等等。
2 cookie通常保存在硬盘或内存中,session保存在内存中。
默认情况下(没有设置cookie过期时间),cookie保存在内存中,这种生命周期为浏览器会话期的cookie称为 会话cookie;
session机制是一种服务器端机制,通常使用散列表结构保存于内存中。
3 cookie大小有限制,通常不超过4K;session没有限制,根据用户需求动态变化。
4 cookie不是很安全,可以分析本地cookie从而进行cookie欺骗;session比较占用内存,当访问量较大时,服务 器性能会有很大影响。
5 访问方式区别
cookie保存在本地,当你访问服务器时,服务器会首先查看客户端是否保存服务器上次留下的cookie资料,通过资料来显示相应内容,存储在硬盘上的cookie可以在不同浏览器进程间共享,而会话cookie,不同浏览器有不同的处理方式;session保存在服务器端,当程序需要给客户端的请求创建session时,服务器首先检查客户端的请求中是否包含session的标识sessionID,如果存在则服务器检索出session,如果不存在,则服务器创建一个session,并且生成一个与此session关联的sessionID返回给客户端,客户端通过cookie来保存这个sessionID,当客户端cookie被禁用时,我们还可以通过重写URL来将sessionID传递会服务器。
三 使用方式
服务器创建session后,将sessionID传回客户端,客户端访问服务器时,带着sessionID过去,服务器发现客户端带着sessionID过来,就会使用内存中的sessionID为之服务。实现代码如下():
<span style="white-space:pre"> </span>//设置session内容
Map<Integer, String> mapTest = new HashMap<Integer, String>();
//使用request对象获取缓存对象
HttpSession session = request.getSession();
//设置缓存数据
session.setAttribute("session1", mapTest);
//获取sessionID
String sessionID = session.getId();
第一次访问时,服务器会创建一个新的session,并且产生一个sessionID传给客户端,单击刷新,浏览器再次请求服务器,客户端会存储的cookie中的sessionID一起传递到服务器。
五 session对象的创建和销毁
1 创建
session是在服务器端建立的,客户端只能通过sessionID来匹配session,服务器端如何创建session呢?一个常见的误解就是session在客户端访问时就会创建,但是事实是只有服务端程序调用HttpServletRequest.getSession();或者request.getSession(boolean);时才会创建session;JSP页面不会控制是否创建session,只能控制是否显示session。
2 销毁
session的销毁
1、在tomcat下设置
(1) C:\apache-tomcat-6.0.32\conf\web.xml
<span style="font-size:18px;"><span style="white-space:pre"> </span><session-config>
<session-timeout>30</session-timeout>
<span style="white-space:pre"> </span></session-config></span>
注:30指分钟
(2)
C:\apache-tomcat-6.0.32\conf\server.xml
<span style="font-size:18px;">C:\apache-tomcat-6.0.32\conf\server.xml
<Context path="/livsorder" docBase="/home/httpd/html/livsorder"
defaultSessionTimeOut="3600" isWARExpanded="true"
isWARValidated="false" isInvokerEnabled="true"
isWorkDirPersistent="false"/></span>
<span style="font-size:18px;"> <span style="white-space:pre"> </span><session-config>
<session-timeout>15</session-timeout>
<span style="white-space:pre"> </span></session-config></span>
注:15指分钟
3、在java代码中
<span style="font-size:18px;">HttpSession ses = request.getSession();
ses.setMaxInactiveInterval(900);</span>
注:参数900单位是秒,即在没有活动15分钟后,session将失效。单位为秒,设置为-1表示永不过期。
注意:
如果上述三个地方如果都设置了,有个优先级的问题,从高到低的顺序:(1)--(2)--(3)。