`
xvm03
  • 浏览: 140706 次
  • 来自: ...
社区版块
存档分类
最新评论

session 原理--ZT

阅读更多

session的引入:

鉴于http是无状态的协议,当完成客户端和服务器的传递信息后,就断开之间的联系,这样就造成了怎么样在几个页面之间传递信息

比如客户端信息,或者假如是写一个购物程序,就要记得购物车里面的信息,jsp提供了四种方法来跟踪客户的状态

1:建立匿名的表格字段

2: 使用url传递

3 使用持久化的cookies

4:使用session 的会话机制

相对于安全级别来说第四种最高了,session是指在一段时间内客户端和服务器之间的一连串的相关的交互过程。

 

在一个session中客户可能会访问不同的服务器资源,也可能会多次访问同一个页面。

sevlet容器为httpsession分配一个唯一的标识,成为sessionid,容器会把sessionid放在客户端的cookies中,每次客户端发出http请求的时候,servlet可以把httdivquest对象中读取sessionid。然后更具sessionid找到对应的session对象,从而取得客户端状态信息。

session的方法:

getid()取得session的id号。

setattribuate(string name,object obj)保存一对name、value对象

getattribute(String name)获取name的属性

isnew()判断session时候是新建的。

废除sesion对象的方法"

1:setmaxinactival()通过设置最大不活动时间

2:关闭客户端浏览器

3:调用session的invalidate()方法

 

如果客户端不支持cookies时,那么session的id号就不能保存,那么在java API中提出了一种跟踪session的方法,容器可以重写客户请求的url,把sessionid添加倒url中response.encodeurl("**.jsp");

 

session的高级主题:session的持久化当一个session开始时,容器会为之创建一个session对象,但是如果又10000个人同时登录呢,这时就要把信息从内存中转移到文件系统中或者数据库中,当需要访问的时候再调用倒内存中,提高内存的利用率,也便于恢复数据(故障会丢失信息)。

从内存到文件系统活着数据库,采用了java语言的对象序列化技术,把对象从文件活着数据库中提取到内存中使用了java语言提供的对象反序列化技术。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics