博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
监听器小demo之检查敏感字
阅读量:4305 次
发布时间:2019-05-27

本文共 2434 字,大约阅读时间需要 8 分钟。

监听器小demo之检查敏感字

写一个过滤器,检查评论是否有敏感字,敏感字通过配置文件设置,如果有,则提示用户有敏感字。

步骤如下:

step1,写一个java类,实现Filter接口。

step2,在doFilter方法里面,编写拦截处理逻辑。

package web;import java.io.IOException;import java.io.PrintWriter;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.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CommentFilter1 implements Filter{	private FilterConfig config;	public CommentFilter1(){		System.out.println("Filter1's constructor ...");	}	/**	 * 容器在销毁过滤器之前,会调用destroy方法。	 * 该方法只会执行一次。	 */	public void destroy() {		System.out.println("Filter1's destroy ...");	}		/**	 * 容器会调用doFilter方法来处理请求,类似于容器调用servlet的	 * service方法一样。	 * 如果调用了FilterChain(过滤器链)的doFilter方法,容器会继续	 * 调用后续的过滤器或者servlet,如果没有调用FilterChain的	 * doFilter方法,则容器不再向后调用。	 */	public void doFilter(ServletRequest arg0, ServletResponse arg1,			FilterChain chain) throws IOException, ServletException {		System.out.println("Filter1's doFilter method start...");		//强制转换成子接口		HttpServletRequest request = (HttpServletRequest)arg0;		HttpServletResponse response = (HttpServletResponse) arg1;		//读取请求参数		request.setCharacterEncoding("utf-8");		String content = request.getParameter("comment");		response.setContentType("text/html;charset=utf-8");		PrintWriter out = response.getWriter();		//通过FilterConfig对象读取初始化参数		String illegalStr = config.getInitParameter("illegalStr");		if(content.indexOf(illegalStr)!=-1){			//有敏感字,提示用户			out.println("

有敏感字

"); }else{ //无敏感字,继续向后调用 chain.doFilter(arg0, arg1); } System.out.println("Filter1's doFilter end ..."); } /** * 容器在启动时,会创建过滤器实例,接下来,会立即调用init方法完成 * 初始化操作。该方法只会执行一次。 * 容器会事先创建好一个符合FilterConfig接口要求的对象。可以通过 * FilterConfig.getInitPrameter方法来访问过滤器的初始化参数。 */ public void init(FilterConfig filterConfig) throws ServletException { System.out.println("Filter1's init..."); //因为init方法只会执行一次,方法执行完之后,filterConfig变量就 //会被销毁,所以,需要将filterConfig的值赋给config属性,这样, //就可以在doFilter方法里访问到FilterConfig对象了。 //FilterConfig对象可以读取Filter的初始化参数。 //初始化参数配置在web.xml文件中。 config = filterConfig; }}

step3,配置(web.xml)过滤器。

filter1
web.CommentFilter1
illegalStr
cat
filter1
/comment

附过滤器执行过程:

你可能感兴趣的文章
Activiti工作流会签三 撤销,审批,驳回
查看>>
Oauth2方式实现单点登录
查看>>
CountDownLatch源码解析加流程图详解--AQS类注释翻译
查看>>
ES相关度评分
查看>>
我们一起做一个可以商用的springboot脚手架
查看>>
idea在搭建ssm框架时mybatis整合问题 无法找到mapper
查看>>
java设计基本原则----单一职责原则
查看>>
HashMap的实现
查看>>
互斥锁 synchronized分析
查看>>
java等待-通知机制 synchronized和waity()的使用实践
查看>>
win10 Docke安装mysql8.0
查看>>
docker 启动已经停止的容器
查看>>
order by 排序原理及性能优化
查看>>
Lock重入锁
查看>>
docker安装 rabbitMq
查看>>
git 常用命令 入门
查看>>
linux安装docker
查看>>
关闭selinx nginx无法使用代理
查看>>
shell 脚本部署项目
查看>>
spring cloud zuul网关上传大文件
查看>>