dispatcherServlet在tomcat啟動時如何被加載(1)

目錄


在springboot工程中, 如何添加一個servlet呢?

方法1 : 使用@WebServlet注解
方法2 : 使用ServletRegistrationBean進行注冊

springmvc 采用的就是方式2和springboot集成的, 看一下源碼

在這里插入圖片描述
springboot 字段裝配里面有這個類, 看一下源碼

在這里插入圖片描述
90行, 創建了一個DispatcherServlet對象
在這里插入圖片描述
120行創建了一個DispatcherServletRegistrationBean對象, 它是繼承于ServletRegistrationBean,通過這個類將DispatcherServlet添加到tomcat中

現在討論一下,DispatcherServletRegistrationBean在tomcat啟動過程中是被加載的, 看一下DispatcherServletRegistrationBean這個類的繼承關系
在這里插入圖片描述
可以看到, 它實現了ServletContextInitializer這個接口, tomcat在啟動過程中會查找這個接口的所有子類, 進行處理

看一下tomcat的啟動流程
refresh() -> onRefresh()
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
此處找到了dispatcherServlet這個類, 到這里dispatcherServlet已經被添加到tomcat中

接下來看一下dispatcherServlet里面的initStrategies()方法 :
在這里插入圖片描述
在這個方法中進行了大量的初始化操作, 讓我們看一下這個方法是如何被調用的, 看一下dispatcherServlet這個類的繼承關系
在這里插入圖片描述
當我們訪問一個接口的時候, 首先會指定servlet的init方法, 首先看一下init方法
我們會發現, dispatcherServlet這個類里面沒有init方法, 說明是他的父類重寫了init方法, 經過尋找發現
HttpServletBean這個類重寫了init方法 :
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
最終執行了initStrategies方法進行了初始化

下一篇說一下初始化都進行了哪些操作

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41700.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41700.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41700.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入探究Socks5代理與IP代理在網絡安全與爬蟲中的應用

1. Socks5代理:打開網絡隧道的多功能工具 Socks5代理是一種流行的代理協議,它在傳輸層為數據包提供了隧道。相較于之前的版本,Socks5不僅支持TCP連接,還可以處理UDP流量,使其在需要實時數據傳輸的應用中表現出色。在網…

Zabbix配置通用的TCP/IP:port監控項

我們經常的用接口,比如說FTP、HTTP、DNS、數據庫接口,都可以用IP:PORT方式探測其是否存活,那么我們去繁就簡,就簡單監控一下IP:PORT吧! 1、新建主機: 填入主機名稱、群組、Agent就是127.0.0.1…

解決Adobe Flash Player已被屏蔽

問題:該插件不支持 原因:現在瀏覽器默認禁用flash 博主當前使用的是谷歌瀏覽器Chrome 2個主要方法都已經失效 搜索一圈后,之前博客給出的2個主要方法都已經失效。 1、flash.cn 下載本地播放器 2、在chrome中打開flash的禁用開關 2023年解…

LangChain源碼逐行解密之系統(二)

LangChain源碼逐行解密之系統 20.2 serapi.py源碼逐行剖析 我們可以看一下Google查詢的例子,在LangChain中有多種實現的方式。 如圖20-5所示,在utilities的serpapi.py代碼文件中實現了SerpAPIWrapper。 圖20- 5 utilities的serpapi.py的SerpAPIWrapper 在langchain目錄的se…

@pyrallis.wrap()

pyrallis.wrap import pyrallis pyrallis.wrap() 這個pyrallis.wrap()是什么 pyrallis.wrap() 是一個 Python 裝飾器(Decorator),用于將函數或方法包裝在 Pyrallis 框架提供的性能分析器中。裝飾器是 Python 中的一種特殊語法,允許…

如何避免爬蟲IP被屏蔽

各位爬友們好,作為一名專業的爬蟲代理提供者,我要和大家分享一些避免爬蟲IP被屏蔽的實用技巧。你知道嗎,當我們爬取數據的時候,很容易被目標網站識別出來并封禁我們的IP地址,導致無法繼續爬取數據。這個問題困擾了很多…

7. 實現 API 自動生成

目錄 1. pom.xml中引用依賴 2. 引入相關的依賴 3. 編寫配置類 4. application.yml 中添加配置 5. API 常用注解 6. 訪問 API 列表 7. API 導入 Postman 使用 Springfox Swagger生成 API,并導入 Postman,完成API單元測試。 Swagger 簡介:Swag…

執行Lua腳本后一直查詢不到Redis中的數據(附帶問題詳細排查過程,一波三折)

