3

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

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

4

2 回答 2

3

使用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,尽管我更喜欢正统的方法,因为您可以找到所有侦听器信息(绑定侦听器除外)在一个文件本身。

于 2013-05-14T05:51:27.727 回答
1

创建一个侦听器并将其添加到 web.xml 中,如下所示

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

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

于 2013-05-14T05:54:21.140 回答