嵌入式
springboot默认使用嵌入式的tomcat,依赖spring-boot-starter-web默认引入的是tomcat的jar包。
修改servlet相关配置:server.port=8888; server.xxx=...;
修改tomcat位置:server.tomcat.xx=xxx
嵌入式容器三大组件注册
嵌入式tomcatspringboot项目没有web.xml,无法在配置文件web.xml中配置三大组件,使用配置类来代替web.xml的配置作用。
1. 创建自己的三大组件
2. 将三大组件分别通过ServletRegistrationBean、FilterRegistrationBean和ServletListenerRegistrationBean 件自定义组件注册并使用@Bean加入容器中。通过对应的xxxRegistrationBean可设置相应的参数,如初始化参数、启动顺序等等。
springboot帮我们自动注册了springMvc的前端控制器:DispatchServlet。默认拦截 “/” 所有请求,包括静态资源,但不包括jsp,可以通过spring.mvc.servlet.path=/mas来改变拦截路径。
# 输出中文异常
server.tomcat.uri-encoding=utf-8
server.servlet.encoding.force=true
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
嵌入式容器切换
可切换jetty(适合长时间连接,如聊天..)、underTow(不支持jsp)。
将spring-boot-starter-web中的tomcat相关jar包排除,引入对应容器的jar包即可。
使用外部容器
1. 创建springboot应用,选择war包方式;
2. 创建好的工程默认没有webapp文件夹,需手动创建webapp、WEB-INF文件夹和web.xml文件,也可使用项目信息功能创建。
3. 配置外置tomcat并将项目部署其中,ApplicationContext定义部署项目应用名,完成后即可。
此时在配置文件中使用server.servlet.context-path=xx来改变应用名不会生效(这是内置tomcat的修改方式)。
配置视图的前后缀:
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
使用外置tomcat后,可在web.xml中正常配置三大组件。
除了主程序类,还多了一个ServletInitializer.java类(类名无所谓),继承SpringBootServletInitializer并重写configure方法,同时传入主程序类。