61-分IP統計訪問次數
阿新 • • 發佈:2018-11-29
分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