在 asp.net 中,我们有 Global.asax,我们有 session_start 方法,在新用户第一次访问时运行。jsp中有类似的东西吗?
我得到了可以使用拦截器的建议,但我仍然对此感到困惑,拦截器如何捕获 session_start
在 asp.net 中,我们有 Global.asax,我们有 session_start 方法,在新用户第一次访问时运行。jsp中有类似的东西吗?
我得到了可以使用拦截器的建议,但我仍然对此感到困惑,拦截器如何捕获 session_start
使用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
,尽管我更喜欢正统的方法,因为您可以找到所有侦听器信息(绑定侦听器除外)在一个文件本身。
创建一个侦听器并将其添加到 web.xml 中,如下所示
<listener>
<listener-class>sessionMaintainance.sessionMaintain</listener-class>
</listener>
监听器是一个实现 HttpSessionListener 的类。它有两个方法 sessionCreated 和 sessionDestroyed。当你想要在创建会话时做任何事情而不是在 sessionCreated 方法中编写它并且当你想要在会话被销毁时做某事然后在 sessionDestroyed 方法中执行