SpringBoot默认使用的是Tomcat作为嵌入式的Servlet容器,那么肯定会和外置的Tomcat有区别,那么就这些区别来谈一谈SpringBoot中对于容器的一些配置操作

如何定制和修改Servlet容器的相关配置
在内置的Tomcat中,不再有web.xml文件可以供我们修改,那么我们应该怎样去修改Servlet容器相关的配置呢?在SpringBoot中有两种方式可供选择,一种是在配置文件中修改,还有一种是通过配置类的方式去修改

配置文件中修改(具体修改的参数可以查看ServerProperties类)

server.port=8081
server.servlet.context-path=/crud

server.tomcat.uri-encoding=UTF-8

// 通用的Servlet容器设置
server.servlet.xxx
// Tomcat的设置
Server.tomcat.xxx
只需要在application.roperties或者application.yml/yaml中像上面那样就可以轻松的修改掉相关的配置

编写配置类(配置方法)
除了像上面那样在配置文件中修改以外,还可以自己编写配置类去修改,我们可以编写一个返回值为EmbeddedServletContainerCustomizer(SpringBoot2.0将其替换成了WebServerFactoryCustomizer)的方法放到我们自定义的配置类中来进行修改,不过在SpringBoot1.x跟SpringBoot2.x版本中有所不同

SpringBoot1.x:

@Bean //一定要将这个定制器加入到容器中
public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){
return new EmbeddedServletContainerCustomizer() {

    //定制嵌入式的Servlet容器相关的规则@Overridepublic void customize(ConfigurableEmbeddedServletContainer container) {container.setPort(8083);}
};

}
SpringNoot2.x:

// Servlet容器配置器
@Bean
public WebServerFactoryCustomizer webServerFactoryCustomizer(){
return new WebServerFactoryCustomizer(){
@Override
public void customize(ConfigurableWebServerFactory factory) {
factory.setPort(8081);
}
};
}
如何注册Servlet、Filter、Listener三大组件
(1)、ServletRegistrationBean
首先书写自己的Servlet(要继承HttpServlet类)
Servlet
将我们自己写的Servlet注册
register Servlet
(2)、FilterRegistrationBean
书写自己的Filter(实现Filter接口)
Filter
将我们自己写的Filter注册
register Filter
(3)、ServletListenerRegistrationBean
定义我们自己的Listener(实现ServletContextListener接口)
Listener
注册Listener
register Listener
使用注解配置
当然,除了像上面那样在配置类中注册我们自定义的三大组件以外,还可以通过注解的方式去配置

首先,在SpringBoot主配置类上标注@ServletComponentScan
想要使用三大组件的注解,就必须先在SpringBoot主配置类(即标注了@SpringBootApplication注解的类)上标注@ServletComponentScan注解

@ServletComponentScan
@SpringBootApplication
public class DemoApplication {

public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);
}

}
然后就可以开始配置了

配置Servlet
在我们自己的Servlet类上配置 @WebServlet(name = “cus”, urlPatterns = “server”) 注解即可

配置Filter
在我们自己的Filter上配置 @WebFilter(filterName = “fil”, urlPatterns = {"/server", “/hello”}) 注解即可

配置Listener
在我们自己的Listener上配置 @WebListener 即可

以上就是使用注解去配置三大组件

SpringBoot能不能使用其他的Servlet容器
SpringBoot默认使用的是Tomcat,那么能不能切换成其他的容器呢?这个当然是没问题的,而且切换的方式也很简单,只需要引入其他容器的依赖,将当前容器的依赖排除即可

切换其他容器
jetty(比较适合做长链接的项目,比如聊天等这种一直要连接的)
想要将容器从Tomcat切换到jetty,在pom.xml文件中导入相关依赖即可

org.springframework.boot spring-boot-starter-web spring-boot-starter-tomcat org.springframework.boot org.springframework.boot spring-boot-starter-jetty undertow(不支持JSP,但是是一个高性能的非阻塞的Servlet容器,并发性能非常好) 引入undertow的方式同jetty一样 org.springframework.boot spring-boot-starter-web spring-boot-starter-tomcat org.springframework.boot org.springframework.boot spring-boot-starter-undertow 只需像上面那样在pom.xml文件中简单的引入依赖就可以切换容器了,不再需要做额外的操作

使用外置的Servlet容器
嵌入式的Servlet容器虽然用的挺爽,但是有时候也离不开外置的Servlet容器,首先我们来比较一下嵌入式跟外置的有优缺点

嵌入式Servlet容器:应用打成jar包
优点:简单、便携
缺点:默认不支持JSP、优化定制比较复杂(使用定制器【ServerProperties、自定义WebServerFactoryCustomizer】,自己编写嵌入式Servlet容器的创建工厂)

外置的Servlet容器:外面安装Tomcat,将应用打成war包的方式
外置的Sverlet的缺点也很明显,那就是使用起来复杂,但是没有内置的那些缺点,相反这些内置的缺点反而是它的优点

