关于JAVA中的会话管理

来源:互联网 发布:软件验收专家意见 编辑:程序博客网 时间:2024/05/22 15:01

在JAVAWEB 会话管理中 常用的两个技术是cookie技术和session技术,以下是一些常用的方法

   一:cookie技术:是一门客户端技术 通过应答头发送给浏览器,通知浏览器设置cookie头,通过new Cookie(String,String)创建Cookie对象,通过response.addCookie();将Cookie设置为头信息,获取时 可通过request.getCookie()  返回的是Cookie类型的数组,Cookie对常用的方法有setPath()、setMaxAge()、setValue()、getName()、getValue()

其中getValue()、setValue()获取和设置Cookie对象的值,setMaxAge()控制Cookie存放的时间,默认是负数,在浏览器关闭时销毁,正数以秒为单位,如果想令某个Cookie立即失效,需要找到name,path,domain都一样的Cookie,将它的MaxAge设为0即可,setPath()控制Cookie的作用范围。

二:session技术:是一门服务器端技术,同时也是四大域对象之一。

                生命周期:通过调用request.getSession()时,如果有,直接取得session对象,如果没有,则在内存中创建

                                                         销毁Session对象有3种访问:1、超过30分钟时间(可在web.xml中通过session-config标签下的session-timeout设置)未使用Session对象时自动销毁;2、服务器非正常   关闭时也会销毁;3、通过session.invalidate()显示销毁。当服务器正常关闭时,session对象会以文件的形式存放在work目录下,叫做session的钝化,再次打开服务器时,session又回到内存,叫做session的活化。

                           request.getSession()时服务器会根据Cookie中的JSESSIONID区别不同的用户,由于Cookie在浏览器关闭时会销毁,所以再次打开浏览器,session中的信息也会失效,解决方法是自己写个和此方法一样的Cookie对象,设置MaxAge,实现覆盖,比如:HttpSession session = request.getSession();Cookie c = new Cookie("JSESSIONID",session.getId());c.setPath(request.getContextPath());c.setMaxAge(1800);即可。

                   但是如果关闭了Cookie的服务,浏览器无法接收到新的Cookie,此方法就会失效,此时应该用URL重写。response.encodeURL()和response.encodeRedirectURL()分别进行一般的地址URL重写,以及重定向URL重写,但是在重写之前,一定要调用request.getSession()方法,先创建Session对象。


0 0