多语言展示
当前在线:932今日阅读:126今日分享:42

Session技术详解

1) 获得session的方式(a) HttpSession session = request.getSession(); 当第一次调用此方法时,容器会先去获得从客户端发送过来的Cookie,从中取出jsessionid,若没有取到的话,容器会构造一个新的session对象并为之分配一个唯一的jsessionid,并将这个session对象放置在由容器维护的一个Map中(jsessionid,session对象引用),同时紧接着构造一个Cookie对象来存放jsessionid的值,格式如下:Cookie cookie = new Cookie('JSESSIONID','jsessionid的值'); 然后调用response.addCookie(cookie);将cookie放置在response中返回到客户端保存在当前浏览器中。当第二次以后去调用此方法时,容器就可以从客户端发送来的Cookie中获得jsessionid,然后从Map中取出原来构造的session对象。(b) HttpSession session = request.getSession(boolean create); create=true: 同 a) create=false: 当容器获取不到Cookie中的jsessionid时,它不会去构造一个新的session对象,此方法直接返回null。2) session的使用方式 a) 往session中存放信息session.setAttribute(key,value); b) 从session中获得信息 Object o = session.getAttribute(key); c) 将session中的信息删除 session.removeAttribute(key);3) session的特点 a) 一个浏览器对应一个session(一个浏览器中存放当前session的jsessionid) b) 在同一个浏览器中,一个session可以跨越多个请求,多个请求可以共享同一个session。若多个请求要共享的信息可以放置在session中。 c) session是依赖于Cookie的,若Cookie功能被屏蔽后,那么session就不好使用。 使用建议: 将信息尽量存放在request中,存放在session中的信息会占有系统资源的。4) session的失效方式 所谓失效: 容器会将session对象引用从Map中删除 a) session.invalidate() b) 关闭浏览器后,session在默认30分钟后会自动失效 c) 用户在页面上不作任何操作,默认也是在30分钟后会失效 d) 在web.xml中设置失效时间time(分钟)
推荐信息