2020-09-08

**

Servlet过滤器的基本介绍

**

servlet过滤器是从Servlet2.3规范开始新增的功能,Servlet过滤器与Servlet十分相似,但具有拦截客户端/浏览器的请求功能,Servlet过滤器可以改变请求的内容,过滤器实质上就是在Web应用服务器上的一个Web应用组件,用于拦截客户端/浏览器与目标资源的请求,并对这些请求进行一定过滤处理再发送给目标资源。

Servlet过滤器的图解:

在这里插入图片描述

如果一个Web应用使用一个过滤器不能解决业务需求,此时可以部署多个过滤器对业务请求进行多次处理,这样就形成了一个过滤器链。

过滤器的使用对象存放在javax.servlet中的FIlter接口,除了这个接口,与过滤器相关的对象还有FIlterConfig与FilterChain对象,分别为过滤器的配置对象和过滤器的传递工具。在实际开发中,我们一般只使用Filter对象即可。

Filter接口的使用方法:
Init(FilterConfig filterConfig):过滤器初始化方法,该方法在过滤器初始化时使用
doFilter(ServletRequest request,ServletResponse response,FilterChain chain):对请求进行过滤处理。
Destroy():销毁方法,以便释放资源


FilterConfig接口的方法:
getFilterName():获取过滤器的名字。
getServletContext():获取Servlet上下文
getInitParameter(String name):获取过滤器的初始化参数值
getInitParameterNames():获取过滤器的所有初始化参数


FilterChain接口的方法:
只有doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)方法

实现代码:

class MyFilter implements Filter
{
    //初始化方法
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }
    //过滤器处理方法
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //处理操作
        //.......
        //.......

        //!!!使用过滤器并不一定要将请求向下传递到下一过滤器或者目标资源,也可以在过滤处理后,直接返回客户端
        filterChain.doFilter(servletRequest,servletResponse);
    }
    //销毁方法
    @Override
    public void destroy() {
        //释放资源
    }
}

过滤器与Servlet一样,创建后同样需要进行配置,配置的步骤:分别为声明过滤器对象和创建过滤器映射。

FIlter配置内容:

<filter>
	<!-- 过滤器名称 --!>
	<filter-name>MyFilter</filter-name>
	<!-- 过滤器完整类名 --!>
	<filter-class>....</filter-class>
	<!-- 参数设置 --!>
	<init-param>
	<param-name>参数名</param-name>
	<param-value>参数值</param-value>
	</init-param>
	<!-- 过滤器URL的映射 --!>
	<url-pattern>/MyFilter</url-pattern>
</filter>


<filter-mapping>
	<filter-name>过滤器名称</filter-name>
	<url-pattern>/过滤器URL映射</url-pattern>
</filter-mapping>***
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值