Spring Boot如何支持嵌入式Servlet容器
Spring Boot支持Tomcat、Jetty和Undertow三種Servlet容器嵌入到Web應(yīng)用程序中,開(kāi)發(fā)者使用starter即可方便嵌入,默認(rèn)情況下,嵌入服務(wù)器的訪(fǎng)問(wèn)端口為8080。
Servlets、Filters & Listeners
這些組件可以同組件掃描注冊(cè),即把他們定義為Spring Bean。
默認(rèn)情況下,如果只有一個(gè)servlet,則把它映射到/;如果有多個(gè)servlet,則加上bean name作為前綴然后映射到/*。
如果默認(rèn)策略不能滿(mǎn)足你,你可以通過(guò)ServletRegistrationBean、FilterRegistrationBean和ServletListenerRegistrationBean來(lái)完全控制。
如果Filter需要按順序執(zhí)行,則可以通過(guò)@Order注解定義Filter的順序,或者實(shí)現(xiàn)Ordered接口。
容器初始化
嵌入式容器不會(huì)直接執(zhí)行Servlet 3.0+ javax.servlet.ServletContainerInitializer或org.springframework.web.WebApplicationInitializer,這是故意為之,是為了防止第三方包程序破壞Spring Boot應(yīng)用程序。
如果你需要執(zhí)行容器初始化,可以通過(guò)實(shí)現(xiàn)注冊(cè)一個(gè)org.springframework.web.WebApplicationInitializer Bean。這個(gè)接口只有一個(gè)方法onStartup,這個(gè)方法可以訪(fǎng)問(wèn)ServletContext。
當(dāng)使用嵌入式容器時(shí),可以通過(guò)@ServeltComponentScan啟用@WebServlet,@WebFilter和@WebListener注解。
ServletWebApplicationContext
ServletWebApplicationContext是一個(gè)特殊的WebApplicationContext,主要用于嵌入式Servelt。
自定義嵌入式容器
一般Servlet容器的普通配置可以通過(guò)Spring的Environment屬性配置,也就是在application.properties文件中配置。
支持的普通配置:
網(wǎng)絡(luò)設(shè)置:server.port服務(wù)端口; server.address服務(wù)地址。 Session配置:server.servlet.session.presistent配置是否啟用session;server.servlet.session.timeout配置session超時(shí)時(shí)間;
server.servlet.session.store-dir配置session存儲(chǔ)位置;
server.servlet.session.cookie.*配置session的cookie。
錯(cuò)誤處理:錯(cuò)誤頁(yè)面的位置server.error.path ssl http壓縮Spring Boot盡量統(tǒng)一不容器的配置,但是有些配置是容器特有的,這種情況下可以使用容器特有配置,如server.tomcat,server.undertow。
JSP限制
當(dāng)采用嵌入式容器時(shí),使用jsp有些限制:
可執(zhí)行jar不支持jsp undertow不支持jsp以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 如何對(duì)php程序中的常見(jiàn)漏洞進(jìn)行攻擊2. PHP循環(huán)與分支知識(shí)點(diǎn)梳理3. jsp EL表達(dá)式詳解4. Spring MVC+ajax進(jìn)行信息驗(yàn)證的方法5. JavaWeb Servlet中url-pattern的使用6. Ajax提交post請(qǐng)求案例分析7. Ajax請(qǐng)求超時(shí)與網(wǎng)絡(luò)異常處理圖文詳解8. ASP中格式化時(shí)間短日期補(bǔ)0變兩位長(zhǎng)日期的方法9. JSP之表單提交get和post的區(qū)別詳解及實(shí)例10. ThinkPHP5 通過(guò)ajax插入圖片并實(shí)時(shí)顯示(完整代碼)
