在asp.net中,我们有Global.asax,我们有session_start方法,在新用户第一次访问时运行。 在jsp中是类似的东西吗?
我得到了可以使用Intercepter的建议,但我仍然对此感到困惑,intercepter如何捕获session_start
答案 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方法中这样做