随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
一、创建过滤器需要使用javax.servlet.Filter接口,同时实现Filter接口的3个方法。
CountFilter:
package com.home.web;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;public class CountFilter implements Filter{// 记录来访数量private int count;@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {count++;HttpServletRequest req = (HttpServletRequest) request;ServletContext context = req.getSession().getServletContext();context.setAttribute("count", count);// 保存到ServletContext中chain.doFilter(request, response);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {String param = filterConfig.getInitParameter("count");// 获取初始值count = Integer.valueOf(param);}}
二、配置
<filter><filter-name>CountFilter</filter-name><filter-class>com.home.web.CountFilter</filter-class><init-param><param-name>count</param-name><param-value>5000</param-value></init-param></filter><filter-mapping><filter-name>CountFilter</filter-name><url-pattern>/index.jsp</url-pattern></filter-mapping>
index.jsp:
<%@page import="java.net.URLDecoder"%>
<%@ 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>欢迎光临,<br> 您是本站的第【<%=application.getAttribute("count")%>】为访客!
</body>
</html>