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.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class ChinaFilter implements Filter
{
String encoding="UTF-8";
String []words;
public void destroy()
{
encoding=null;
words=null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filter)
throws IOException, ServletException
{
System.out.println("开始过滤:"+encoding);
request.setCharacterEncoding(encoding);
Request req = new Request((HttpServletRequest)request);
response.setCharacterEncoding(encoding);
System.out.println("结束过滤:"+encoding);
filter.doFilter(req, response);
}
public void init(FilterConfig filter)
throws ServletException
{
String getEncoding = filter.getInitParameter("encoding");
if(null!=getEncoding && "".equals(getEncoding))
{
this.encoding = getEncoding;
}
words = new String[]{"混蛋","笨蛋"};
}
private String Filter(String param)
{
if(null!=words && words.length>0)
{
for (int i = 0; i < words.length; i++)
{
param=param.replaceAll(words[i], "****");
}
}
return param;
}
class Request extends HttpServletRequestWrapper
{
protected Request(HttpServletRequest request)
{
super(request);
}
public String getParameter(String name)
{
String value=super.getParameter(name);
if(null!=value)
{
return Filter(value);
}
return null;
}
public String[] getParameterValues(String name)
{
String[] values = super.getParameterValues(name);
if(null!=values && values.length>0)
{
for (int i = 0; i < values.length; i++)
{
values[i]=Filter(values[i]);
}
return values;
}
return null;
}
}
}
web.xml
<filter>
<filter-name>filter</filter-name>
<filter-class>filter.ChinaFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
- **说明**: 当过滤器堵塞严重时,旁通阀会被打开,使流体绕过过滤器继续流动,防止系统压力过高而损坏其他部件。这种设计确保了系统的连续运行,同时提供了及时清理或更换过滤器的机会。 ##### 5. 双筒过滤器 (p1:...
布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。在Go语言中实现一个简单的布隆过滤器可以帮助我们高效地处理大数据集,尤其是在内存有限的情况下。以下是对这个主题的详细...
这一个过程就是过滤器要做的:你想访问这个网站,但是要把你过滤一遍,看你是否有相应的权限,再做出相应的响应。 因此在本次实战中,就要求当用户访问我们的主页面的时候,需要用过滤器验证一下其是否登录过,...
一个过滤器可以被应用于多个URL模式,也可以有多个过滤器应用于同一个URL模式,这取决于`web.xml`或注解的配置。 7. **Filter的异常处理** 在`doFilter()`方法中,如果抛出未捕获的异常,容器会自动调用`destroy...
要创建一个过滤器,首先需要编写一个实现`Filter`接口的Java类,并重写`doFilter()`方法。然后在`web.xml`配置文件中指定过滤器的有效路径,使得当请求匹配到这些路径时,过滤器会被触发。`doFilter()`方法中有三个...
布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。在Java开发中,特别是在处理大数据、内存限制或需要快速查询是否存在某个元素的场景下,布隆过滤器是一个...
布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它是由 Burton Howard Bloom 在1970年提出的,主要应用于大数据存储和检索,尤其在数据库、缓存系统和网络搜索等领域有广泛...
做成dll可以在很多场合使用,如自己写爬虫,要判断一个url是否已经访问过,判断一个单词是否在某个字典内,当集合很大的时候,用布隆过滤器很有优势,不过使用前,请了解它的优缺点(缺点是有一定的误判率)
本过滤器将未压缩的视频流RGB32编码为H264格式,将未压缩的音频流PCM编码为AAC格式,写入MP4文件。有2个输入引脚:视频引脚和音频引脚。 参见本过滤器的介绍文章:...
过滤器验证用户是否已经登录 在基于 JSP 页面系统设计开发中,经常有一批页面需要对用户的身份进行验证,只有合法的用户才可以访问这些页面。为了解决 JSP 页面用户身份验证的问题,可以使用 Servlet 过滤器对 JSP ...
布隆过滤器是一种概率数据结构,用于判断一个元素是否可能在一个集合中存在。它通过使用位数组和几个独立的哈希函数来实现,具有高效、节省空间的特点,但可能会产生假阳性错误,即误判一个不在集合中的元素为在集合...
每个filter元素定义一个过滤器,filter-mapping元素指定这个过滤器应用到哪些URL。通过这种方式,我们可以构建出层次化的过滤链,请求会依次经过这些过滤器。 此外,Servlet 3.0及以上版本提供了注解驱动的过滤器...
布隆过滤器是一种高效的空间节省的数据结构,用于判断一个元素是否可能在一个集合中,但可能会产生一定的误判率。它由一个很长的二进制向量和多个独立的哈希函数组成。布隆过滤器的基本原理是,当一个元素被添加到...
本文将讲解 XSS 过滤器绕过技术的四个方面:本地搭建环境、XSS payload 测试、自动化工具测试和关注最新 HTML 等内容。 本地搭建环境 在 Web 程序中找到过滤的函数,然后拷贝到本地环境,搭建完成。通过本地搭建...
本示例中的`URLfilter`类就是一个简单的过滤器,它的主要目的是防止SQL注入攻击,这是一种常见的恶意攻击手段,攻击者试图通过输入恶意SQL语句来获取未经授权的数据或者破坏数据库。 SQL注入攻击通常是由于应用程序...
我们可以创建一个过滤器,将这两个ID添加到列表中。具体配置过程如下: 1. **初始化过滤器配置结构体:** - 设置过滤器的工作模式为列表模式。 - 设置过滤器的规模,比如32位ID。 2. **添加报文ID:** - 将0x...
布隆过滤器,大家学过数据结构的应该都清楚,一般的字典树要实现嵌入和查找都内存的消耗非常大,布隆过滤器有BloomFilter,string, BKDRHash, APHash, DJBHash> bf五个参数你要查找的元素个数,查找元素类型,三个...
在Web开发中,URL参数值过滤器("url参数值过滤器")是一个重要的组件,主要负责处理HTTP请求中的URL参数。过滤器是Java Servlet技术的一部分,它允许开发者在请求到达目标Servlet或JSP之前对请求进行预处理,或者在...
FilterChainProxy会按顺序来调用这些filter,使这些filter能享用Spring Ioc的功能, CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON 定义url比较前先转为小写 PATTERN_TYPE_APACHE_ANT 定义使用Apache ant的匹配模式
使用过滤器的一个关键步骤是理解`Filter`接口的工作原理。每个过滤器都有几个重要的方法: - `return true` from `filterRowKey`:如果过滤器确定整个行都不需要,则可以立即跳过。 - `filterAllRemaining`:一旦...