评论的不良信息的过滤——Filter

简单介绍一下

需要完整源码的加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;
	}
}

演示的图片:

猜你喜欢

转载自blog.csdn.net/qq_39893313/article/details/82184984