概述
package cn.itcast.web.filter;
import javax.servlet.*;
import javax.servlet.annotation.*;
import java.io.*;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
@WebFilter(filterName = "SensitiveWordsFilter",value = "/*")
public class SensitiveWordsFilter implements Filter {
private List<String> list = new ArrayList<String>();
public void init(FilterConfig config) throws ServletException {
// 加载文件
// 获取文件真实路径
try {
ServletContext servletContext = config.getServletContext();
String realPath = servletContext.getRealPath("/mgch.txt");
// 读取文件
// BufferedReader br = new BufferedReader(new FileReader(realPath));
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(realPath), "UTF-8"));
String line = null;
while ((line = br.readLine()) != null){
list.add(line);
}
br.close();
System.out.println(list);
} catch (Exception e) {
e.printStackTrace();
} finally {
}
// 将每一行文件添加list
}
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
// 创建代理对象
ServletRequest proxy_req = (ServletRequest)Proxy.newProxyInstance(request.getClass().getClassLoader(), request.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if(method.getName().equals("getParameter")){
// 增强返回值
String value = (String) method.invoke(request, args);
if(value != null){
for (String str:list){
if(value.contains(str)){
value = value.replaceAll(str,"***");
}
}
return value;
}
}
return method.invoke(request,args);
}
});
chain.doFilter(proxy_req, response);
}
}
最后
以上就是笨笨水蜜桃为你收集整理的java 过滤敏感词汇的全部内容,希望文章能够帮你解决java 过滤敏感词汇所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复