【串线篇】spring boot配置嵌入式servlet容器
SpringBoot默认使用Tomcat作为嵌入式的Servlet容器
问题?
一、如何定制和修改Servlet容器的相关配置
1、方法1修改和server有关的配置(ServerProperties【也是EmbeddedServletContainerCustomizer】)
- server.port=8081
- server.context‐path=/crud
- server.tomcat.uri‐encoding=UTF‐8
- //通用的Servlet容器设置
- server.xxx
- //Tomcat的设置
- server.tomcat.xxx
2、方法2新建一个config类
编写一个EmbeddedServletContainerCustomizer:嵌入式的Servlet容器的定制器;来修改Servlet容器的配置
- @Bean //一定要将这个定制器加入到容器中
- public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){
- return new EmbeddedServletContainerCustomizer() {
- //定制嵌入式的Servlet容器相关的规则
- @Override
- public void customize(ConfigurableEmbeddedServletContainer container) {
- container.setPort(8083);
- }
- }
- }
二、注册Servlet三大组件【Servlet、Filter、Listener】
由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器(即嵌入式的tomcat)
来启动SpringBoot的web应用,没有web.xml文件。
1.新建这三个servlet类
2.注册三大组件用以下方式新建一个config类,在这个配置类里传入自己的servlet
ServletRegistrationBean【Servlet】
- //注册三大组件
- @Bean
- public ServletRegistrationBean myServlet(){
- ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(),"/myServlet");
- return registrationBean; 6
}
FilterRegistrationBean【Filter】
- @Bean
- public FilterRegistrationBean myFilter(){
- FilterRegistrationBean registrationBean = new FilterRegistrationBean();
- registrationBean.setFilter(new MyFilter());
- registrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
- return registrationBean; 7 }
ServletListenerRegistrationBean【Listener】
- @Bean
- public ServletListenerRegistrationBean myListener(){
- ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(new MyListener());
- return registrationBean; 5
}
SpringBoot帮我们自动SpringMVC的时候,自动的注册SpringMVC的前端控制器;DIspatcherServlet;
DispatcherServletAutoConfiguration中:
- @Bean(name = DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME)
- @ConditionalOnBean(value = DispatcherServlet.class, name = DEFAULT_DISPATCHER_SERVLET_BEAN_NAME)
- public ServletRegistrationBean dispatcherServletRegistration( DispatcherServlet dispatcherServlet) {
- ServletRegistrationBean registration = new ServletRegistrationBean(
- //默认拦截: / 所有请求;包静态资源,但是不拦截jsp请求;/*会拦截jsp
- //可以通过server.servletPath来修改SpringMVC前端控制器默认拦截的请求路径
- registration.setName(DEFAULT_DISPATCHER_SERVLET_BEAN_NAME); registration.setLoadOnStartup(
- this.webMvcProperties.getServlet().getLoadOnStartup()); if (this.multipartConfig != null) {
- registration.setMultipartConfig(this.multipartConfig);
- }
- return registration;
- }
三、替换为其他嵌入式Servlet容器
(默认是嵌入Tomcat)
默认支持:
Tomcat(默认使用)
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring‐boot‐starter‐web</artifactId>
- 引入web模块默认就是使用嵌入式的Tomcat作为Servlet容器;
- </dependency>
Jetty
- <!‐‐ 引入web模块 ‐‐>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring‐boot‐starter‐web</artifactId>
- <exclusions>
- <exclusion>
- <artifactId>spring‐boot‐starter‐tomcat</artifactId>
- <groupId>org.springframework.boot</groupId>
- </exclusion>
- </exclusions>
- </dependency>
- <!‐‐引入其他的Servlet容器‐‐>
- <dependency>
- <artifactId>spring‐boot‐starter‐jetty</artifactId>
- <groupId>org.springframework.boot</groupId>
- </dependency>
Undertow
- <!‐‐ 引入web模块 ‐‐>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring‐boot‐starter‐web</artifactId>
- <exclusions>
- <exclusion>
- <artifactId>spring‐boot‐starter‐tomcat</artifactId>
- <groupId>org.springframework.boot</groupId>
- </exclusion>
- </exclusions>
- </dependency>
- <!‐‐引入其他的Servlet容器‐‐>
- <dependency>
- <artifactId>spring‐boot‐starter‐undertow</artifactId>
- <groupId>org.springframework.boot</groupId>
- </dependency>
【串线篇】spring boot配置嵌入式servlet容器的更多相关文章
- 17. Spring Boot 配置嵌入式Servlet容器
一.如何定制和修改Servlet容器的相关配置 1.配置文件(ServerProperties): 优先级最高 server.port=8081 server.context‐path=/crud s ...
- Spring boot 配置嵌入式Servlet容器
SpringBoot默认使用Tomcat作为嵌入式的Servlet容器 1.修改和server有关的配置(ServerProperties[也是EmbeddedServletContainerCust ...
- (7)Spring Boot web开发 --- servlet容器
文章目录 配置嵌入式 Servlet 容器 注册 三大组件 使用其他 servlet 容器 使用外置的 `Servlet` 容器 配置嵌入式 Servlet 容器 Spirng Boot 默认使用自带 ...
- 17、配置嵌入式servlet容器(1)
SpringBoot默认使用Tomcat作为嵌入式的Servlet容器 1).如何定制和修改Servlet容器的相关配置 1.修改和server有关的配置 (Se ...
- 18、配置嵌入式servlet容器(2)
使用其他Servlet容器 -Jetty(长连接) -Undertow(不支持jsp) 替换为其他嵌入式Servlet容器 默认支持: Tomcat(默认使用) Jetty: <depend ...
- SpringBoot配置嵌入式Servlet容器
1).如何定制和修改Servlet容器的相关配置: 1.修改和server有关的配置(ServerProperties[也是EmbeddedServletContainerCustomizer]): ...
- 配置嵌入式Servlet容器
SpringBoot默认是用的是Tomcat作为嵌入式的Servlet容器:问题?1).如何定制和修改Servlet容器的相关配置:1.修改和server有关的配置(ServerProperties) ...
- 19、配置嵌入式servlet容器(下)
使用外置的Servlet 嵌入式Servlet容器:应用打成可执行的j ar 优点:简单.便携: 缺点:默认不支持JSP.优化定制比较复杂 使用定制器[ServerProperti ...
- SpringBoot起飞系列-配置嵌入式Servlet容器(八)
一.前言 springboot中默认使用的是tomcat容器,也叫做嵌入式的servlet容器.因为它和我们平常使用的tomcat容器不一样,这个tomcat直接嵌入到的springboot,平常我们 ...
随机推荐
- 插头DP讲解+[BZOJ1814]:Ural 1519 Formula 1(插头DP)
1.什么是插头$DP$? 插头$DP$是$CDQ$大佬在$2008$年的论文中提出的,是基于状压$D$P的一种更高级的$DP$多用于处理联通问题(路径问题,简单回路问题,多回路问题,广义回路问题,生成 ...
- 转载自:StringUtils的常见方法
转载自:https://blog.csdn.net/simple_smile_sun/article/details/51819158 注:运用StringUtils需要导入相关jar文件,commo ...
- 北风设计模式课程---依赖倒置原则(Dependency Inversion Principle)
北风设计模式课程---依赖倒置原则(Dependency Inversion Principle) 一.总结 一句话总结: 面向对象技术的根基:依赖倒置原则(Dependency Inversion ...
- [git] 如何处理push失败的commit
在使用git及github时,遇到一个问题:commit了一个超过100M的大文件,然后在push时失败,然后就再也无法push了,本地大文件删除了,再commit,再push也还是提示有大文件提交. ...
- RAC容灾演练
RAC容灾演练:在节点一进行验证:步骤 操作命令关闭步骤 检测RAC集群资源状态 crsctl status resource -t 关闭监听 srvctl stop listener -n < ...
- Vue音乐播放器(三):项目目录介绍,以及图标字体、公共样式等资源准备
我们所有的开发都是基于修改src下面的目录 里面的文件去做开发即可 stylus的使用是需要下载stylus-loader的包的 渲染效果 配置修改eslintrc.js 配置了webpack.bas ...
- AssertionError: View function mapping is overwriting an existing endpoint function: insertCase
首先,理解这个错误是什么意思,以及出现的原因: 使用Flask定义URL的时候,如果出现"AssertionError: View function mapping is overwriti ...
- Arrays.toList工具类
- Delphi XE2 之 FireMonkey 入门(29) - 数据绑定: TBindingsList: 表达式的 Evaluate() 方法
Delphi XE2 之 FireMonkey 入门(29) - 数据绑定: TBindingsList: 表达式的 Evaluate() 方法 TBindingsList 中可能不止一个表达式, 通 ...
- 《图解设计模式》读书笔记8-2 MEMENTO模式
目录 Memento模式 示例代码 程序类图 代码 角色和类图 模式类图 角色 思路拓展 接口可见性 保存多少个Memento 划分Caretaker和Originator的意义 Memento模式 ...