【问题标题】:Session start event handler in jspjsp中的会话开始事件处理程序
【发布时间】:2013-05-08 07:26:38
【问题描述】:

在 asp.net 中,我们有 Global.asax,我们有 session_start 方法,在新用户第一次访问时运行。 jsp中也有类似的东西吗?

我得到了可以使用拦截器的建议,但我仍然对此感到困惑,拦截器如何捕获 session_start

【问题讨论】:

    标签: java jsp session jakarta-ee


    【解决方案1】:

    使用HttpSessionListener,这是一个接口,用于接收有关 HttpSession 生命周期更改的通知事件。

    覆盖其sessionCreated(HttpSessionEvent) 方法。示例代码:

    public class SessionListener implements HttpSessionListener {
    
      /**
      * Receives notification that a session has been created.
      */
      @Override
      public void sessionCreated(HttpSessionEvent se) {
           HttpSession session = se.getSession(); \\ handle to HttpSession Object
       System.out.println("sessionCreated");
      }
    
      /**
      * Receives notification that a session is about to be invalidated.
      */
      @Override
      public void sessionDestroyed(HttpSessionEvent se) {
    
      } 
    }
    

    将监听器类添加到您的部署描述符web.xml

     <listener>
        <listener-class>SessionListener</listener-class>
     </listener>
    

    正如@Luiggi 指出的,如果您使用Servlet 3.0 投诉容器,如Tomcat 7,您可以使用@WebListener 注释定义侦听器类,而不是在web.xml 中声明侦听器,尽管我更喜欢正统的方法因为您可以在一个文件本身中找到所有侦听器信息(绑定侦听器除外)。

    【讨论】:

    • 请注意,如果 OP 使用像 Tomcat 7 这样的 Servlet 3.0 特色 Web 应用程序服务器,他可以去掉 web.xml 中的 &lt;listener&gt; 配置,只需添加 @ @SessionListener 类中的 987654331@ 注释。
    【解决方案2】:

    创建一个监听器并像这样将它添加到 web.xml 中

    <listener>
            <listener-class>sessionMaintainance.sessionMaintain</listener-class>
        </listener>
    

    监听器是一个实现 HttpSessionListener 的类。它有两个方法 sessionCreated 和 sessionDestroyed。当你想要在创建会话时做任何事情而不是在 sessionCreated 方法中编写它时,当你想要在会话被销毁时做某事时,然后在 sessionDestroyed 方法中执行此操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多