关于Servlet Listener 和Filter 有两种注册方式:
PS:本人的Spring版本是5.x 非4.x
注意要在启动类上加上@ServletComponentScan注解 不然Servlet,Listener,Filter都不会启作用
- @WebServlet(name="servletTest1",urlPatterns="/servlet/test"
- publicclassextends
- privatestaticfinallong
- @Override
- protectedvoidthrows
- @Override
- protectedvoidthrows
- @WebListener
- publicclassimplements
- @Override
- publicvoid
- "dddddd"
- @Override
- publicvoid
Filter:
- @WebFilter(urlPatterns="/annotation/test1"
- publicclassimplements
- @Override
- publicvoidthrows
- @Override
- publicvoid
- throws
- @Override
- publicvoid
Interceptor:
- publicclassimplements
- @Override
- publicbooleanthrows
- "在controller之前执行,只有这个返回true,postHandler才会执行"
- returnsuper
- @Override
- publicvoid
- throws
- "controller之后,在渲染页面之前执行"
- @Override
- publicvoid
- throws
- "渲染页面之后执行"
- @Configuration
- publicclassimplements
- @Override
- publicvoid
- new"/interceptor/*"
我的版本是Spring5.x WebMvcConfigurer 提供了默认的接口的实现方式,所以只需要implements即可,5.x以下的版本需要extends WebMvcConfigurerAdapter 即可
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------第二种形式:基于Java Config
Servlet: Servlet类的写法:只需要继承HttpServlet即可
- @Bean
- public
- new
- new
- "/servlet/test2"
- return
- @Bean
- public
- new
- new
- "/servlet/test3"
- return
Filter:实现了Filter接口即可,Filter之间的执行顺序通过order来实现,order的值越低越先执行
- @Bean
- public
- new
- new
- "/filter/test/*"
- 1
- return
- @Bean
- public
- new
- new
- "/filter/test/*"
- 2
- return
Listener: 根据需求实现不同的listener接口即可
- @Bean
- public
- new
- new
- return
Interceptor:与上面写的那种Interceptor相同
-------------------------------------
PS:因为本人搭建SSM项目更喜欢于采用JavaConfig的形式,怕麻烦,哈哈(不不不,该说SSM项目搭建有点烦),所以此处直接随意新建了个web.xml来代替
Servlet:
- class>com.test.servlet.ServletJavaConfigTest3</servlet-class
Listener:
- class>com.test.listener.ListenerTest1</listener-class
Filter:
- class>com.test.filter.AnnotationFilterTest1</filter-class
Interceptor是特殊的存在,他是基于SpringMVC的,所以要在Spring的配置文件中配置,但是本人更喜欢JavaConfig的形式,所以更喜欢:
- @Configuration
- publicclassimplements
- @Override
- publicvoid
- new"/interceptor/*"
- new"/interceptor/33"
而非: (随个人喜好!!!!!!!!!!!!!!!!!!!!!!!!!)
- "/admin"
- class="com.test.blog.Interceptor.SecurityInterceptor"
- "/admin/**"
- class="com.test.blog.Interceptor.SecurityInterceptor"