Java Web监听器

Web监听器可以监听 客户端的请求服务端的操作
监听对象包括:ServletContext、HttpSession、ServletRequest,分别对应JSP中的Application、Session、Request对象。

Web监听器是Servlet规范中定义的一种特殊类;用于监听ServletContext、HttpSession、ServletRequest等域对象的创建与销毁事件;用于监听域对象的属性发生修改的事件;可以在事件发生前、发生后做一些必要的处理。


Web监听器的用途
1、统计在线人数和在线用户
2、系统启动时加载初始化信息(定时器、数据库连接等)
3、统计网站访问量

创建Web监听器
1、创建一个实现监听器接口的类

package com.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class FirstListener implements ServletContextListener {

	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("contextInitialized");
	}

	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("contextDestroyed");
	}

}

2、配置web.xml进行注册

<listener>
  <listener-class>com.listener.FirstListener</listener-class>
</listener>


监听器的启动顺序

一个web.xml下有多个监听器时 按注册顺序启动;
监听器、过滤器、Servlet加载顺序,优先级:监听器>过滤器>Servlet

监听器的分类
按监听对象划分:
1、用于监听应用程序环境对象( ServletContext)的事件监听器,实现ServletContextListener接口
      主要用途:做定时器、加载全局属性对象、创建数据库连接。

public class FirstListener implements ServletContextListener {

	public void contextInitialized(ServletContextEvent arg0) {
		String initparam = arg0.getServletContext().getInitParameter("initparam");
		System.out.println("contextInitialized: initparam = "+initparam);
	}
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("contextDestroyed");
	}

}


web.xml

<context-param>
  <param-name>initparam</param-name>
  <param-value>dong</param-value>
</context-param>




2、用于监听用户会话对象( HttpSession)的事件监听器
      主要用途:统计在线人数、记录访问日志;

package com.listener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MyHttpSessionListener implements HttpSessionListener {
        //用户第一次打开浏览器访问时创建
	public void sessionCreated(HttpSessionEvent arg0) {
		System.out.println("sessionCreated");
	}

	public void sessionDestroyed(HttpSessionEvent arg0) {
		System.out.println("sessionDestroyed");
	}
}

web.xml

<listener> <listener-class>com.listener.MyHttpSessionListener</listener-class></listener>

<session-config> <session-timeout>5</session-timeout></session-config>


3、用于监听请求消息对象( ServletRequest)的事件监听器
      主要用途:读取参数、记录访问历史;
     

package com.listener;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;

public class MyServletRequestListener implements ServletRequestListener {

	public void requestInitialized(ServletRequestEvent arg0) {
		String name = arg0.getServletRequest().getParameter("name");
		System.out.println("requestInitialized name ="+name);
	}
	//接收参数 在浏览器地址栏访问时加上参数  "?name=dong"
	public void requestDestroyed(ServletRequestEvent arg0) {
		System.out.println("requestDestroyed");
	}
}


web.xml

<listener>
  <listener-class>com.listener.MyServletRequestListener</listener-class>
</listener>



按监听事件划分:
1、监听域对象(ServletContext、HttpSession、ServletRequest)自身的创建与销毁的事件监听器
2、监听域对象中属性的增加和删除的事件监听器
3、监听绑定到HttpSession域中的某个对象的状态的事件监听器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值