SpringBoot默认使用Tomcat作为嵌入式的Servlet容器

定制和修改Servlet容器的相关配置
- 通过SringBoot文件修改和server有关的配置
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | server.port=8081server.context-path=/crud
 
 server.tomcat.uri-encoding=UTF-8
 
 //通用的Servlet容器设置
 server.xxx
 //Tomcat的设置
 server.tomcat.xxx
 
 | 
- 编写一个EmbeddedServletContainerCustomizer:嵌入式的Servlet容器的定制器,来修改Servlet容器的配置。Spring Boot2.0以上版本EmbeddedServletContainerCustomizer被WebServerFactoryCustomizer替代
 SprinBoot-1.0x
EmbeddedServletContainerCustomizer
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | @Bean  public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){
 return new EmbeddedServletContainerCustomizer() {
 
 
 @Override
 public void customize(ConfigurableEmbeddedServletContainer container) {
 container.setPort(8083);
 }
 };
 }
 
 | 
 SpringBoot-2.0x
WebServerFactoryCustomize
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | @Beanpublic WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
 return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
 @Override
 public void customize(ConfigurableWebServerFactory factory) {
 factory.setPort(8080);
 }
 };
 }
 
 | 

注册Servlet三大组件
由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件。
注册三大组件用以下方式
- ServletRegistrationBean
- FilterRegistrationBean
- ServletListenerRegistrationBean
注册Servlet
| 12
 3
 4
 5
 6
 7
 8
 
 | @Beanpublic ServletRegistrationBean myServlet(){
 ServletRegistrationBean registrationBean = new
 
 ServletRegistrationBean(new MyServlet(),"/myServlet");
 registrationBean.setLoadOnStartup(1);
 return registrationBean;
 }
 
 | 

创建普通的java类继承HttpServlet


注册Filter
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | @Beanpublic FilterRegistrationBean myFilter(){
 FilterRegistrationBean registrationBean = new FilterRegistrationBean();
 registrationBean.setFilter(new MyFilter());
 
 
 
 
 
 registrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
 return registrationBean;
 }
 
 | 
addUrlPatterns方法是添加一个拦截的URL,多个用逗号隔开
setUrlPatterns方法这是一次性的设置一个集合,想要配置拦截的URL。首先要使用Arrays.asList将其转换为集合

创建一个实现了Filter接口的普通java类

注册Listener
| 12
 3
 4
 5
 
 | @Beanpublic ServletListenerRegistrationBean myListener(){
 ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(new MyListener());
 return registrationBean;
 }
 
 | 

创建一个实现了指定监听接口的普通java类

使用其他嵌入式Servlet容器
SpringBoot中pom.xml中引入的web模块,默认使用Tomcat作为嵌入式的Servlet容器

引入使用其他的servlet容器,需要在Web模块中先排除默认使用的Tomcat容器

| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | <dependency><groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 
 <exclusions>
 <exclusion>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-tomcat</artifactId>
 </exclusion>
 </exclusions>
 </dependency>
 
 | 
| 12
 3
 4
 5
 
 | <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-jetty</artifactId>
 </dependency>
 
 | 


| 12
 3
 4
 5
 
 | <dependency>
 <artifactId>spring-boot-starter-undertow</artifactId>
 <groupId>org.springframework.boot</groupId>
 </dependency>
 
 | 

