2、过滤器(Filter):对Request要求起到过滤的浸染,浸染在Servlet之前,如果配置为/可以对所有的资源访问(servlet、js/css静态资源等)进行过滤处理

3、监听器(Listener):实现了javax.servlet.ServletContextListener 接口的做事器端组件,它随Web运用的启动而启动,只初始化一次,然后会一贯运行监视,随Web运用的停滞而销毁

浸染一:做一些初始化事情,web运用中spring容器启动ContextLoaderListener

拦截器不拦截jsp页面跳转SpringSpringMVC 拦阻器履行流程 NoSQL

浸染二:监听web中的特定事宜,比如HttpSession,ServletRequest的创建和销毁;变量的创建、销毁和修正等。
可以在某些动作前后增加处理,实现监控,比如统计在线人数,利用HttpSessionLisener等。

4、拦截器(Interceptor):是SpringMVC、Struts等表现层框架自己的,不会拦截jsp/html/css/image的访问等,只会拦截访问的掌握器方法(Handler)。

5、总结:

从配置的⻆度也能够总结创造:serlvet、filter、listener是配置在web.xml中的,而interceptor是配置在表现层框架自己的配置文件中的

在Handler业务逻辑实行之前拦截一次在Handler逻辑实行完毕但未跳转页面之前拦截一次在跳转页面之后拦截一次

二、拦截器实行流程

在运行程序时,拦截器的实行是有一定顺序的,该顺序与配置文件中所定义的拦截器的顺序干系。
单个拦截器,在程序中的实行流程如下图所:

1)程序先实行preHandle()方法,如果该方法的返回值为true,则程序会连续向下实行处理器中的方法,否则将不再向下实行。

2)在业务处理器(即掌握器Controller类)处理完要求后,会实行postHandle()方法,然后会通过DispatcherServlet向客户端返回相应。

3)在DispatcherServlet处理完要求后,才会实行afterCompletion()方法。

三、多个拦截器的实行流程

多个拦截器(假设有两个拦截器Interceptor1和Interceptor2,并且在配置文件中, Interceptor1拦截器配置在前),在程序中的实行流程如下图所:

从图可以看出,当有多个拦截器同时事情时,它们的preHandle()方法会按照配置文件中拦截器的配置顺序实行,而它们的postHandle()方法和afterCompletion()方法则会按照配置顺序的反序实行。