Java Session

Session是用于维持客户端与服务器之间连接的技术,每个客户端拥有独立的Session。通过getSession()创建或获取Session,isNew()判断是否新创建,getId()获取唯一ID。Session用于存储用户登录信息,超时默认30分钟,可在web.xml配置。setMaxInactiveInterval()可设置自定义超时,invalidate()使Session立即失效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

  1. Session 就一个接口(HttpSession)。
  2. Session它是用来维护一个客户端和服务器之间关联的一种技术。
  3. 每个客户端都有自己的一个 Session 会话。
  4. Session 会话中,我们经常用来保存用户登录之后的信息。

创建/获取Session对象

request.getSession()
第一次调用是:创建Session会话
之后调用都是:获取前面创建好的Session会话对象。

  • isNew(); 判断到底是不是刚创建出来的(新的)

    • true 表示刚创建
    • false 表示获取之前创建
  • getId();
    得到 Session的会话id值。
    每个会话都有一个ID 值。而且这个ID是唯一的。

Session域存取数据

protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.getSession().setAttribute("key", "value");
    resp.getWriter().write("向Session域中写入数据...");
}

protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    Object value = req.getSession().getAttribute("key");
    resp.getWriter().write("key:" + value);
}

Session存活控制

Session 默认的超时时间长为 30 分钟 。
Tomcat服务器的配置文件web.xml中默认有以下配置,它表示配置了TomCat服务器下所有Session的超时配置默认时长为:30分钟。

<session-config>
<session-timeout>30</session-timeout>
</session-config>

如果说。你希望你的web工程,默认的Session的超时时长为其他时长。你可以在你自己的web.xml 配置文件中做以上相同的配置。就可以修改你的web工程所有seession的默认超时时长。

  • 超时的概念
    session的超时指的是,客户端两次请求的最大间隔时长。
protected void defaultLife(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    int maxInactiveInterval = req.getSession().getMaxInactiveInterval();
    resp.getWriter().write("Session默认存活时间:" + maxInactiveInterval);//1800
}

protected void life3(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //获取Session
    HttpSession session = req.getSession();
    //设置3s超时
    session.setMaxInactiveInterval(3);

    resp.getWriter().write("已经设置当前Session 3秒后超时!");
}
protected void timeout(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //获取Session
    HttpSession session = req.getSession();
    //设置无效
    session.invalidate();

    resp.getWriter().write("已经设置当前Session立即超时!");
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值