Servlet過濾器實現網站訪問計數器功能

實現網站在線訪問計數器功能,網站的初始值設置爲1000html

wKiom1LWNNjhBuykAADDuwQ0B7A473.jpg

(1)建立CountFilter的類,實現javax。servlet.Filter接口,是一個過濾器對象,經過過濾器實現統計網站人數功能:java

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:web

<?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獲取計數器的值:app

<%@ 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>
相關文章
相關標籤/搜索