jsp中的会话启动事件处理程序

时间:2013-05-14 05:49:59

标签: java jsp session java-ee

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

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

2 个答案:

答案 0 :(得分: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中声明监听器虽然我更喜欢正统的方法,因为你可以在一个文件中找到所有的监听器信息(除了绑定监听器)。

答案 1 :(得分:1)

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

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

监听器是一个实现HttpSessionListener的类。它有两个方法sessionCreated和sessionDestroyed。当你想要在创建会话时做任何事情而不是在sessionCreated方法中写它时,当你想要在会话被销毁时做某事时,那么在sessionDestroyed方法中这样做