1.servlet,listener,filter都得在web.xml中注册
2.Filter生命周期:程序启动调用Filter的init()方法(永远只调用一次,具体看启动日志),程序停止调用Filter的destroy()方法(永远只调用一次,具体看关闭日志),doFilter()方法每次的访问请求如果符合拦截条件都会调用(程序第一次运行,会在servlet调用init()方法以后调用,不管第几次,都在调用doGet(),doPost()方法之前)。
3.Servlet生命周期:程序第一次访问,会调用servlet的init()方法初始化(只执行一次,具体看日志),每次程序执行都会根据请求调用doGet()或者doPost()方法,程序停止调用destory()方法(具体看结束日志)。
4.监听器的生命周期:一直从程序启动到程序停止运行
5.listener,filter都是在tomcat启动 生命开始,而servlet时第一次请求过来生命开始
6.在mvc模式中,只有一个中央调度器,监听器,过滤器,中央调度器都是在tomcat启动的时候 创建,并且都只是创建一次,在tomcat停止的时候,销毁
7.拦截器,是基于mvc框架的,它只能在mvc配置文件中注册,同样也是在tomcat启动的时候创建,tomcat停止的时候,销毁
servlet,listener,filter的注册,
1.在springboot下,配置文件都已经没有了,所以两种方式,注解和配置文件
2.注解方式:
第一种:(缺点:filter没有优先级)
1.@WebServlet => 代替 servlet 配置
2.@WebFilter => 代替 filter 配置
3.@WebListener => 代替 listener 配置
然后在配置类上加上,@ServletComponetSacn()来扫描这些组件
第二种:就是当做普通组件就行,boot也能都识别他们的具体作用
@component注解即可
缺点:无法指定url,所有请求都可以访问servlet,filter所有请求都得过滤
优点:filter可以通过@order()设置优先级
3.配置文件的方式(这个配置文件都是,spring的配置文件)
1.配置类即可,通过@bean的方式创建
优点:既可以创建 三大组件,又可以指定具体的url,还可以设置优先级
2.Spring Boot 为了方便大家向 Servlet 容器中注册 Servlet、Filter 以及 Listener
提供了一个 Bean 注册的抽象类 RegistrationBean,下面的实现类如下
ervletListenerRegistrationBean 用来注册监听器。
ServletRegistrationBean 用来注册 Servlet。
DispatcherServletRegistrationBean 用来注册 DispatcherServlet。
FilterRegistrationBean 用来注册过滤器。
DelegatingFilterProxyRegistrationBean 则用来注册 DelegatingFilterProxy,DelegatingFilterProxy 在 Spring Security、Spring Session、Shiro 等整合时非常有用。
3.步骤:
1.准备好我们自定义的servlet,listener,filter
2.在配置类中创建时,new的不是上面这些,而是registrationBean的实现类,返回的类型也是
3.通过bean.setFilter/setServlet/setLinstener(),可以实现三大组件的创建
4.还可以bean.setUrl,setOrder,来设置优先级和,url地址
拦截器的注册
1.通过配置类和 注解的方式(这里的配置类一定要实现 WebMvcConfiguer接口代表,时mvc的配置文件,而不是spring的配置文件)