Java中Session的使用

来源:互联网 发布:淘宝实时访客其他来源 编辑:程序博客网 时间:2024/06/16 20:19

       会话状态的维持有多种方法,可以使用Cookieshidden类型的表单域,或直接把状态信息加到URL中。还有Servlet本身提供了一个HttpSession接口来支持会话状态的维持。从服务器这端来看,每一个请求都是独立的,因此HTTP协议被认为是无状态协议,当用户在多个主页间切换时,服务器无法知道他的身份。利用Session,一个用户在多个主页间切换的时候就可以保存他的信息了。每个访问者从到达某个特定的主页,在个主页面间跳转,到最后离开为止的这段时间,都会单独获得并使用一个Session

Servlet中使用Session的过程如下:

1)使用HttpServletRequestgetSession方法得到当前存在的session,如果当前没有定义session,则创建一个新的session

2)写session变量。可以使用方法HttpSession.setAttributenamevalue)来向Session中存储一个信息。

3)读Session变量。可以使用方法HttpSession.getAttributename)来读取Session中的一个变量值,如果name是一个没有定义的变量,那么返回的是null。需要注意的是,从getAttribute读出的变量类型是Object,必须使用强制类型转换,比如:String name = (String) session.getAttribute("uname");

4)关闭session,当时用完session后,可以使用session.invalidate()方法关闭session。但是这并不是严格要求的。因为,Servlet引擎在一段时间之后,自动关闭seesion

 

SessionremoveAttributeinvalidate方法的区别:

session.removeAttribute()适用于清空指定的属性。

session.invalidate()是清除当前session的所有相关信息,session.invalidate()是让当前浏览器的session销毁,也就是一个session被销毁,比如用户登录后注销就用这个,因为注销意味着该用户session中的所有属性均失效。