过滤敏感词汇---HttpServletRequest对象增强

来源:互联网 发布:京东手机抢购软件 编辑:程序博客网 时间:2024/06/05 06:36

在管理论坛或网站时,为了管理论坛或网站文明用语,屏蔽一些脏话或敏感词汇,需要对敏感词汇进行过滤。这是可以通过过滤器来管理全站用户提交的数据,对用户提交的数据进行敏感词汇识别。为了完成此功能,可以对有request容器带上来的数据进行过滤,reqeust本身无此功能,但可以通过对其进行适当增强,可以完成此功能。下面是示例代码。

DirtyWordsRequest是对敏感词汇进行过滤的增强型request

public class DirtyWordsRequest extends HttpServletRequestWrapper {private HttpServletRequest request;private String[] dirtyWords = {"aa", "bbb", "ccc"};public DirtyWordsRequest(HttpServletRequest request) {super(request);// TODO Auto-generated constructor stubthis.request = request;}@Overridepublic String getParameter(String name) {// TODO Auto-generated method stubString value = request.getParameter(name);if(value==null){return null;}for(int i=0; i<dirtyWords.length; i++){value = value.replaceAll(dirtyWords[i], "***");}return value;}}
Filter,放行时,使用DirtyWordsRequest对象实体,进行放行。

@Overridepublic void doFilter(ServletRequest req, ServletResponse resp,FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stubHttpServletRequest request = (HttpServletRequest)req;HttpServletResponse response = (HttpServletResponse)resp;DirtyWordsRequest myRequest = new DirtyWordsRequest(request);myRequest.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");chain.doFilter(myRequest, response);}

为了是request对象同时具有解决乱码,识别html格式,过滤敏感词汇,可以在访问真正资源前,分别为其增加一个过滤器,如下:

<filter-mapping><filter-name>EncodingFilter</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping><filter><filter-name>HtmlFilter</filter-name><filter-class>cn.itcast.filters.HtmlFilter</filter-class></filter><filter-mapping><filter-name>HtmlFilter</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping><filter><filter-name>DirtyFilter</filter-name><filter-class>cn.itcast.filters.DirtyFilter</filter-class></filter><filter-mapping><filter-name>DirtyFilter</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping>
此时全站的请求访问本站的web资源的乱码问题,html格式数据问题,及敏感词汇问题都将得以解决。

0 0
原创粉丝点击