Servlet運行原理-Tomcat啓動流程-Mybatis運行原理

Servlet運行原理:

在這裏插入圖片描述
1:瀏覽器發送一個HTTP請求給服務器(get方式或者爲post方式)
2:服務器內部會根據url判斷請求的Servlet,併產生兩個對象ServletRequest請求對象和ServletResponse響應對象
3:開闢一個線程處理本次請求,將產生的對象傳入線程中
4:調用對應的Servlet中的service方法,如果我們自定義的Servlet重寫了service方法會直接執行service方法,如果沒有重寫則會調用父類的service方法(先調用的是service(ServletRequest req,ServletResponse resp)方法將req,resp強轉爲HttpServletRequest和HttpServletResponse對象,再調用service(HttpServletRequest req,HttpServletResponse resp)方法)
5:父類的service方法會根據請求的方式調用對應的doGet()或doPost()方法,此時因爲多態實際上我們調用的是我們自定義Servlet中重寫的doGet和doPost方法,如果沒有重寫會調用父類的相應的方法返回錯誤信息
6:服務器將結果響應給瀏覽器,本次請求結束

Tomcat啓動原理:

在這裏插入圖片描述
Tomcat的啓動方式有兩種,一種是直接點擊startup.bat一種是在cmd黑窗口中輸入catalina.bat加上start參數,其實兩種方式底層實現是一樣的。
1:Tomcat的啓動入口是BootStrap類中的main方法,在main方法中,使用(BootStrap類的對象)bootstrap.init()來初始化類加載器和(通過反射)創建Catalina實例,然後再啓動Catalina線程。
2:Bootstrap的(BootStrap類的對象)demon.start()方法就會調用Catalina的start方法。Catalina實例執行start方法。這裏有兩個點,一個是load()加載server.xml配置(內部創建一個Digester類來解析servlet.xml文件得到容器的配置)、初始化Server的過程(生成各組件對象(Server、Service、Container、Connector等)以及建立相互之間的關係),加載完成後調用getServer().start()開啓服務、初始化並開啓一系列組件、子容器的過程

Mybatis運行原理:

當Mybatis運行開始時,先通過Resources工具類加載核心配置文件,之後通過XMLConfigBuilder對配置文件進行解析,將解析的結果封裝爲Configuration對象,再將Configuration作爲參數構建DefaultSqlSessionFactory對象,至此工廠對象創建完畢。
接下來通過工廠對象調用openSession()的方法創建SqlSession對象,在這個過程中需要通過TransactionFactory生成Transaction對象,以及生成核心執行器Executor對象,再通過這些對象構建DefaultSqlSession對象,至此SqlSession對象構建完畢。
之後通過SqlSession對象執行相應的操作,如果操作成功調用commit提交事務,如果操作失敗調用rollback回滾事務。
最後調用close關閉session資源。

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