JavaWeb入门
一.概念
- Session是一个接口(HttpSession)
- Session是会话. 它是用来维护一个客户端和服务器之间关联的一种技术.
- 每个客户端都有自己的一个Session会话
- Session会话中, 我们经常用来保存用户登陆之后的信息.
二.Session应用
2.1 Session创建
// 第一次则Session则新创建, 否则获取Session对象
HttpSession session = req.getSession();
// 判断当前Session会话, 是否是新创建的
boolean isNew = session.isNew();
// 获取Session会话的唯一标识 id
String id = session.getId();
2.2 Session域
// 往Session域对象中存值
req.getSession().setAttribute("key", "value");
// 获取Session
Object attribute = req.getSession().getAttribute("session");
// 将获取的Session值返回给客户端
resp.getWrite().write("从Session中获取的session数据是:" + attribute);
// 将输出 '从Session中获取的session数据是:value'
2.3 Session生命周期
public void setMaxInactiveInterval(int interval)
指定在 servlet 容器使此会话失效之前客户端请求之间的时间间隔,以秒为单位。负数时间指示会话永远不会超时。
该方法是给指定页面设置sesssion的超时间隔时长
public void invalidate()
使此会话无效,然后取消对任何绑定到它的对象的绑定。
public int getMaxInactiveInterval()
返回 servlet 容器在客户端访问之间将使此会话保持打开状态的最大时间间隔,以秒为单位。在此间隔之后,servlet 容器将使会话无效。可使用 setMaxInactiveInterval
方法设置最大时间间隔。负数时间指示会话永远不会超时。
Session默认的超时时长是30分钟
如果修改默认值的话, 在web工程中修改web.xml
文件,
<session-config> <session-timeout>20</session-timeout> </session-config>
! 注意 ! : session的超时指的是: 客户端两次请求的最大间隔时长
如果期间再次发送请求, 则会重新计算间隔时长.
浏览器和Session的关联
Session的创建基于Cookie, 保存在Cookie的 JSESSION 中, 如果浏览器关闭, 虽然session没有超时, 但是cookie已经自动销毁, 所以重新打开需要重新创建Seesion