zoukankan      html  css  js  c++  java
  • 分ip统计网站访问次数


    package web.listener; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionListener; import java.util.LinkedHashMap; import java.util.Map; @WebListener() public class AListener implements ServletContextListener, HttpSessionListener, HttpSessionAttributeListener { /* * 在服务启动时创建Map,保存到ServletContext * */ public void contextInitialized(ServletContextEvent sce) { //创建Map Map<String,Integer> map = new LinkedHashMap<String, Integer>(); //得到ServletContext ServletContext application = sce.getServletContext(); application.setAttribute("map",map); } public void contextDestroyed(ServletContextEvent sce) { } }
     1 package web.filter;
     2 
     3 import javax.servlet.*;
     4 import javax.servlet.annotation.WebFilter;
     5 import java.io.IOException;
     6 import java.util.Map;
     7 
     8 /*
     9 * 从application中获取Map
    10 * 从request中得到当前客户端的IP
    11 * 进行统计工作,结果保存到Map中
    12 * */
    13 @WebFilter(filterName = "AFilter",urlPatterns = "/*")
    14 public class AFilter implements Filter {
    15     private FilterConfig config;
    16     public void destroy() {
    17     }
    18 
    19     public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    20         /*
    21         * 1、得到application中的map
    22         * 2、从request中获取当前客户端的IP地址
    23         * 3、查看map中是否存在这个IP对应访问次数,如果存在,把次数+1再保存回去
    24         * 4、如果不存在这个IP,那么说明是第一次访问本站,设置访问次数为1
    25         * */
    26         /*
    27         * 1、得到application
    28         * */
    29         ServletContext app = config.getServletContext();
    30         Map<String,Integer> map = (Map<String,Integer>) app.getAttribute("map");
    31         /*
    32         * 2、得到客户端的ip地址
    33         * */
    34         String ip = req.getRemoteAddr();
    35         /*
    36         *3、进行判断
    37         * */
    38         if (map.containsKey(ip)) {
    39             int cnt = map.get(ip);
    40             map.put(ip,cnt+1);
    41         }else {
    42             map.put(ip,1);
    43         }
    44         app.setAttribute("map",map);
    45 
    46         chain.doFilter(req, resp);//肯定放行
    47     }
    48     /*
    49     * 在服务器启动时就会执行本方法,而且本方法只执行一次
    50     * */
    51     public void init(FilterConfig config) throws ServletException {
    52         this.config= config;
    53     }
    54 }
     1 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     2 <%--
     3   Created by IntelliJ IDEA.
     4   User: Mac
     5   Date: 13/09/2017
     6   Time: 12:37 PM
     7   To change this template use File | Settings | File Templates.
     8 --%>
     9 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    10 <html>
    11 <head>
    12     <title>Title</title>
    13 </head>
    14 <body>
    15 <h1>显示结果</h1>
    16 <table align="center" width="60%" border="1">
    17     <tr>
    18         <td>ip</td>
    19         <td>次数</td>
    20     </tr>
    21     <c:forEach items="${applicationScope.map}" var="entry">
    22     <tr>
    23         <td>${entry.key}</td>
    24         <td>${entry.value}</td>
    25     </tr>
    26     </c:forEach>
    27 </table>
    28 </body>
    29 </html>
  • 相关阅读:
    HDU2363 最短路+贪心
    stl-----map去重,排序,计数
    STL------sort三种比较算子定义
    栈------表达式求值
    踩水坑系列一
    第一周 动态规划Dynamic Programming(一)
    模拟递归回溯贪心专题入门
    HDU1013,1163 ,2035九余数定理 快速幂取模
    HDU1005 找规律 or 循环点 or 矩阵快速幂
    入门基础常识
  • 原文地址:https://www.cnblogs.com/gdwkong/p/7635545.html
Copyright © 2011-2022 走看看