利用J2EE的Filter对所有提交参数进行过滤
1、获取request下面的所有参数内容;
2、把每个参数进行过滤处理(利用脏字过滤字典对其进行过滤);
3、再把过滤好的内容重新存入request的参数中。
1、获取request下面的所有参数内容;
2、把每个参数进行过滤处理(利用脏字过滤字典对其进行过滤);
3、再把过滤好的内容重新存入request的参数中。
解决方案 »
- 分页语句
- 关于jFreechart画折线图的问题!
- 如何用触发器在JSP中多表删除
- SWFUpload上传组件
- 一个函数返回值的问题!!
- 怎么在后台获得<logic:iterate>输出的list
- 定义表单 <FORM ACTION="URL" METHOD=GET|POST></FORM>,其中 ACTION="URL" 指的是什么意思啊
- 求教文件存取问题
- 请看看我的JSP是怎么一回事?
- 存储过程中给clob类型付值出错,求高手!!!!!在线等
- org.apache.thrift.transport.TTransportException:http response code 400如何解决
- java+jxl+jsp导出excel问题
脏字草然后在过滤器里面这么做:
1、读取words.properties内容存到list:List a = new ArrayList();
a.add("脏字干");
a.add("脏字草");2、String b = "羊吃草嗖嗖嗖干嗖嗖嗖";
for(int i = 0; i < a.size(); a++) {
b=b.replaceAll(a.get(i),"*")
}
String regex=“(wqnmlgb | nnd)”;
String replaceAll( regex ,"***")
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.logging.LogRecord;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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
/*屏蔽敏感词汇过滤器*/
public class ContentFilter extends HttpServlet implements Filter { /**
*
*/
private static final long serialVersionUID = 1L;
private FilterConfig filterConfig; public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
} @SuppressWarnings("null")
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
//读取配置文件txt
InputStream in = ContentFilter.class.getClassLoader().getResourceAsStream("words1.txt");
StringBuilder sb = new StringBuilder();
String line;
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");} } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String sss=sb.toString().trim();
String ss=sss.replace("\n", "");//消除换行
String[] filterString=ss.split(",");
String str = ""; try {
request.setCharacterEncoding("utf-8");
HttpServletRequest req = (HttpServletRequest) request;
String filterParam = req.getParameter("news.content"); if (filterParam!=null || !(filterParam.trim().length() > 0)) {
for (int i = 0; i < filterString.length; i++) {
str = filterString[i];
if (filterParam.indexOf(str) != -1)
filterParam = filterParam.replaceAll(str, "<font color=red>****</font>");
}
req.getSession().setAttribute("content", filterParam);
}
filterChain.doFilter(request, response);
} catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
} public void destroy() {
} public boolean isLoggable(LogRecord record) {
// TODO Auto-generated method stub
return false;
}
}你自己写个txt文件里面存敏感字就行了。具体你自己调用。
将官方的词典删除,用脏词库代替,然后对文章内容切词,每个结果都会告诉命中了什么词,在哪个位置,性能相当高。参考:
ikanalyzer
庖丁解牛
mmseg4j