JavaWeb——过滤器

一、过滤器简介

Servlet过滤器与Servlet十分相似,但它具有拦截客户端(浏览器)请求的功能,Servlet过滤器可以改变请求中的内容,来满足实际开发的需要。
对于程序开发人员而言,过滤器实质就是在Web应用服务器上的一个Web应用组件,用于拦截客户端(浏览器)与目标资源的请求,并对这些请求进行一定过滤处理再发送给目标资源。即对请求和响应进行拦截或者增强的对象,就是过滤器。

二、过滤器作用

  • 统一的认证处理
  • 详细的日志
  • 对用户数据的安全性处理改变图象文件格式
  • 对响应数据进行编码·对响应做压缩处理
  • 对XML输出做XSLT转换

三、过滤器工作方式

在这里插入图片描述

四、过滤器-API

过滤器对象放置在javax.servlet包中,其名称为Filter,它是一个接口。Filter接口是过滤器类必须实现的接口,该接口中有三个方法Filter、FilterChain、FilterConfig。过滤器执行的顺序是按照,web.xml中filter-mapping标签的书写顺序执行(从上往下执行)

  • Filter

    Filter接口过滤器类必须实现的接口,该接口中有三个方法

    • init(FilterConfig filterConfig):
      该方法是对filter对象进行初始化的方法,仅在容器初始化filter对象结束后被 调用一次。参数 FilterConfig可以获得filter的初始化参数。
    • doFilter(ServietRequest request,ServletResponse response, FilterChain chain):
      该方法是filter进行过滤操作的方法,是最重要的方法。过滤器实现类必须实现该方法。方法体中可以对request和response进行预处理。其中FilterChain可以将处理后的request和response对象传递到过滤链上的下一个资源。
    • destroy():该方法在容器销毁过滤器对象前被调用。
  • FilterChain

    FilterChain接口作为Filter接口中doFilter方法的参数使用,可调用过滤器链中的一系列过滤器。

    • doFilter(ServletRequest request,ServletResponse response)
      该方法可以将当前的请求和响应传递到过滤链上的下一个资源,可能是下一个过滤器,也可能是目 标资源。——请求放行全靠它
  • FilterConfig

    FilterConfig接口作为Filter接口中的init方法的参数使用,FilterConfig接口中有一个常用方法

    方法声明说明
    public String getFilterName()用于获取过滤器的名字
    public ServletContext getServletContext()获取Servlet上下文。
    public Enumeration getInitParameterNames()获取过滤器的所有初始化参数。
    public String getInitParameter(String name)获取过滤器的初始化参数值。

五、过滤器-创建步骤

  • 定义一个实现了Filter接口的类,实现init、doFilter、destroy方法
public class MyFilter implements Filter {

	@Override
	public void destroy() {
		/*销毁时调用*/
	}

	@Override
	public void doFilter(ServletRequest serequest, ServletResponse seresponse, FilterChain chain)
			throws IOException, ServletException {
		/*过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理*/
		
		//将处理后的request和response对象传递到过滤链上的下一个资源
		chain.doFilter(serequest,seresponse);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		/*初始化方法  接收一个FilterConfig类型的参数 该参数是对Filter的一些配置*/
	}

}
  • 在web.xml文件中进行配置
<filter>
		<filter-name>test</filter-name>
		<filter-class>com.test.MyFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>test</filter-name>
	<url-pattern>user</url-pattern>
</filter-mapping>
  • 配置参数说明
    • filter
      • filter-name:自定义的名字
      • filter-class:Filter类的完整名字
    • filter-mapping
      • filter-name:与filter中的filter-name相同
      • url-pattern:
        该过滤器要过滤的资源的URL,例如/admin/* ;/ * :全部匹配,*.html:扩展名匹配
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值