实现网站在线访问计数器功能,网站的初始值设置为1000
<a href="http://s3.51cto.com/wyfs02/M02/11/98/wKiom1LWNNjhBuykAADDuwQ0B7A473.jpg" target="_blank"></a>
(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
<code>package</code> <code>com.lixiyu;</code>
<code>import</code> <code>java.io.IOException;</code>
<code>import</code> <code>javax.servlet.Filter;</code>
<code>import</code> <code>javax.servlet.FilterChain;</code>
<code>import</code> <code>javax.servlet.FilterConfig;</code>
<code>import</code> <code>javax.servlet.ServletContext;</code>
<code>import</code> <code>javax.servlet.ServletException;</code>
<code>import</code> <code>javax.servlet.ServletRequest;</code>
<code>import</code> <code>javax.servlet.ServletResponse;</code>
<code>import</code> <code>javax.servlet.http.HttpServletRequest;</code>
<code>/**</code>
<code> </code><code>* 统计过滤器</code>
<code> </code><code>* @author lixiyu</code>
<code> </code><code>*/</code>
<code>public</code> <code>class</code> <code>CountFilter </code><code>implements</code> <code>Filter {</code>
<code> </code><code>// 来访数量</code>
<code> </code><code>private</code> <code>int</code> <code>count;</code>
<code> </code>
<code> </code><code>@Override</code>
<code> </code><code>public</code> <code>void</code> <code>init(FilterConfig filterConfig) </code><code>throws</code> <code>ServletException {</code>
<code> </code><code>// 获取初始化参数</code>
<code> </code><code>String param = filterConfig.getInitParameter(</code><code>"count"</code><code>);</code>
<code> </code><code>// 将字符串转换为int</code>
<code> </code><code>count = Integer.valueOf(param);</code>
<code> </code><code>}</code>
<code> </code><code>public</code> <code>void</code> <code>doFilter(ServletRequest request, ServletResponse response,</code>
<code> </code><code>FilterChain chain) </code><code>throws</code> <code>IOException, ServletException {</code>
<code> </code><code>// 访问数量自增</code>
<code> </code><code>count ++;</code>
<code> </code><code>// 将ServletRequest转换成HttpServletRequest</code>
<code> </code><code>HttpServletRequest req =(HttpServletRequest)request;</code>
<code> </code><code>// 获取ServletContext</code>
<code> </code><code>ServletContext context =req.getSession().getServletContext();</code>
<code> </code><code>// 将来访数量值放入到ServletContext中</code>
<code> </code><code>context.setAttribute(</code><code>"count"</code><code>, count);</code>
<code> </code><code>// 向下传递过滤器</code>
<code> </code><code>chain.doFilter(request, response);</code>
<code> </code><code>public</code> <code>void</code> <code>destroy() {</code>
<code>}</code>
(2)配置已创建的CountFilter对象,设置初始值为1000,配置web.xml:
<code><?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"UTF-8"</code><code>?></code>
<code><</code><code>web-app</code> <code>xmlns:xsi</code><code>=</code><code>"http://www.w3.org/2001/XMLSchema-instance"</code>
<code> </code><code>xmlns</code><code>=</code><code>"http://java.sun.com/xml/ns/javaee"</code> <code>xmlns:web</code><code>=</code><code>"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</code>
<code> </code><code>xsi:schemaLocation</code><code>=</code><code>"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</code>
<code> </code><code>id</code><code>=</code><code>"WebApp_ID"</code> <code>version</code><code>=</code><code>"2.5"</code><code>></code>
<code> </code><code><</code><code>filter</code><code>></code>
<code> </code><code><</code><code>filter-name</code><code>>CountFilter</</code><code>filter-name</code><code>></code>
<code> </code><code><</code><code>filter-class</code><code>>com.lixiyu.CountFilter</</code><code>filter-class</code><code>></code>
<code> </code><code><</code><code>init-param</code><code>></code>
<code> </code><code><</code><code>param-name</code><code>>count</</code><code>param-name</code><code>></code>
<code> </code><code><</code><code>param-value</code><code>>1000</</code><code>param-value</code><code>></code>
<code> </code><code></</code><code>init-param</code><code>></code>
<code> </code><code></</code><code>filter</code><code>></code>
<code> </code><code><</code><code>filter-mapping</code><code>></code>
<code> </code><code><</code><code>url-pattern</code><code>>/index.jsp</</code><code>url-pattern</code><code>></code>
<code> </code><code></</code><code>filter-mapping</code><code>></code>
<code></</code><code>web-app</code><code>></code>
(3)创建程序首页index.jsp,在该页面通过JSP内置对象Application获取计数器的值:
<code><%@ page language="java" contentType="text/html; charset=UTF-8"</code>
<code> </code><code>pageEncoding="UTF-8"%></code>
<code><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></code>
<code><</code><code>html</code><code>></code>
<code><</code><code>head</code><code>></code>
<code><</code><code>meta</code> <code>http-equiv</code><code>=</code><code>"Content-Type"</code> <code>content</code><code>=</code><code>"text/html; charset=UTF-8"</code><code>></code>
<code><</code><code>title</code><code>>人数统计</</code><code>title</code><code>></code>
<code></</code><code>head</code><code>></code>
<code><</code><code>body</code><code>></code>
<code> </code><code><</code><code>h2</code><code>></code>
<code> </code><code>欢迎光临,<</code><code>br</code><code>></code>
<code> </code><code>您是本站的第【</code>
<code> </code><code><%=application.getAttribute("count") %></code>
<code> </code><code>】位访客!</code>
<code> </code><code></</code><code>h2</code><code>></code>
<code></</code><code>body</code><code>></code>
<code></</code><code>html</code><code>></code>
本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1351934,如需转载请自行联系原作者