Servlet中session的使用

本文详细介绍了Servlet中的Session概念,包括工作原理、常用API及其用法,通过示例代码和小案例阐述了如何设置、获取及管理Session,并强调了理解Session的工作原理对于学习的重要性。
摘要由CSDN通过智能技术生成


前言

这一篇主要介绍了servlet中的session以及一个session的小案例。


一、Session的概念

Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的HttpSession对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
下面画个图来看下session的工作原理:
在这里插入图片描述
所以对于session来说,不同的客户的数据,其实是通过一个key为JSSESIONID的cookie来区分的。

二、Session常用API

上图中我们已经看到了几个session相关的API,这里我们具体来说下用处:

  • request.getSession() :得到HttpSession对象,在我们设置或者是获取session中的数据时,我们都需要先得到这个对象。
  • session.setSession():设置session;比如,我们设置一个key为name的session,就可以这样写:session.setAttribute(“name”, “xxx”);
  • session.getSession():拿到session的值,这个很好理解,传入key值,就可以获取对应的value值。
    (这里需要说明的一点,session是一个域对象,可以被可以被多个请求共享,只要会话不断,就可以共享;
    同样是域对象的还有之前博客里的request和servletContext,他们之前的作用域的大小是不一样的,request的作用域最小,只在一次请求内;session次之,只要是同一个用户且session没有过期,都可以访问到;servletContext最大,是在一整个应用内有效)
  • session.getId():获取session的id值,通过这个值,我们可以看到,不同的客户端去访问同一个地址,它的session是不同的。这里有一张图,分别用Chrome游览器的普通窗口和无痕窗口来模拟两个不同的用户,我们在servlet中输出session的id:
    在这里插入图片描述
    (忽视图片中其他的字,这是我们案例中的例子。这里我们只观察,不同客户端去访问同一个url,我拿到的id值是不同的,这也印证了session的工作原理,解释了它为什么能为不同的用户提供各自的资源了。)
  • setMaxInactiveInterval():session过期时间,以秒为单位
  • session.incalidate():调用就强制销毁session

三、getSession的内部原理

上面讲解了API的作用,这里我们写个小演示代码:

//在demo1中,通过url传入的name,设置一个session
public class SessionDemo1 extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        resp.setContentType("text/html;charset=UTF-8");
        String name = req.getParameter("name");
        HttpSession session = req.getSession();
        session.setAttribute("name",name);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        this.doGet(req,resp);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值