Spring Boot如何支持嵌入式Servlet容器【详解】

前言:

这篇文章主要介绍了Spring Boot如何支持嵌入式Servlet容器,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。如果需要其他学习资料或教程的,可以点击进入,暗号:csyy,绝对免费提供!因为资料太多无法全部展示,这只是其中的一点点,需要学习的朋友,可以进来和其他小伙伴一起探讨学习!

在这里插入图片描述

Spring Boot支持Tomcat、Jetty和Undertow三种Servlet容器嵌入到Web应用程序中,开发者使用starter即可方便嵌入,默认情况下,嵌入服务器的访问端口为8080。

1、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文件中配置。

支持的普通配置:

  1. 网络设置:server.port服务端口; server.address服务地址。
  2. 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

结语:

以上就是本文的全部内容,希望对大家的学习有所帮助。如果还需要其他学习资料或者面试资料的,可以点击进入,暗号:csyy,有大量的资料免费提供!
在这里插入图片描述

最后祝大家都能工作顺利,学习顺利哦!

猜你喜欢

转载自blog.csdn.net/m0_45270667/article/details/108980302