分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>

 

转载于:https://www.cnblogs.com/gdwkong/p/7635545.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值