小編帶着小白看springboot源碼6

這節來說個大家都比較熟悉的東西,就是servlet三大組件,servlet、filter、listener,再說說springboot的內置tomcat。

也許還會說一下tomcat的運行原理,還有,springboot不是不支持jsp嗎(是因爲嵌入式tomcat的原因),那我就讓springboot支持jsp,其他的還是一樣。

比較長,可能要分爲兩節。

1.servlet配置

想必大家不會陌生servlet配置,寫個類繼承HttpServlet,然後在原來的web.xml文件中配置<servlet-name><servlet-class>還有配置servlet的映射路徑<servlet-mapping>,忘記的小夥伴就回頭看看啊。

現在的springboot配置servlet,也差不多,寫個servlet,但是記住,springboot不能直接識別servlet,需要藉助一個工具ServletRegistrationBean(xxxBean在學spring的時候應該很常見,本質上還是一個Bean,但是有能夠生產bean的能力,類似一個簡單的工廠類)

小編帶着小白看springboot源碼6
我們接着隨意找個配置類(我圖方便,就在那個main方法的主配置類加了),加入如下代碼:

小編帶着小白看springboot源碼6
ok,就這樣,然後運行,瀏覽器輸入網址

小編帶着小白看springboot源碼6
2.配置Filter

配置和上面差不多,寫個Filter實現類,利用FilterRegistrationBean往容器裏添加filter

小編帶着小白看springboot源碼6
小編帶着小白看springboot源碼6
然後運行springboot,輸入xxxxx/hehe就行了

小編帶着小白看springboot源碼6
3.配置listener

listener最容易,因爲前面兩個還有配置url映射,這個listener不用配。寫個listener,利用ServletListenerRegistrationBean添加到容器裏。

小編帶着小白看springboot源碼6
小編帶着小白看springboot源碼6
啓動和關閉應用就能看到結果:

小編帶着小白看springboot源碼6
小編帶着小白看springboot源碼6
最後的就是注意ServletListenerRegistrationBean這個類要傳入泛型,打開這個類,可以看到我們可以定製監聽器的類型

小編帶着小白看springboot源碼6
4,簡單說說嵌入式servlet容器(springboot默認當然是用tomcat)

springboot應用和以前的ssm等應用最大的不同是,springboot可以打成jar包,然後在裝有java運行環境的電腦,就能用java -jar xxx.jar就能夠直接運行一個springboot應用,非常方便,但是缺點是不支持jsp;

而ssm、ssh等的就要達成war包,然後在新的電腦上配置java環境,下載tomcat,再配置tomcat和java的版本,然後才能部署應用,運行,emmmm....估計要很久!

造成這種結果的最大原因就是springboot裝的是小tomcat(咳咳,這是我自己爲了方便理解才說的,標準稱呼是嵌入式servlet容器,英文全程:EmbeddedServletContainer),以下假如看到小tomcat,就要理解是嵌入式servlet容器啊(EmbeddedServletContainer),這麼長的單詞一定要記下來,因爲後面會有更長的.....

首先簡單說說servlet容器種類。常見的Tomcat(springboot默認),Jetty(適用於長連接,比如聊天這種),Undertow(不支持jsp,但是併發性能非常好),各有優勢。

打開pom配置文件,可以看到

小編帶着小白看springboot源碼6
然後將tomcat變爲jetty就可以了,maven就會自動幫你下載對應的jar包

小編帶着小白看springboot源碼6
運行springboot,控制檯輸出如下所示,你就成功了。

小編帶着小白看springboot源碼6
到這裏,springboot配置servlet三大組件以及切換嵌入式servlet容器就講完了,接下來幹什麼想必都很清楚,當然是怎麼修改容器的默認配置以及運行原理啊!

不知道大家有沒有發現上圖端口是8081(默認8080),在配置文件是怎麼配置的(以前說過,估計很多人都知道),爲什麼會起作用?我能不能用@Bean的方式修改容器默認參數呢?以及其中的運行原理?當然,也會帶着大家一起走走從主配置類開始,通過一個run方法,逐漸的就運行容器的過程。

後面還會說說不用嵌入式servlet容器的方式,我就用我外界下載的tomcat和springboot應用一起用,並且還支持jsp。
史上最透徹最細節的Spring事務原理專題講座:https://ke.qq.com/course/361278?tuin=71c3cb31

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章