实现网站在线访问计数器功能,网站的初始值设置为1000
(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 > |
本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1351934,如需转载请自行联系原作者