JSP监听器Listener

1 什么是web监听器?

  web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,比如ServletContext,HttpSession,ServletRequest的创建和销毁;可以在某些动作前后增加处理,实现监控

2 监听器常用的用途

  通常使用Web监听器做以下的内容:

       连接池

  统计在线人数,利用HttpSessionLisener

  加载初始化信息:利用ServletContextListener

  统计网站访问量

  实现访问监控

Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是: 做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。

过滤器(客户端请求时)拦截request和response,listener实在获取对象(session、request)之前做一些事务处理

扫描二维码关注公众号,回复: 3681456 查看本文章

web文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>listenerproject</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  	<servlet-name>DataSourceServlet</servlet-name>
  	<servlet-class>com.neusoft.servlet.DataSourceServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>DataSourceServlet</servlet-name>
  	<url-pattern>/DataSourceServlet</url-pattern>
  </servlet-mapping>
  
  
  <listener>
  	<listener-class>com.neusoft.listener.MyServletContextListener</listener-class>
  </listener>
  <listener>
  	<listener-class>com.neusoft.listener.SessionListener</listener-class>
  </listener>
</web-app>
计数:
public class SessionListener implements HttpSessionListener{
	int count=0;
	@Override
	public void sessionCreated(HttpSessionEvent event) {
		HttpSession session = event.getSession();
		count++;
		session.setAttribute("count", count);
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent arg0) {
		System.out.println("监听器销毁");
		
	}

}
public class MyServletContextListener implements ServletContextListener{

	@Override
	public void contextDestroyed(ServletContextEvent event) {
		System.out.println("监听器销毁");
	}

	@Override
	public void contextInitialized(ServletContextEvent event) {
		ServletContext  sc= event.getServletContext();
		BasicDataSource bds = new BasicDataSource();
		bds.setDriverClassName("com.mysql.jdbc.Driver");
		bds.setUrl("jdbc:mysql://localhost:3306/db214");
		bds.setUsername("root");
		bds.setPassword("root");
		sc.setAttribute("dataSource", bds);
		
	}
public class DataSourceServlet extends HttpServlet{
	private Connection connection;
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		ServletContext sc = getServletContext();
		BasicDataSource bds = (BasicDataSource) sc.getAttribute("dataSource");
		try {
			Connection  conn= bds.getConnection();
			PreparedStatement ps = conn.prepareStatement("select * from emp");
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getString(4)+"\t"
						+rs.getString(5)+"\t"+rs.getString(6)+"\t"+rs.getString(7)+"\t"+rs.getString(8)+"\t");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		HttpSession session = request.getSession();
		int count= (int) session.getAttribute("count");
		System.out.println("您是第"+count+"位访问者");
	}
	@Override
	protected void doPost(HttpServletRequest reqest, HttpServletResponse response) throws ServletException, IOException {
		doGet(reqest, response);
	}
}

猜你喜欢

转载自blog.csdn.net/thomasongq/article/details/82595838