(1)创建CountFilter的类,实现javax。servlet.Filter接口,是一个过滤器对象,通过过滤器实现统计网站人数功能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | package com.lixiyu;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;/** * 统计过滤器 * @author lixiyu */public class CountFilter implements Filter { // 来访数量 private int count; @Override public void init(FilterConfig filterConfig) throws ServletException { // 获取初始化参数 String param = filterConfig.getInitParameter("count"); // 将字符串转换为int count = Integer.valueOf(param); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 访问数量自增 count ++; // 将ServletRequest转换成HttpServletRequest HttpServletRequest req =(HttpServletRequest)request; // 获取ServletContext ServletContext context =req.getSession().getServletContext(); // 将来访数量值放入到ServletContext中 context.setAttribute("count", count); // 向下传递过滤器 chain.doFilter(request, response); } @Override public void destroy() { }} |
(2)配置已创建的CountFilter对象,设置初始值为1000,配置web.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <filter> <filter-name>CountFilter</filter-name> <filter-class>com.lixiyu.CountFilter</filter-class> <init-param> <param-name>count</param-name> <param-value>1000</param-value> </init-param> </filter> <filter-mapping> <filter-name>CountFilter</filter-name> <url-pattern>/index.jsp</url-pattern> </filter-mapping></web-app> |
(3)创建程序首页index.jsp,在该页面通过JSP内置对象Application获取计数器的值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>人数统计</title></head><body> <h2> 欢迎光临,<br> 您是本站的第【 <%=application.getAttribute("count") %> 】位访客! </h2></body></html> |