创建项目
首先要创建一个项目,使用war的方式打包

创建webapp文件夹
点击图示按钮

来到Modules下的web

双击后会弹出一个框框

我们点击OK

询问是否创建webapp,点击yes即可

创建web.xml
点击图示按钮

点击web.xml

填写生成位置

点击OK然后应用即可

可以看到已经创建完成

之后配置下Tomcat就可以启动项目了

变化
1、将嵌入式的Tomcat指定为了provided

org.springframework.boot spring-boot-starter-tomcat provided 2、编写了一个类继承于SpringBootServletInitializer,并重载了configure方法

public class ServletInitializer extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
// 传入SpringBoot应用的主程序
return application.sources(DemoApplication.class);
}

}

SpringBoot配置嵌入式Servlet容器相关推荐

  1. SpringBoot 配置嵌入式Servlet容器(tomcat,jetty,undertow)

    SpringBoot 默认打包方式为jar包,且可以自启动,就是因为它内嵌了Servlet容器. SpringBoot 默认使用嵌入式Servlet容器,SpringBoot 2.2.5 默认是 To ...

  2. SpringBoot之配置嵌入式Servlet容器

    1.概述 文章目录 1.概述 2.如何修改SpringBoot的默认配置 3.定制和修改Servlet容器的相关配置 4.注册Servlet三大组件 5.替换为其他嵌入式Servlet容器 6.嵌入式 ...

  3. springboot(七) 配置嵌入式Servlet容器

    github代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service ...

  4. Spring Boot配置嵌入式Servlet容器的两种方法

    一.前言 SpringBoot默认使用Tomcat作为嵌入式的Servlet容器 二.如何定制和修改Servlet容器的相关配置: 1.修改和server有关的配置(ServerProperties[ ...

  5. Spring boot配置嵌入式Servlet容器

    Servlet容器 项目,打成war包,放在Tomcat启动 Tomcat就是一个Servlet容器 Spring boot 默认的嵌入了Servlet容器Tomcat 打开项目pom文件 右键Dia ...

  6. Spring Boot中配置嵌入式Servlet容器修改配置

    目录 基本概念 演示及源码 基本概念 如何修改Spring Boot的默认配置: 1. Spring Boot在自动配置很多组建的时候,先看容器中有没有用户自己配置的(@Bean,@Component ...

  7. idea servlet自动配置web.xml_Spring Boot学习04_嵌入式Servlet容器自动配置原理

    在Spring Boot的自动配置包下,找到web模块中的servlet文件夹下的ServletWebServerFactoryConfiguration类 一.嵌入式Servlet容器默认的配置原理 ...

  8. 嵌入式Servlet容器

    配置嵌入式Servlet容器 ##Spring Boot里面内置了嵌入式的Servlet容器(tomcat) 点击pom.xml->右键->Diagrams->show Depend ...

  9. SpringBoot 嵌入式Servlet容器

    一.嵌入式Servlet容器 切换嵌入式Servlet容器 默认支持的webServer :Tomcat, Jetty, or Undertow ServletWebServerApplication ...

最新文章

  1. java 打印box文件
  2. as与c++的反射机制对比
  3. 拆解 | 某平台19元的儿童电话手表,究竟怎么做到的?
  4. Ajax和Jsonp实践
  5. python concat去除重复值语句_Python数据处理从零开始----第二章(pandas)④数据合并和处理重复值...
  6. mysql取消操作系统_Linux下的MySQL简单操作(服务启动与关闭、启动与关闭、查看版本)...
  7. [bzoj1700]: [Usaco2007 Jan]Problem Solving 解题
  8. 第 7 章 本地方法栈
  9. 【codevs3119】高精度开根号(二分答案)
  10. Egret入门学习日记 --- 第十二篇(书中 5.1节 内容)
  11. 计算机学院军训条幅,最新各大高校欢迎新生横幅,确认过眼神,师兄师姐Skr人才。...
  12. zabbix简介以及利用proxy和agent模式监控
  13. 个人展示-LICHUNHUI
  14. 天知道-网络应用-Vue小案例-黑马程序员
  15. 第一行代码 Hello world
  16. 捋一捋Kafka中的消费者API
  17. 如何安装vue并创建vue.js框架项目
  18. 【微机原理作业】8086存储器读写实验
  19. 玩一玩微信公众号开发(二) 管理凭据和自定义菜单
  20. 基于 electron 实现简单易用的抓包、mock 工具

热门文章

  1. flask html 得到文本框 input的内容_【笔记7】HTML及其常见标签
  2. numpy 笔记:finfo
  3. 机器学习笔记:triplet loss
  4. 强化学习(十二) Dueling DQN
  5. 淘商们用数据精细化分析客户群体
  6. Matplotlib实例教程 | markers表
  7. 【linux】11_存储管理文件链接
  8. 政策定价风控审批策略
  9. 产品分析报告|读书新贵——《网易蜗牛读书》
  10. 数学建模学习笔记——蒙特卡洛模拟