版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33781658/article/details/84454771
分IP统计访问次数
我们可以统计一下所有IP
访问我们服务器的次数
这样就可以看出是不是有些人
正在攻击我们
当然,这只是比较简单的
比较基础的办法
但是学习一下当然是好的
我们先来一个ServletContextListener
public class MainListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext ctx = sce.getServletContext();
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
ctx.setAttribute("map", map);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
在context创建的时候,我们就存入一个map
然后我们来一个filter
public class MainFilter implements Filter {
private FilterConfig config;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
config = filterConfig;
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
ServletContext ctx = config.getServletContext();
Map<String, Integer> map = (Map<String, Integer>) ctx.getAttribute("map");
String addr = servletRequest.getRemoteAddr();
if (map.containsKey(addr)) {
Integer count = map.get(addr);
map.put(addr, count + 1);
} else {
map.put(addr, 1);
}
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}
在有请求的时候
我们就拿出map
然后存入count
<listener>
<listener-class>listener.MainListener</listener-class>
</listener>
<filter>
<filter-name>mainFilter</filter-name>
<filter-class>filter.MainFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>mainFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注册一下
然后我们写一下jsp页面
<body>
<%
Map<String, Integer> map = (Map<String, Integer>) application.getAttribute("map");
String content = map.toString();
%>
<%=content%>
</body>
这样就OK了
我们访问一下
127.0.0.1:8080/index.jsp