实现 MyListener.java 类
在这一步中,你将学习如何实现 MyListener.java 类来跟踪主页的访问次数。
-
打开位于 ListenerProject/src/main/java/org/labex/listener 目录下的 MyListener.java 文件。
-
实现 MyListener 类,该类实现了 HttpSessionListener 接口。此接口提供了两个方法:sessionCreated() 和 sessionDestroyed()。
-
在 sessionCreated() 方法中,执行以下操作:
- 从
HttpSessionEvent 对象中获取 ServletContext。
- 从
ServletContext 中检索 "count" 属性。如果该属性为 null,则将其初始化为 1。否则,将计数加 1。
- 将更新后的 "count" 属性设置回
ServletContext。
-
在 sessionDestroyed() 方法中,执行以下操作:
- 从
HttpSessionEvent 对象中获取 ServletContext。
- 从
ServletContext 中检索 "count" 属性。如果计数大于 0,则将计数减 1。
- 将更新后的 "count" 属性设置回
ServletContext。
你的 MyListener.java 类应该如下所示:
package org.labex.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MyListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer count = (Integer) context.getAttribute("count");
if (count == null) {
count = 1;
} else {
count++;
}
context.setAttribute("count", count);
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer count = (Integer) context.getAttribute("count");
if (count!= null && count > 0) {
count--;
}
context.setAttribute("count", count);
}
}