实现 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);
}
}