统计ip地址访问量

jsp:代码如下

  <body>
    <table align="center" border="1" width="70%">
    <tr>
    <th>IP</th>
    <th>访问的次数</th>
    </tr>
    <c:forEach items="${ applicationScope.map}" var="entry">
    <tr>
    <th>${entry.key }</th>
   <th>${entry.value }</th> 
    </tr>
    </c:forEach>
    

fliter的代码如下:

package cn.edu.nsu.filter;


import java.io.IOException;
import java.util.Map;


import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


public class classFilter implements Filter {//现在xml中进行配置
private ServletContext application;
@Override//在服务器启动之后调用
public void destroy() {//生命周期方法在关闭时调用对非内存资源进行释放
// System.out.println("我要死了,抢救一下吧,我觉得我还有救,试一下吧,不行的话换个医生再试试?");
}


@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {//每次过滤时都会执行该方法
// System.out.println("你输出了算我输");
Map<String, Integer> map=(Map<String, Integer>) application.getAttribute("map");//得到map对象
String IP=arg0.getLocalAddr();//得到访问的ip地址
if(map.containsKey(IP)){//判断是否包涵此ip地址
Integer value=map.get(IP);
map.put(IP, value+1);//若包含value值加一
}else {
map.put(IP, 1);//不包含给定默认值1
}
application.setAttribute("map", map);
arg2.doFilter(arg0, arg1);//放行,让程序进行servlet后面的代码

}


@Override//在服务器销毁之前调用
public void init(FilterConfig arg0) throws ServletException {//生命周期方法在启动时调用用来进行初始化
//filterConfig和servletConfig及其的类似方法差不多
//最主要的是获得application对象
// System.out.println("我想,我是不是来了");
application=arg0.getServletContext();//得到servletContext对象,保存到当前的类中
//拦截的四种方式
//1 请求 request//默认拦截他
//2 转发 forward
//3 包含 include
//4 错误 error
//在xml中进行如下配置<dispatcher>将上面中的一个改为大写就会拦截该对象</dispatcher>
}


}



listener的代码如下:

package cn.edu.nsu.listener;


import java.util.LinkedHashMap;
import java.util.Map;


import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;


public class listener implements ServletContextListener {
    public void contextInitialized(ServletContextEvent arg0) {
        Map<String, Integer> map=new LinkedHashMap<String, Integer>();//设置map对象
        ServletContext application=arg0.getServletContext();//通过ServletContextEvent拿到ServletContext对象
        application.setAttribute("map", map);//将map对象保存到ServletContext域中
    }


    public void contextDestroyed(ServletContextEvent arg0) {
        
    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值