做个娱乐网站,求大虾们有强大的敏感字过滤的源码的给个!本人不胜感激
解决方案 »
- Tomcat重新部署的时候提示错误
- websphere上部署的项目没有报错,但是在访问jsp页面的时候只显示一半
- FormFile中的getFileSize()方法是获得上传文件大小的吗
- struts2中使用dwr的问题
- 怎样才能把存在ArrayList中的Collection集合取出来呢?
- org.jboss.resource.JBossResourceException: Could not create connection; - nested
- 通过华为面试,在等最终审批,请问华为JAVA软件工程师用什么开发工具,JBuilder+weblogic?
- J2EE强问,如何在JBOSS中配置jrep socketType="ssl",用以建立JBOSS服务端和客户的加密通信
- 关于weblogic的小问题?(在线等待!)
- 关于tomcat的问题
- 各位,启动tomcat的时候报了这个错误,牛人帮我看一下哦。谢谢了
- struts中调用接口时候的Cannot make a static reference to the non-static method问题
要的话可以email发给你。
public class WordsFilter implements Filter { //下面三个集合记住的是都是用于匹配用户提交数据的正则表达式
private List<String> banWords = new ArrayList(); //禁用词 婊.{2}子 你是一个婊 子
private List<String> auditWords = new ArrayList(); //审核词
private List<String> replaceWords = new ArrayList(); //替换词
public void init(FilterConfig filterConfig) throws ServletException {
try{
String path = WordsFilter.class.getClassLoader().getResource("/").getPath();
File file = new File(path);
File files[] = file.listFiles();
for(File f : files){
if(!f.getName().endsWith(".txt")){
continue;
}
BufferedReader br = new BufferedReader(new FileReader(f));
String line = null;
while((line=br.readLine())!=null){
if(line.trim().equals("")){
continue;
}
String values[] = line.trim().split("\\|"); //[换妻,1]
if(values.length!=2){
continue;
}
if(values[1].trim().equals("1")){
banWords.add(values[0]);
}
if(values[1].trim().equals("2")){
auditWords.add(values[0]);
}
if(values[1].trim().equals("3")){
replaceWords.add(values[0]);
}
}
}
}catch (Exception e) {
throw new RuntimeException(e);
}
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) resp;
HttpServletRequest request = (HttpServletRequest) req;
//1.检查用户提交的数据中是否包含禁用词
Enumeration e = request.getParameterNames();
while(e.hasMoreElements()){
String inputName = (String) e.nextElement();
String inputValue = request.getParameter(inputName); //***姨子****
if(inputValue==null || inputValue.trim().equals("")){
continue;
}
//用禁用词库去检查用户的输入
for(String regex: banWords){
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(inputValue);
if(m.find()){
//代表用户输入的数据有和正则表达式相匹配的数据
request.setAttribute("message", "文章中包含非法词汇,请文件用语!!!");
request.getRequestDispatcher("/message.jsp").forward(request, response);
return;
}
}
}
//程序运行到此,意味着用户提交的数据没有包含禁用词 request.getPrameter("");
chain.doFilter(new MyRequest(request), response); //servlet myrequest.getParameter("resume")
}
class MyRequest extends HttpServletRequestWrapper{ private HttpServletRequest request;
public MyRequest(HttpServletRequest request) {
super(request);
this.request = request;
}
@Override
public String getParameter(String name) {
String inputData = this.request.getParameter(name); //你就是个杂种,你的妈妈说你就是??
if(inputData==null){
return null;
}
//对用户输入的数据进行审核词的替换
for(String regex : auditWords){
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(inputData);
if(m.find()){
String data = m.group(); //得到用户数据中,与正则表达式匹配的数据
inputData = inputData.replaceAll(regex, "<font color='red'>"+data+"</font>"); //你就是个<font color='red'>杂种</font>,你说你是吗??
}
}
//对用户输入的数据进行替换词的替换
for(String regex : replaceWords){
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(inputData);
if(m.find()){
inputData = inputData.replaceAll(regex, "****"); //你就是个<font color='red'>杂种</font>,你说你是吗??
}
}
return inputData;
}
}
public void destroy() {
// TODO Auto-generated method stub } }