文章目錄 執行Lua腳本后一直查詢不到Redis中的數據(附帶詳細問題排查過程,一波三折)問題背景問題1:Lua腳本無法切庫問題2:RedisTemlate切庫報錯問題3:序列化導致數據不一致問題4:Lua腳本中單引號…

Etcd備份及恢復

一、Etcd數據備份 1、備份命令 [rootlocalhost ~]# export ETCDCTL_API3 [rootlocalhost ~]# /data/etcd-3.4.9/bin/etcdctl --endpoints10.2.20.108:2379 snapshot save etcd-date "%Y-%m-%d_%H-%M-%S".snapshot 2、備份完成后會在當前目錄生成備份文件 [rootlo…

vue實現打印功能

在Vue應用中調用打印機功能,可以使用JavaScript的window.print()方法。這個方法會打開打印對話框,然后讓我們選擇打印設置并打印文檔,但是尼這種方法依賴于瀏覽器的打印功能。 以下是一個簡單的示例,演示如何在Vue組件中調用打印…

Linux Tracing Technologies

目錄 1. Linux Tracing Technologies 1. Linux Tracing Technologies Linux Tracing TechnologieseBPFXDPDPDK

Flask Web開發實戰(狼書)| 筆記第1、2章

前言 2023-8-11 以前對網站開發萌生了想法,又有些急于求成,在B站照著視頻敲了一個基于flask的博客系統。但對于程序的代碼難免有些囫圇吞棗,存在許多模糊或不太理解的地方,只會照葫蘆畫瓢。 而當自己想開發一個什么網站的時&…

ubuntu部署haproxy

HAProxy是可提供高可用性、負載均衡以及基于TCP和HTTP應用的代理. 1、更新系統報 通過在終端中運行以下命令,確保所有系統包都是最新的 sudo apt updatesudo apt upgrade2、安裝Haproxy sudo apt install haproxy設置開機自動啟動haproxy服務 sudo systemctl en…

Lnton羚通關于如何解決nanoPC-T4 upgrade報錯問題?

nanoPC-T4 在 ??# sudo apt update 和 sudo apt upgrade??升級或安裝軟件 ??sudo apt install xxx??時遇到以下問題:??Failed to set up interface with /etc/hostapd/? Setting up hostapd (2:2.6-15ubuntu2.8) ... Job for hostapd.service failed be…

ssm+vue醫院住院管理系統源碼和論文PPT

ssmvue醫院住院管理系統源碼和論文PPT012 開發工具:idea 數據庫mysql5.7(mysql5.7最佳) 數據庫鏈接工具:navcat,小海豚等 開發技術:java ssm tomcat8.5 摘 要 隨著時代的發展,醫療設備愈來愈完善,醫院也變成人們生…

基于IMX6ULLmini的linux裸機開發系列一:匯編點亮LED

思來想去還是決定記錄一下點燈,畢竟萬物皆點燈嘛 編程步驟 使能GPIO時鐘 設置引腳復用為GPIO 設置引腳屬性(上下拉、速率、驅動能力) 控制GPIO引腳輸出高低電平 使能GPIO時鐘 其實和32差不多 先找到控制LED燈的引腳,也就是原理圖 文件名 C:/Us…

spring頭約束(全部)

文章目錄 spring-mvcspring-aopspring-txspring-contextspring-taskspring-cachespring-jdbcp命令空間spring-jeejmslangoxmutil總結 spring-mvc <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-…

AUTOSAR NvM Block的三種類型

Native NVRAM block Native block是最基礎的NvM Block&#xff0c;可以用來存儲一個數據&#xff0c;可以配置長度、CRC等。 Redundant NVRAM block Redundant block就是在Native block的基礎上再加一個冗余塊&#xff0c;當Native block失效&#xff08;讀取失敗或CRC校驗失…

劍指offer44.數字序列中某一位的數字

最后一道題&#xff0c;我一定要自己做出來&#xff0c;想了不到一個小時想法差不多成熟了&#xff0c;但是有一個小細節出問題了&#xff0c;這個問題我在idea上debug都沒debug出來。我先講我的題解然后再講我這個小問題出在哪里吧。以下是我的代碼&#xff1a; class Soluti…

PHP手術麻醉系統源碼,自動生成麻醉和護理醫療文書

一套手術麻醉系統源碼&#xff0c;可二次開發 手術室麻醉臨床信息系統&#xff08;AIMS&#xff09;是應用于醫院手術室、麻醉科室的計算機軟件系統。該系統針對整個圍術期&#xff0c;對病人進行全程跟蹤與信息管理&#xff0c;自動集成病人HIS、LIS、RIS、PACS信息&#xff0…