Servlet相关【拦截器和过滤器的区别】

2018-12-28  本文已影响0人  找不到工作就去讨饭啦

Filter介绍

Filter可以认为是Servlet的一种“加强版”,是对Servlet的扩展(既可以对请求进行预处理,又可以对处理结果进行后续处理。使用Filter完整的一般流程是:Filter对用户请求进行【预处理】,接着将请求交给Servlet进行预处理并【生成响应】,最后Filter再对服务器响应进行【后处理】。

Filter的优点

Filter的应用场景

创建Filter

  1. 创建Filter处理类(实现javax.servlet.Filter接口)
  1. web.xml文件中配置Filter

Interceptor介绍

 拦截器,在AOP(Aspect-Oriented Programming)中用于在【某个方法或字段被访问】之前进行拦截,然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。拦截器是**动态拦截Action调用的对象**。它提供了一种机制可以使开发者可以定义在一个Action执行的前后执行的代码,也可以在一个Action执行前阻止其执行。同时也提供了一种可以提取Action中可重用的部分的方式。

 拦截器**将Action共用的行为独立出来,在Action执行前后执行**。这也就是我们所说的AOP,它是分散关注的编程方法,它将通用需求功能从不相关类之中分离出来;同时,能够共享一个行为,一旦行为发生变化,不必修改很多类,只要修改这个行为就可以。

 拦截器将很多功能从我们的Action中独立出来,大量减少了我们Action的代码,独立出来的行为就有很好的重用性。

 当你提交对Action(默认是.action结尾的url)的请求时,ServletDispatcher会根据你的请求,去调度并执行相应的Action。在Action执行之前,调用被Interceptor截取,Interceptor在Action执行前后执行。

 创建Interceptor必须实现com.opensymphony.xwork2.interceptor.Interceptor接口,该接口定义了如下三个方法。

Filter和Interceptor的区别

Filter和Interceptor的执行顺序

过滤前-拦截前-action执行-拦截后-过滤后

上一篇下一篇

猜你喜欢

热点阅读