61-分IP统计访问次数

版权声明:本文为博主原创文章,未经博主允许不得转载。 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



猜你喜欢

转载自blog.csdn.net/qq_33781658/article/details/84454771
61-