过滤器&监听器

JavaWeb的三大组件

JavaWeb三大组件分别对应的是Servlet、过滤器Filter、监听器Listener。

过滤器的介绍

过滤器是一个服务器端的组件,它可以拦截客户端的请求和响应信息,并对这些信息进行过滤。

当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如果Filter“放行”,那么会继续执行用户请求的Servlet;如果Filter不“放行”,那么就不会执行用户请求的Servlet。当执行完成Servlet的代码后,还会执行Filter后面的代码。

过滤器(Filter):就是当用户请求资源时,过滤器先对其进行拦截,做一些统计,判断,中文乱码、权限校验处理等等操作,然后再放行。

大致图解:

详细图解:

过滤器生命周期:

1:启动服务器是加载过滤器的实例,并调用init()方法来初始化实例

2:每次请求都会调用doFilter()方法

3:关闭服务器时调用destory()方法来销毁实例。

Filter是单例的,这个特性和Servlet一样

过滤器链中的过滤器的执行顺序:在xml中,根据filter-mapping标签在web.xml中顺序决定的(自上而下的顺序)。

过滤器的四种拦截方式

<dispatcher>REQUEST</dispatcher> 默认的! //拦截直接请求方式

<dispatcher>FORWARD</dispatcher> //拦截请求转发方式

<dispatcher>INCLUDE</dispatcher> //拦截请求包含方式

<dispatcher>ERROR</dispatcher> //拦截错误转发方式

如何配置过滤器的拦截方式?

在web.xml的<filter-mapping>中进行配置。添加一句:<dispatcher>拦截方式</dispatcher>即可

小结:

1. Filter的生命周期三个方法:

void init(FilterConfig):在Tomcat启动后被调用;

void destroy():在Tomcat关闭前被调用;

void doFilter(ServletRequest,ServletResponse,FilterChain):每次有请求时都调用该方法;

2. FilterChain类:

void doFilter(ServletRequest,ServletResponse):放行!表示执行下一个过滤器,或者执行目标资源。

可以在调用FilterChain的doFilter()方法的前后添加功能,在FilterChain的doFilter()方法之前的功能会在目标资源执行之前执行,在FilterChain的doFilter()方法之后的功能会在目标资源执行之后执行。

3. 四各拦截方式:REQUEST、FORWARD、INCLUDE、ERROR,默认是REQUEST方式。

REQUEST:拦截直接请求方式;

FORWARD:拦截请求转发方式;

INCLUDE:拦截请求包含方式;

ERROR:拦截错误转发方式;

监听器的介绍

监听器(Listener):就是监听事件的发生,如果事件发生,那么执行相应的代码。

生活中的例子:自动门,摄像头等。生活中的监听器,例如商场摄像头,可以监视客户的一举一动。如果客户有违法行为,商场可以采取相应的措施。

监听器就是监听某个对象的的状态变化的组件。Servlet API中提供了一个Listener接口,如果编写的类实现了这个接口,则称这个类为监听器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值