`

Filter 过滤器学习 , 过滤IP

 
阅读更多

 

	<!-- 过滤IP -->
     <filter>
         <filter-name>IPFilter</filter-name>
         <filter-class>com.filter.IPFilter</filter-class>
         <init-param>
             <param-name>IPList</param-name>
             <param-value>127.0.0.10,192.1.0.11</param-value>
         </init-param>
         <init-param>
			<param-name>ForbidPath</param-name>
			<param-value>/domeTest2</param-value>
		</init-param>
     </filter>
     <!-- 配置过滤器的映射路径 -->
     <filter-mapping>
         <filter-name>IPFilter</filter-name>
         <url-pattern>/*</url-pattern>
    </filter-mapping>
	
	<!--End 过滤IP -->

 

package com.filter;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

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.http.HttpServletRequest;

public class IPFilter implements Filter{
	private static List<String> ipList = new ArrayList<String>();
	private static String forbidPath = "";//设置权限的路径
	
	@Override
	public void init(FilterConfig config) throws ServletException {
		System.out.println("Init~~~~~~~~~");
		String ips = config.getInitParameter("IPList");
		System.out.println("通行IP"+ips);
		String[] ipArray = ips.split(",");
		if(ipArray != null){
			for(int i = 0; i < ipArray.length; i++){
				ipList.add(ipArray[i]);
			}
		}
		forbidPath = config.getInitParameter("ForbidPath");
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		System.out.println("DoFilter~~~~~~~~~");
		HttpServletRequest httpRequest = (HttpServletRequest)request;
		String uri = httpRequest.getRequestURI();
		if(uri.startsWith(forbidPath)){
			String ip = httpRequest.getRemoteAddr();
			System.out.println("来访IP:"+ip);
			if(this.ipList.indexOf(ip) == -1){
				response.setContentType("text/html;charset=utf-8");
				PrintWriter out = response.getWriter();
				out.println("这个IP:【"+ip+"】无访问权限");
				out.flush();
				out.close();
				return;
			}
		}
	}
	
	@Override
	public void destroy() {
		System.out.println("Destroy~~~~~~~~");
	}
}

 

分享到:
评论

相关推荐

    myAutoLoginWeb.rar JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤

    JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤JavaWeb-过滤器Filter...

    filter过滤器流程及中文乱码解决和客户端IP地址控制

    【filter过滤器流程】 在Java Web开发中,Filter(过滤器)是用于处理HTTP请求和响应的重要组件。它遵循Servlet规范中的Filter接口,允许开发者在请求到达目标Servlet或JSP之前以及响应离开Servlet之后进行拦截和...

    Springboot过滤器禁止ip频繁访问功能实现

    "Springboot过滤器禁止ip频繁访问功能实现" Springboot过滤器禁止ip频繁访问功能实现是指在Springboot项目中,通过编写一个过滤器来限制ip频繁访问的功能实现。这项功能可以防止恶意ip的访问,保护服务器的安全。 ...

    15_尚硅谷_Filter过滤器_王振国 - 课堂笔记1

    Filter 过滤器详解 Filter 过滤器是 JavaWeb 的三大组件之一,另外两个组件是 Servlet 程序和 Listener 监听器。Filter 过滤器是一个接口,它的作用是拦截请求,过滤响应。常见的应用场景有权限检查、日记操作、...

    关于ip的过滤器 spring security例子

    要创建一个IP过滤器,我们首先要定义一个实现了`Filter`接口的类。这个类通常会检查每个请求的源IP地址,并根据预定义的规则决定是否允许请求通过。以下是一个简单的IP过滤器示例: ```java import javax.servlet....

    过滤器源代码

    在IT领域,过滤器(Filter)是一种常见的设计模式,它被广泛应用于网络数据包处理、Web应用程序、日志记录等多个场景。在这个特定的案例中,我们关注的是一个用于过滤特定IP地址范围和用户名的过滤器源代码。这个...

    IP过滤的源码

    标题 "IP过滤的源码" 暗示我们即将探讨的是与网络数据包过滤相关的技术,特别是基于NDIS(Network Driver Interface Specification)的实现。NDIS是微软操作系统中用于网络驱动程序开发的一种接口,它允许驱动程序在...

    JavaWeb中过滤器的三个小案例

    通过实现一个过滤器,我们可以记录每个IP地址访问网站的次数。首先,我们需要创建一个实现了javax.servlet.Filter接口的类,并重写doFilter方法。在doFilter方法中,我们可以通过HttpServletRequest对象获取客户端的...

    关于过滤器和监听器的使用模板

    2. **安全控制**:如标题所述,可以通过过滤器限制特定IP地址对Web应用的访问。 3. **字符编码转换**:确保请求和响应的编码一致,防止乱码问题。 4. **日志记录**:记录用户请求,便于分析和调试。 5. **性能优化**...

    IP地址段的过滤,限制ip,限制主机访问

    3. **Java Web过滤器(Filter)**:在Java Web应用中,Filter是Servlet规范的一部分,用于拦截HTTP请求和响应。我们可以通过自定义Filter实现IP过滤,如在`doFilter()`方法中检查请求的IP地址。 4. **Web应用配置**...

    Omnipeek(wildpackets)抓包:过滤器设置和数据包分析

    Omnipeek(WildPackets)抓包:过滤器设置和数据包分析 Omnipeek 是一种功能强大的抓包工具,能够帮助用户捕获和分析网络数据包。在 C/S 或 B/S 架构的系统级测试中,Omnipeek 可以用于验证客户端是否发送了连接...

    MINA 协议解码过滤器

    在MINA中,过滤器(Filter)是实现业务逻辑和协议解码的关键组件。过滤器链的概念是MINA框架的核心特性之一,它允许开发者插入自定义的过滤器来处理进来的数据或者发送出去的数据。协议解码过滤器...

    Laravel开发-laravel-ip-filter

    `laravel-ip-filter`可能是这样一个专门为Laravel设计的扩展包,用于实现IP过滤功能。本篇文章将深入探讨如何在Laravel项目中实现IP过滤,并介绍与`laravel-ip-filter`相关的知识点。 首先,IP过滤的基本概念是通过...

    4.5.1 捕获过滤器 - Wireshark 数据包分析实战(第 3 版) - 知乎书店1

    Wireshark是一款强大的网络封包分析软件,广泛用于网络故障排查、网络安全分析和性能优化等场景。在Wireshark中,捕获过滤器是至关...通过深入学习BPF语法和过滤器的各种选项,可以进一步增强分析能力,提高工作效率。

    过滤器计数

    在JAVAEE web开发中,过滤器(Filter)是一种强大的工具,用于在请求被处理之前或之后执行特定的任务。"过滤器计数"是指利用过滤器技术来实现对页面访问次数的统计。在这个场景中,我们关注的是`ACountFilter`,这是...

    Web应用与开发作业

    设计一个简单的IP地址过滤器,根据用户的IP地址进行网站的访问控制。例如:禁止IP地址处在192.168.2网段的用户对网站的访问。 3、Listener的理解和应用 通过监听器记录在线用户的姓名,在页面进行用户姓名的显示,...

    ansible-ipaddr-filter:Ansible ipaddr() 过滤器插件的使用示例

    ansible-ipaddr-过滤器 此文件显示了在 Jinja2 模板中使用ipaddr() Ansible 过滤器插件的一些示例。 该文件是使用 Ansible 模板生成的,源文件可在 GitHub 上找到。 ipaddr()是一个过滤器插件,旨在为 Ansible jinja...

    wireshark过滤器

    此外,通过查看过滤器表达式的帮助(`Help` &gt; `Filter Expressions`),用户可以查找可用的协议字段和构建复杂的过滤规则。 对于源码和工具相关的知识点,Wireshark因其开源特性,允许开发者深入研究其内部工作原理...

    留言本程序中的过滤器

    虽然标题和描述中只提到了三个过滤器,但在实际应用中,留言本程序可能还包括其他过滤器,如URL过滤器(防止恶意链接),HTML标签过滤器(防止XSS攻击),以及IP地址过滤器(阻止特定IP的留言)等。 在实现这些...

    PHP filter_var 验证邮箱、IP、URL的格式

    验证IP地址可以使用`FILTER_VALIDATE_IP`过滤器,你可以指定IPv4或IPv6的验证规则: ```php $ip = '192.168.1.1'; if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === false) { echo "IPv4地址格式不...

Global site tag (gtag.js) - Google Analytics