简单介绍一下
需要完整源码的加qq:2413176044
原理:通过配置的properties文件进行不良信息的替换,通过继承的filter类进行过滤!调用doFile方法传到下一个过滤....直到所有的Filter都执行完,执行jsp!
用例: 过滤色情、赌博、草等等字符 篇幅有限-----jsp的代码不演示(需要完整源码的加qq:2413176044 )
配置properties文件 需要进行Unicode编码(在JDK的bin文件夹的native2ascill.exe程序转换)
filtration.properties
# \u81EA\u52A8\u66FF\u6362
\u8272\u60C5 = **
\u8D4C\u535A = **
\u903C = *
\u8822 = *
\u50BB = *
\u5C3C\u739B = **
\u8349 = **
\u6BDB\u5E26 = **
\u9760 = *
配置xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>c</display-name>
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.hh.filter.MyFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>file</param-name>
<param-value>/WEB-INF/filtration.properties</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
</web-app>
filter过滤器
package com.hh.filter;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;
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.HttpServletResponse;
public class MyFilter implements Filter {
private String encoding = "";
private Properties p = new Properties();
@Override
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
String file = filterConfig.getInitParameter("file");
String realPath = filterConfig.getServletContext().getRealPath(file);
try {
p.load(new FileInputStream(realPath));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse resp = (HttpServletResponse) response;
resp.setCharacterEncoding(encoding);
wrap res = new wrap(resp);
chain.doFilter(request, res);
String ww = res.getCharArrayWriter().toString();
Set<Object> set = p.keySet();
for (Object str : set) {
String key = (String) str;
ww = ww.replace(key, p.getProperty(key));
}
response.getWriter().write(ww);
}
@Override
public void destroy() {
p = null;
}
}
package com.hh.filter;
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
public class wrap extends HttpServletResponseWrapper {
private CharArrayWriter charArrayWriter=new CharArrayWriter();
public wrap(HttpServletResponse response) {
super(response);
}
@Override
public PrintWriter getWriter() throws IOException {
return new PrintWriter(charArrayWriter);
}
public CharArrayWriter getCharArrayWriter() {
return charArrayWriter;
}
}
演示的图片: