首页 > 代码库 > 监听器
监听器
监听器存在以下对象
监听者:XxxxxListener - 所的监听者是的接口。
被监听者 :任意对象都可以成为被监听者 - 早已经存在。
监听到的事件:XxxxEvent- 永远是一个具体类,用来放监听到的数据
里面都有一个方法叫getSource() – 返回的是监听到对象
在Javaweb中存在三个被监听对象: HttpServletRequest HttpSessoin ServletContext
监听者· | 被监听着 | 监听对象 |
HttpSessionActivationListener | HttpSession – 监听HttpSession活化和顿化。 | HttpSessionEvent |
HttpSessionAttributeListener | HttpSession – 监听session的属性变化的。S.setAttributee(); | HttpSessionBindingEvent |
HttpSessionBindingListener | HttpSession - 监听哪一个对象,绑定到了session上。S.setAtrri(name,User); | |
HttpSessionListener | HttpSesion – 监听sessioin创建销毁 | HttpSessionEvent |
ServletContextAttributeListener | ServletContext – 属性变化的 | |
ServletContextListener | servletContext 创建销毁 | |
ServletRequestListener - serlvetRequestAttibuteListner | Request -创建销毁 |
创建一个监听器:
1、创建类实现监听者接口
2、在web。xml中注册
1 <listener>2 <listener-class>cn.test.listener.MyLitener</listener-class>3 </listener>
Demo:实现统计在线人数和访问IP
1、MySessionLitener
1 public class MySessionLitener implements HttpSessionListener { 2 private Integer onLine=1; 3 public void sessionCreated(HttpSessionEvent se) { 4 System.out.println("有人访问了。。。。"); 5 HttpSession h1= se.getSession(); 6 HttpSession h2=(HttpSession) se.getSource(); 7 System.out.println("h1:"+h1.hashCode()); 8 System.out.println("h2:"+h2.hashCode()); 9 ServletContext sc= se.getSession().getServletContext();10 sc.setAttribute("OnLine", onLine++);11 List<HttpSession> list=(List<HttpSession>) sc.getAttribute("sessions");12 if(list==null)13 {14 list=new ArrayList<HttpSession>();15 sc.setAttribute("sessions", list);16 }17 list.add(h2);18 }19 20 public void sessionDestroyed(HttpSessionEvent arg0) {21 System.out.println("有人退出。。。");22 23 }24 25 }
2、IPFilter
1 public class IPFilter implements Filter{ 2 3 public void destroy() { 4 5 } 6 7 public void doFilter(ServletRequest request, ServletResponse response, 8 FilterChain chain) throws IOException, ServletException { 9 HttpServletRequest req=(HttpServletRequest) request;10 if(req.getAttribute("IP")==null)11 {12 req.getSession().setAttribute("IP", req.getRemoteAddr());13 }14 chain.doFilter(req, response);15 }16 17 public void init(FilterConfig filterConfig) throws ServletException {18 19 }20 21 }
3、jsp页面
1 在线人数:${OnLine }<br/>2 访问IP:<br/>3 <%4 List<HttpSession> list=(List<HttpSession>)application.getAttribute("sessions");5 for(HttpSession s:list)6 {7 out.println(s.getAttribute("IP")+"<br/>");8 }9 %>
监听器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。