文档章节

Servlet—实现过滤器

Bug-Killer
 Bug-Killer
发布于 2016/03/05 21:24
字数 544
阅读 14
收藏 0

一,实现过滤器

    在Servlet中,如果要定义一个过滤器,则直接让一个类实现javax.servlet.Filter接口即可完成。此接口定义了三个方法。

NO

方法 描述
1 public void init(FilterConfig filterConfig) throws ServletException 过滤器初始化时调用,可以通过filterConfig取得配置的初始化参数
2 public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain) throws ServletException,IOException 完成具体的过滤操作,然后通过FilterChain让请求继续向下传递
3 public void destroy() 过滤器销毁时使用

    在三个方法中,最重要的是doFilter()方法,此方法定义了ServletRequest,ServletResponse和FilterChain三种参数,其中前两个参数表示,过滤器可以完成对任意协议的过滤操作。FilterChain接口的作用是将用户的请求向下传递给其他过滤器或Servlet执行操作。

    FilterChain接口定义的方法

NO 方法 描述
1 public void doFilter(ServletRequest req,ServletResponse resp) throws IOException,ServletException` 将用户请求向下传递给其他过滤器或Servlet

    在FilterChain接口中,定义了一个同样的doFileter()方法,因为在这一过滤器之后有可能还有其他过滤器,也可能是请求的最终目标Servlet。这样就通过FilterChain形成了一个“过滤链"。

public class FilterDemo implements Filter {
	
	public void init(FilterConfig config) throws ServletException {
		String initParam = config.getInitParameter("ref") ;
		System.out.println("过滤器初始化,初始化参数:"+initParam) ;
	}
	public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain) throws ServletException,IOException{
		System.out.println("执行doFilter()方法之前") ;
		chain.doFilter(req,resp) ;
		System.out.println("执行doFilter()方法之后") ;
	}
	public void destroy() {
		System.out.println("过滤器销毁") ;
	}
}

    web-xml文件配置

<filter>
		<filter-name>FilterDemo</filter-name>
		<filter-class>org.panda.filterdemo.FilterDemo</filter-class>
		<init-param>
			<param-name>ref</param-name>
			<param-value>Hello World</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>FilterDemo</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

    过滤器的初始化方法是在容器启动时就加载的,并且通过FilterConfig的getInitParamter()方法取得了初始化参数。

二,过滤器的应用

    1,编码过滤

    为所有的页面设置统一的请求编码

public class EncodingFilter implements Filter {
	private String charSet ;							//设置字符编码
	public void destroy() {
		System.out.println("过滤器销毁") ;
	}
	public void init(FilterConfig config) throws ServletException {
		this.charSet = config.getInitParameter("charset") ;		//取得初始化参数
	}
	public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain) throws ServletException,IOException{
		resp.setCharacterEncoding("this.charSet") ;		//设置统一编码
	}
}


    

    

© 著作权归作者所有

上一篇: Servlet—AJAX
下一篇: MVC设计模式
Bug-Killer
粉丝 5
博文 76
码字总数 49406
作品 0
海淀
程序员
私信 提问
JavaWeb中的监听器、过滤器、拦截器、适配器简述

概念 ------------ context-param: 就是一些需要初始化的配置,放入context-param中,从而被监听器(这里特指org.springframework.web.context.ContextLoaderListener)监听,然后加载; 监...

丌官尚雄
02/27
35
0
Java程序员从笨鸟到菜鸟之(二十一)java过滤器和监听器详解

过滤器 1、Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求...

长平狐
2012/11/12
140
0
J2EE核心技术之Servlet详解

想必大家都知道J2EE核心技术是什么~~ 1.JSP (大多用于MVC中的是图层) 2.Servlet(大多用于MVC中的控制层) 3.JDBC(大多用于MVC的模型层) 那么我从中间给大家开始讲讲,什么是Servlet: ...

JavaOlder
2012/12/10
1K
0
javaweb开发之Filter

一、简介 在Servlet2.3规范中定义了过滤器,它对servlet容器调用servlet的过程进行拦截,从而在servlet进行响应处理的前后实现一些特殊的功能。 过滤器实现了一个责任链的模式。多个过滤器形...

小米米儿小
2013/12/06
588
0
关于Java Servlet的中文乱码

具体如下: 1.JSP里CHARSET要为GB2312 contentType="text/html;charset=GB2312" 2.SERVERLET类里要有 request.setCharacterEncoding(gb2312); 3.字符集的重新格式化 java.net.URLEncoder ja......

xiahuawuyu
2012/08/02
127
0

没有更多内容

加载失败,请刷新页面

加载更多

当阿里云工程师回到了家乡......

根据真实故事改编 略有浮夸 但重要的是 9月25日13:30-16:30 云栖大会「5G边缘计算专场」 一定要来哦 !!! 本文作者:樰篱 原文链接 本文为云栖社区原创内容,未经允许不得转载。...

Mr_zebra
7分钟前
2
0
文件操作工具类 FileUtils常用方法

文件操作工具类(FileUtils) 使用该工具类的前提是项目里导入commons-io 包 import org.apache.commons.io.FileUtils; List<String> lines=new ArrayList<String>(); lines.add("欢迎访问:......

AndLong
14分钟前
1
0
maven-shade-plugin

最近,用规则引擎(drools)的封装了一个jar包,给别人使用。用的是maven-assembly-plugin打的包,可以把多个jar包里的class 给打成一个jar,感觉还是满好用的,但是打包成功后,发现报空指针错...

internetafei
18分钟前
1
0
Cassandra repair 工具使用

前言 Cassandra是一款去中心化的分布式数据库。一份数据会分布在多个对等的节点上,即有多个副本。我们需要定期的对多个副本检查,看是否有不一致的情况。比如因为磁盘损坏,可能会导致副本丢...

阿里云官方博客
21分钟前
1
0
element-vue使用富文本编辑器【前端】

一、前言 1.富文本编辑器选择的为vue-quill-editor 官方地址:https://quilljs.com/docs/quickstart/ 2.安装 cnpm install vue-quill-editor cnpm install quill 3.在对应的页面引入,在com...

一代码农码一代
27分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部