客户端与服务器会话跟踪的三种方法

来源:互联网 发布:java内存泄露的原因 编辑:程序博客网 时间:2024/04/30 02:33

Web服务器使用Http协议。Http是无状态协议。Http的web服务器不能保持与客户端的关联。会话(session)定义为在一段时间内,单一客户与web服务器之间的一系列的交互。在一个会话中,跟踪请求之间的数据成为会话跟踪。

 

会话跟踪的三种方法:

1.使用隐藏域进行会话跟踪

 

2.使用cookie进行会话跟踪 cookie是小的文本文件,它在客户端的计算机的硬盘上存放键名与值。cookie是通过HTTP头中的指令从服务器端发送的,这种指令告诉浏览器使用特定的键值和与其关联的值创建cookie.如果浏览器已经有了该键名的cookie,则更新其值。然后,浏览器将cookie连同请求一起发送给同一个服务器。cookie具有日期限制,如果超过了该日期,将不把这些cookie发送给服务器。

     在javax.servlet.http.Cookie用于创建和处理cookie。

     Cookie(String name,String value):用于创建指定键名和值的cookie实例。

     getName():返回cookie的键名。

     getValue():返回cookie的值。

     setMaxAge(int age):指定cookie的最大生存时间,默认情况下为-1,表示cookie将保留到浏览器被关闭。如果将该值设置为0,表示删除cookie

     把cookie发送给浏览器,可以使用HttpServletResponse类中的addCookie()方法:如 response.addCookie(cookie);

     要从浏览器获得cookie,可以使用HttpServletRequest类中的getCookies()方法。

 

3.使用servlet API进行会话跟踪使用隐藏域和cookie都存在问题,因为他们都将数据发送给浏览器,这使得数据很不安全。另一方面,前两种方法只能传送字符串,不能传送对象。为了解决这些问题,我们可以使用javax.servlet.http.HttpSession接口,该接口提供一种方法,标识多于一页请求或多次访问web站点的用户,并且保存用户的信息。servelt容器使用该接口在Http客户和Http服务器之间创建一个会话。会话可以持续一段指定的时间,传送来自客户端的多于一次或一页的请求。一个请求通常对应一个多次访问WEB站点的用户。这种会话,可以跟踪大数据集。数据可以作为对象存储,并且由于数据时存储在服务器的,所以是安全的。

创建一个会话对象的方法:

HttpSession session=request.getSession(); HttpSession接口提供了很多方法存储和读取会话的数据,还可以操纵会话。 getAttribute(String name):返回与指定键值相同的对象,由于返回的是Object类型的数据,所以我们需要把Object类型强制转化为我们需要的类型。

setAttribue(String name,Object object)使用指定键名将对象与该会话绑定。如果一个具有同样键名的对象,就替代该对象。 getLastAccessedTime():long返回最后一次客户发送与会话相关的请求的事件,该时间是自1970年1月1日午夜起经过的毫秒数。 invalidate();终止会话,然后解开绑定到该会话的所有对象。 isNew() :判断当前会话是否是新创建的。

setMaxInactiveInterval(int interval):设置会话请求的持续时间,以秒为单位。负值表示会话永远不中止。

原创粉丝点击