實作網站線上通路計數器功能,網站的初始值設定為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,如需轉載請自行聯系原作者