文档章节

Servlet 过滤器短时间恶意刷请求

目翟
 目翟
发布于 2013/12/30 13:33
字数 251
阅读 40
收藏 0
package com.wiker;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;

@WebFilter(urlPatterns={"/*"})
public class IpCountFilter implements Filter {

    private final static String sessionKey = "SESSION_IP_COUNT";
    private final static int maxRequest = 10;   //最大次数
    private final static int time=30000;       //时间段(毫秒)
    
    public void destroy() {
        // TODO Auto-generated method stub
        
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        System.out.println("进入过滤器");
        HttpServletRequest req = (HttpServletRequest) request;
        IpCount t = (IpCount) req.getSession().getAttribute(sessionKey);
        if(t == null){
            t = new IpCount();
            t.setFirstTime(System.currentTimeMillis());
            t.setTimes(1);
            req.getSession().setAttribute(sessionKey, t);
            System.out.println("第一次进入过滤器"+t.getTimes());
            chain.doFilter(request, response);
        }else{
            if(System.currentTimeMillis()-t.getFirstTime()<=time){
                if(t.getTimes()<=maxRequest){
                    t.setTimes(t.getTimes()+1);
                    req.getSession().setAttribute(sessionKey, t);
                    System.out.println("小于规定时间内的请求次数,放行1:"+t.getTimes());
                    chain.doFilter(request, response);
                }else{
                    System.out.println("超过了规定时间内的请求次数"+t.getTimes());
                    
                }
            }else{
                t.setFirstTime(System.currentTimeMillis());
                t.setTimes(1);
                req.getSession().setAttribute(sessionKey, t);
                System.out.println("小于规定时间内的请求次数,放行2:"+t.getTimes());
                chain.doFilter(request, response);
            }
        }
    }

    public void init(FilterConfig arg0)
            throws ServletException {
        // TODO Auto-generated method stub
        
    }
    
}
class IpCount{
    private long firstTime;
    private int times;
    public long getFirstTime() {
        return firstTime;
    }
    public void setFirstTime(long firstTime) {
        this.firstTime = firstTime;
    }
    public int getTimes() {
        return times;
    }
    public void setTimes(int times) {
        this.times = times;
    }
}



© 著作权归作者所有

共有 人打赏支持
目翟
粉丝 4
博文 25
码字总数 26183
作品 0
闸北
高级程序员
javaweb开发之Filter

一、简介 在Servlet2.3规范中定义了过滤器,它对servlet容器调用servlet的过程进行拦截,从而在servlet进行响应处理的前后实现一些特殊的功能。 过滤器实现了一个责任链的模式。多个过滤器形...

小米米儿小
2013/12/06
0
0
过滤器(Fileter)执行流程

Servlet过滤器的概念: Servlet过滤器是在 java Servlet 2.3 中定义的,它能够对Servlet容器中的请求和响应对象,进行检查和修改 Servlet过滤器并不会生成request和response对象,它只起到过...

狼行-狼行
2013/11/22
0
0
J2EE核心技术之Servlet详解

想必大家都知道J2EE核心技术是什么~~ 1.JSP (大多用于MVC中的是图层) 2.Servlet(大多用于MVC中的控制层) 3.JDBC(大多用于MVC的模型层) 那么我从中间给大家开始讲讲,什么是Servlet: ...

JavaOlder
2012/12/10
0
0
Servlet 3.0 新特性概述

Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入...

张超
2012/12/22
0
0
servlet/filter/listener/interceptor区别与联系

由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现 为什么struts1要用servlet,而struts2要用filter呢...

lzw_me
2014/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Sqoop 操作实例补充

导入指定字段和指定条件的行记录 # 指定导入的字段--columns <col,col,col…># 指定过滤条件--where <where clause># 设置切分的工作单元--split-by <column-name># 目标目录存在...

PeakFang-BOK
34分钟前
3
0
App store 侵权投诉

App Store Content Dispute 侵权投诉 https://www.apple.com/legal/internet-services/itunes/appstorenotices/#?lang=zh...

壹峰
37分钟前
1
0
教程:如何在window上安装Apache HTTP Server

Apache官网只提供 Apache HTTP Server 的源代码,不提供编译好的二进制文件。 不过我们还是可以从网络上找到其他人编译好的Apache HTTP Server。 首先,从 https://www.apachehaus.com/cgi-b...

Doxde
53分钟前
1
0
中国移动蔡谦:5G传输准备就绪

目前5G已成业界热议话题,在即将到来的万物互联时代,5G是非常关键的技术。且5G相比4G,业务场景多种多样,对5G承载网带来巨大挑战。5G传输,承载先行并不仅仅是一个口号。当前5G承载网的部署...

linux-tao
今天
4
0
维护“修理权”,苹果使用专有软件工具来修复MacBook Pro和iMac Pro

根据上月发给苹果授权服务提供商的一份文件,苹果公司正在使用新的专有软件诊断工具来修复MacBook Pros和iMac Pros,如果不用专有软件工具来修复关键部件,将会导致“系统失效和修复不完整”...

linuxCool
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部