java-session

Session:
就是一个接口,一个会话用来维护一个客户端和服务器之前关联的一种技术
每个客户端都有自己的一个Session会话,Session会话经常用来把偶才能用户登录之后的信息

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

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

每个会话都有一个ID值,而且这个ID是唯一的
getId()得到Session会话的ID

public class createGetSession extends BaseServlet{
    protected void createOrGetSession(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        //创建和获取Session会话对象
        HttpSession session = req.getSession();
        //判断当前Session会话,是否是新创建出来的
        boolean isNew = session.isNew();
        //获取Session会话的唯一标识
        String id = session.getId();

        resp.getWriter().write("得到的Session它的id是" + id );
        resp.getWriter().write("这个Session是否是新创建的" + isNew);
    }

Session域中数据的存取:

 protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws IOException {
       req.getSession().setAttribute("key1","value1");
       System.out.println("已经往Session中保存了数据");
    }

    protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        Object attr = req.getSession().getAttribute("key1");
        resp.getWriter().write("从Session中获取出key1的数据是:" + attr);
    }

Session生命周期控制:
public void setMaxinactiveInterval(int interval) 设置Session的超时时间,超过指定的时长,Session就会被销毁

值为正数的时候,设定Session的超时时长
负数表示永不超时(极少使用)

public int getMaxinactivalInterval() 获取Session的超时时间

public void invalidate() 让当前Session会话马上超时无效

   protected void defaultLife(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        //获取了Session的默认超时时长
        int maxInactiveInterval = req.getSession().getMaxInactiveInterval();

        resp.getWriter().write("Session的默认超时时长为:" + maxInactiveInterval + "秒");
    }

Session的默认超时时长是半个小时

表示当前web工程创建出来的所有Session默认是20分钟 超时时长

<session-config>
    <session-timeout>20</session-timeout>
</session-config>

设置单个Session的超时时间

protected void life3(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        // 先获取Session对象
        HttpSession session = req.getSession();
        // 设置当前Session3秒后超时
        session.setMaxInactiveInterval(3);

        resp.getWriter().write("当前Session已经设置为3秒后超时");
    }

Session的超时指的是,客户端两次请求的最大间隔时长

浏览器和Session之间的关联的技术内幕:
session技术,底层是基于Cookie技术来实现的
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qtayu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值