1. 程式人生 > 程式設計 >Spring Boot如何支援嵌入式Servlet容器

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。