Java Web 中的监听器
监听器的分三类
1:Web项目应用域监听
a:ServletContext应用域监听
⑴实现ServletContextListener接口
⑵contextInitialized()方法,这方法代表Servlet容器启动时,触发该方法
⑶contextDestroyed()方法,这方法代表Servlet容器关闭时,触发该方法
实例:
contextInitialized(ServletContextEvent sce) {
application=sce.getServletContext();
driver=application.getInitParameter("driver");
url=application.getInitParameter("url");
user=application.getInitParameter("user");
password=application.getInitParameter("password");
connection=null;
(Exception e2) {
b:HttpSession应用域监听
⑴实现HttpSessionListener接口
⑵sessionCreated()方法,这方法代表Session创建时,触发该方法
⑶sessionDestroyed()方法,这方法代表Session销毁时,触发该方法
实例:
public void sessionCreated(HttpSessionEvent event) {
session=event.getSession();
application=session.getServletContext();
sessionid=session.getId();
username=(String) session.getAttribute("username");
"游客":username;
online=(LinkedHashMap)application.getAttribute("online");//
LinkedHashMap继承与HashMap,但为有序封装
LinkedHashMap();
username);
online);
public void
sessionDestroyed(HttpSessionEvent event) {
session=event.getSession();
application=session.getServletContext();
sessionid=session.getId();
online=(LinkedHashMap)application.getAttribute("online");//
LinkedHashMap继承与HashMap,但为有序封装
online);
c:ServletRequest应用域监听
⑴实现ServletRequest接口
⑵requestInitialized()方法,这方法代表request请求激活时,触发该方法
⑶requestDestroyed()方法,这方法代表request请求死亡时,触发该方法
实例:
public void requestDestroyed(ServletRequestEvent event) {
(HttpServletRequest) event
request.getSession();
session.getAttribute("username");
"游客" : username;
session.getId();
request.getRemoteAddr();
request.getRequestURI();
UserInfo();
+ username);
+ username);
}
2:应用域属性监听
每一个域都有自己的属性监听,如ServletContextAttributeL
a:attributeAdded()方法,这方法代表该域中添加了一个值时,触发该方法
b:attributeRemoved()方法,这方法代表该域中删除了一个值时,触发该方法
c:attributeReplaced()方法,这方法代表该域中有一个值被替换了时,触发该方法
实例:
package cn.ouyang.lintener.uitls;
import
javax.servlet.ServletContext;
import javax.servlet.ServletContextAttributeE
import javax.servlet.ServletContextAttributeL
public class MyServletContextAttribut
ServletContextAttributeL
attributeAdded(ServletContextAttributeE
application=event.getServletContext();
attributeRemoved(ServletContextAttributeE
application=event.getServletContext();
attributeReplaced(ServletContextAttributeE
application=event.getServletContext();
}
3:感知Session监听
a:HttpSessionBindingListen
⑴在需要监听的实体类实现HttpSessionBindingListen
⑵重写valueBound()方法,这方法是在当该实体类被放到Session中时,触发该方法
⑶重写valueUnbound()方法,这方法是在当该实体类从Session中被移除时,触发该方法
b:HttpSessionActivationLis
⑴在需要监听的实体类实现HttpSessionActivationLis
⑵重写sessionWillPassivate()方法,这方法是在当该实体类被序列化时,触发该方法
⑶重写sessionDidActivate()方法,这方法是在当该实体类被反序列化时,触发该方法
实例代码:
package com.ouyang.listener.entity;
import java.io.Serializable;
import
javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListen
import
com.ouyang.listener.utils.doCount;
public class UserInfo implements
HttpSessionBindingListen
private static final long
serialVersionUID = 1L;
public void
valueBound(HttpSessionBindingEvent event) {
doCount.onlineCount);
event) {
doCount.onlineCount);
}
package com.ouyang.listener.utils;
import java.util.LinkedHashMap;
import java.util.Map;
import
com.ouyang.listener.entity.UserInfo;
public class doCount {
LinkedHashMap继承与HashMap,但为有序封装
}
-----> >> 结束
注:部分内容为转载,出处请百度搜索--->>>南昌奥斯科技