Spring Boot 支持 Tomcat,Jetty 和 Undertow 三种 Servlet 容器嵌入到 web 应用程序中, 开发者使用 starter 即可方便嵌入, 默认情况下, 嵌入服务器的访问端口为 8080.
Servlets,Filters & Listeners
这些组件可以同组件扫描注册, 即把他们定义为 Spring Bean.
默认情况下, 如果只有一个 servlet, 则把它映射到 /; 如果有多个 servlet, 则加上 bean name 作为前缀然后映射到 /*.
如果默认策略不能满足你, 你可以通过 ServletRegistrationBean,FilterRegistrationBean 和 ServletListenerRegistrationBean 来完全控制.
如果 Filter 需要按顺序执行, 则可以通过 @Order 注解定义 Filter 的顺序, 或者实现 Ordered 接口.
容器初始化
嵌入式容器不会直接执行 Servlet 3.0+ javax.servlet.ServletContainerInitializer 或 org.springframework.Web.WebApplicationInitializer, 这是故意为之, 是为了防止第三方包程序破坏 Spring Boot 应用程序.
如果你需要执行容器初始化, 可以通过实现注册一个 org.springframework.Web.WebApplicationInitializer Bean. 这个接口只有一个方法 onStartup, 这个方法可以访问 ServletContext.
当使用嵌入式容器时, 可以通过 @ServeltComponentScan 启用 @WebServlet,@WebFilter 和 @WebListener 注解.
ServletWebApplicationContext
ServletWebApplicationContext 是一个特殊的 WebApplicationContext, 主要用于嵌入式 Servelt.
自定义嵌入式容器
一般 Servlet 容器的普通配置可以通过 Spring 的 Environment 属性配置, 也就是在 application.properties 文件中配置.
支持的普通配置:
网络设置: server.port 服务端口; server.address 服务地址.
Session 配置: server.servlet.session.presistent 配置是否启用 session;server.servlet.session.timeout 配置 session 超时时间; server.servlet.session.store-dir 配置 session 存储位置; server.servlet.session.cookie.* 配置 session 的 cookie.
错误处理: 错误页面的位置 server.error.path
ssl
http 压缩
Spring Boot 尽量统一不容器的配置, 但是有些配置是容器特有的, 这种情况下可以使用容器特有配置, 如 server.tomcat,server.undertow.
JSP 限制
当采用嵌入式容器时, 使用 jsp 有些限制:
可执行 jar 不支持 jsp
undertow 不支持 jsp
来源: http://www.bubuko.com/infodetail-3358929.html