session简介

一 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传回客户端,客户端访问服务器时,带着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>


2、在项目的web.xml中设置
<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)。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值