Java:如何处理servlet中的多个会话

pet*_*ter 0 java session servlets java-ee session-cookies

我是Java EE的新手.我有一个网站,要求用户登录,并在用户登录后,我希望用户看到他/她自己的项目(例如:购物车).

所以这意味着我必须使用一个会话来完成它.但是我该如何处理多个会话?

例如,多个用户登录到系统以及同一个servlet?但是,我可以在一个servlet中保留多个会话吗?我是否记录下每一个?它是如何工作的?

有人可以举个例子吗?

Tom*_*icz 9

在servlet中,您可以访问HttpServletRequest它,为您提供getSession()方法.此方法返回会话对象(主要是键值映射),每个用户都不同.

如果你把东西放到那个地图上(比如购物车),你可以稍后检索它 - 但只有当同一个用户再次访问应用程序时(不一定是同一个servlet).

public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {

    HttpSession session = request.getSession();
    session.getAttribute("cart");
    //...
    session.setAttribute("cart", whateverYouWant);
Run Code Online (Sandbox Code Playgroud)

会话在servlet容器中维护,并按会话ID(通常是cookie)进行查找.你不必自己实现任何东西.

  • @ user1389813:是的,它适用于标签,但不一定跨越不同的浏览器窗口(当然不同的浏览器会有不同的会话).有几种针对会话cookie的攻击以及一些缓解它们的方法,例如HttpOnly标志.然而,这种会话处理方法最常用于各处. (2认同)