代码之家  ›  专栏  ›  技术社区  ›  Dario

Java Servlet API在会话处理中的自定义ID

  •  2
  • Dario  · 技术社区  · 17 年前

    是否可以通过ServletAPI为HTTP会话分配自定义ID?

    我查看了所有关于会话处理的文档,但没有找到我需要的。

    这是一个项目的要求,所以如果不可能,我需要知道原因(或者它只能通过API提供?)。

    3 回复  |  直到 13 年前
        1
  •  4
  •   Kevin Hakanson    17 年前

    如果您使用的是Tomcat,则可以创建自定义会话管理器(请参阅 this discussion Session

        2
  •  2
  •   mcherm    17 年前

    servlet API不支持创建自己的cookie值。事实上,它不能保证会话是通过cookies来维护的。。。它特别指出,它们可以通过“URL重写”等机制进行维护。它确实保证以某种方式维护会话,这几乎需要某种唯一的ID,该ID被传递到浏览器并返回,但Servlet API中没有为Servlet代码提供机制来控制使用的值。我所知道的普通servlet容器(如Tomcat)也没有提供控制该值的方法。

        3
  •  1
  •   Community Mohan Dere    6 年前

    嗯……如果您有生成唯一ID的代码,您可以执行以下操作:

    /** 
     * The String key of the user id attribute.
     */
    public static final String USER_ID_KEY = "userIdKey";
    
    // Set the user attribute (createUniqueUserId's parameters and return type are up to you)
    httpSession.setAttribute(USER_ID_KEY, createUniqueUserId());
    
    // Retrieve the user attribute later
    httpSession.getAttribute(USER_ID_KEY);
    

    HttpSession接口还提供了一个getId()方法,该方法已记录在案 here (复制文档以供参考):

    public java.lang.String getId()

    返回包含唯一值的字符串 servlet容器和

    退货:a 指定标识符的字符串 分配给此会话的