//创建Filter的实现类
package filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@WebFilter(filterName = "Filter1")
public class Filter1 implements Filter {
private ServletContext servletContext;
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
//获取http协议
HttpServletRequest req1 = (HttpServletRequest) req;
//获取IP地址
String remoteAddr = req1.getRemoteAddr();
//获取集合
Map<String, Integer> map =( Map<String, Integer>) servletContext.getAttribute("map");
//获取访问次数
Integer integer = map.get(remoteAddr);
if (integer==null){
integer=1;
}else{
integer++;
}
//重新将数据放到集合中
map.put(remoteAddr, integer);
//放在域中
servletContext.setAttribute("map",map);
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
System.out.println("创建初始化");
//创建全局域对象
servletContext = config.getServletContext();
//创建map集合 线程安全
Map<String, Integer> map = Collections.synchronizedMap(new HashMap<String, Integer>());
//将集合放在全局域中
servletContext.setAttribute("map",map);
}
}
//注册过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<filter>
<filter-name>filter1</filter-name>
<filter-class>filter.Filter1</filter-class>
</filter>
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>/index.jsp</url-pattern>
</filter-mapping>
</web-app>