Spring Boot如何支持嵌入式Servlet容器
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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Spring Boot使用嵌入式容器,那怎么配置自定义Filter呢
-
Spring boot应用如何支持https javaspringhttpsspring-bootspring-mvc
-
Spring Boot如何支持嵌入式Servlet容器
-
如何将JSP/Servlet项目转换为Spring Boot项目
-
精尽Spring Boot源码分析 - 支持外部 Tomcat 容器的实现
-
SpringBoot 源码解析 (六)----- Spring Boot的核心能力 - 内置Servlet容器源码分析(Tomcat)
-
Spring Boot 中如何支持异步方法
-
Spring-Boot使用嵌入式容器,那怎么配置自定义Filter呢
-
Spring boot中嵌入式Servlet容器的配置和启动原理
-
说说在 Spring Boot 中如何修改 Servlet 容器端口