springboot注入servlet的方法
問(wèn):有了springMVC,為什么還要用servlet?有了servlet3的注解,為什么還要使用ServletRegistrationBean注入的方式?
使用場(chǎng)景:在有些場(chǎng)景下,比如我們要使用hystrix-dashboard,這時(shí)候就需要注入HystrixMetricsStreamServlet(第三方的servlet),該servlet是hystrix的組件。
一、代碼
1、TestServlet(第一個(gè)servlet)
package com.xxx.secondboot.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestServlet extends HttpServlet { private static final long serialVersionUID = -4619665430596950563L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("zhaojigang servlet"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
2、Testservlet2(第二個(gè)servlet)
package com.xxx.secondboot.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestServlet2 extends HttpServlet { private static final long serialVersionUID = 3788279972938793265L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("zhaojigang servlet2"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
3、ServletConfig(servlet注入配置類)
package com.xxx.secondboot.servlet; import org.springframework.boot.context.embedded.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ServletConfig { @Bean public TestServlet testServlet(){ return new TestServlet(); } @Bean public ServletRegistrationBean testServletRegistrationBean(TestServlet testServlet){ ServletRegistrationBean registration = new ServletRegistrationBean(testServlet); registration.setEnabled(true); registration.addUrlMappings("/servlet/test"); return registration; } /********************************************/ @Bean public TestServlet2 testServlet2(){ return new TestServlet2(); } @Bean public ServletRegistrationBean test2ServletRegistrationBean(TestServlet2 testServlet2){ ServletRegistrationBean registration = new ServletRegistrationBean(testServlet2); registration.setEnabled(true); registration.addUrlMappings("/servlet/test2"); return registration; } }
說(shuō)明:使用ServletRegistrationBean來(lái)注入servlet,對(duì)于每一個(gè)servlet都有一個(gè)ServletRegistrationBean來(lái)注入。
注意:如果只是自己要使用servlet,可以直接只用servlet3的注解來(lái)聲明servlet就好,但是像HystrixMetricsStreamServlet這樣的第三方servlet,就只能通過(guò)上邊這樣的方式來(lái)搞了。
二、測(cè)試
啟動(dòng)服務(wù),瀏覽器輸入"http://localhost:8083/servlet/test","http://localhost:8083/servlet/test2",查看console的輸出。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot 2.X優(yōu)雅的解決跨域問(wèn)題
這篇文章主要給大家介紹了關(guān)于Spring Boot 2.X如何優(yōu)雅的解決跨域問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot 2.X具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03java 判斷一個(gè)數(shù)組中的數(shù)值是否連續(xù)相鄰的方法
下面小編就為大家分享一篇java 判斷一個(gè)數(shù)組中的數(shù)值是否連續(xù)相鄰的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03使用java8 API遍歷過(guò)濾文件目錄及子目錄和隱藏文件示例詳解
這篇文章主要介紹了使用java8API遍歷過(guò)濾文件目錄及子目錄及隱藏文件示例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07java二維數(shù)組指定不同長(zhǎng)度實(shí)例方法
在本篇內(nèi)容里小編給大家分享了一篇關(guān)于java二維數(shù)組指定不同長(zhǎng)度實(shí)例方法,有興趣的朋友們可以學(xué)習(xí)下。2021-03-03MybatisPlus?BaseMapper?實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)增刪改查源碼
MybatisPlus?是一款在?Mybatis?基礎(chǔ)上進(jìn)行的增強(qiáng)?orm?框架,可以實(shí)現(xiàn)不寫(xiě)?sql?就完成數(shù)據(jù)庫(kù)相關(guān)的操作,這篇文章主要介紹了MybatisPlus?BaseMapper?實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)增刪改查源碼解析,需要的朋友可以參考下2023-01-01SpringBoot項(xiàng)目執(zhí)行腳本 自動(dòng)拉取最新代碼并重啟的實(shí)例內(nèi)容
在本篇文章里小編給大家整理的是一篇關(guān)于SpringBoot項(xiàng)目執(zhí)行腳本 自動(dòng)拉取最新代碼并重啟的實(shí)例內(nèi)容,有需要的朋友們參考下。2019-12-12MyBatis圖文并茂講解注解開(kāi)發(fā)一對(duì)一查詢
這篇文章主要介紹了SpringBoot中Mybatis注解一對(duì)一查詢的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07使用arthas命令redefine實(shí)現(xiàn)Java熱更新(推薦)
今天分享一個(gè)非常重要的命令 redefine ,主要作用是加載外部的 .class 文件,用來(lái)替換 JVM 已經(jīng)加載的類,總結(jié)起來(lái)就是實(shí)現(xiàn)了 Java 的熱更新,感興趣的朋友跟隨小編一起看看吧2020-05-05