servlet,listener,filter,拦截器的详解

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的配置文件)

你可能感兴趣的:(mvc,java,tomcat)