第209次(源碼分析)學(xué)習(xí)" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > servlet、tomcat及Mybatis底層源碼解析

servlet、tomcat及Mybatis底層源碼解析

時(shí)間:2023-07-12 14:27:02 | 來源:網(wǎng)站運(yùn)營

時(shí)間:2023-07-12 14:27:02 來源:網(wǎng)站運(yùn)營

servlet、tomcat及Mybatis底層源碼解析:

訓(xùn)練大綱(第105天)

大家如果想快速有效的學(xué)習(xí),思想核心是“以建立知識體系為核心”,具體方法是“守破離”。確保老師課堂上做的操作,反復(fù)練習(xí)直到熟練。




第209次(源碼分析)

學(xué)習(xí)主題:源碼分析

學(xué)習(xí)目標(biāo):







對應(yīng)視頻:

http://www.itbaizhan.cn/course/id/85.html

對應(yīng)文檔:



對應(yīng)作業(yè)

  1. Tomcat和Servlet源碼分析
    1. 寫出Tomcat重要的類以及作用
Server:服務(wù)器的意思,代表整個(gè) tomcat 服務(wù)器,一個(gè) tomcat 只有一個(gè) Server. Server 中包含至少一個(gè) Service 組件,用于提供具體服務(wù)。這個(gè)在配置文件中也得到很 好的體現(xiàn)(port=“8005” shutdown="SHUTDOWN"是在 8005 端口監(jiān)聽到"SHUTDOWN"命 令,服務(wù)器就會停止)

Servic:邏輯功能層, 一個(gè) Server 可以包含多個(gè) Service.Service 接收客戶端的請求,然后解析請求,完成相應(yīng)的業(yè)務(wù)邏輯,然后把處理后的結(jié) 果返回給客戶端,一般會提供兩個(gè)方法,一個(gè) start 打開服務(wù) Socket 連接,監(jiān)聽服務(wù)端口, 一個(gè) stop 停止服務(wù)釋放網(wǎng)絡(luò)資源。

Connector:連接器,是 Service 的核心組件之一,一個(gè) Service 可以有多個(gè) Connector,主要是 連接客戶端請求,用于接受請求并將請求封裝成 Request 和 Response,然后交給 Container 進(jìn) 行處理,Container 處理完之后在交給 Connector 返回給客戶端。

Container:Service 的另一個(gè)核心組件,按照層級有 Engine,Host,Context,Wrapper 四種,一個(gè) Service 只有一個(gè) Engine,其主要作用是執(zhí)行業(yè)務(wù)邏輯

Engine:一個(gè) Service 中有多個(gè) Connector 和一個(gè) Engine,Engine 表示整個(gè) Servlet 引擎,一個(gè) Engine 下面可以包含一個(gè)或者多個(gè) Host,即一個(gè) Tomcat 實(shí)例可以配置多個(gè)虛擬主機(jī),默認(rèn) 的情況下 conf/server.xml 配置文件中<Engine name="Catalina" defaultHost="localhost"> 定 義了一個(gè)名為 Catalina 的 Engine。一個(gè) Engine 包含多個(gè) Host 的設(shè)計(jì),使得一個(gè)服務(wù)器實(shí)例可以承擔(dān)多個(gè)域名的服務(wù)

Host:代表一個(gè)站點(diǎn),也可以叫虛擬主機(jī),一個(gè) Host 可以配置多個(gè) Context,在 server.xml 文 件 中 的 默 認(rèn) 配 置 為 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">, 其中 appBase=webapps, 也就是<CATALINA_HOME>/webapps 目錄, unpackingWARS=true 屬性指定在 appBase 指定的目錄中的 war 包都自動的解壓, autoDeploy=true 屬性指定對加入到 appBase 目錄的 war 包進(jìn)行自動的部署。

Context: 代表一個(gè)應(yīng)用程序,就是日常開發(fā)中的 web 程序,或者一個(gè) WEB-INF 目錄以 及下面的 web.xml 文件,換句話說每一個(gè)運(yùn)行的 webapp 最終都是以 Context 的形式存在, 每個(gè) Context 都有一個(gè)根路徑和請求路徑;與 Host 的區(qū)別是 Context 代表一個(gè)應(yīng)用,如,默 認(rèn)配置下 webapps 下的每個(gè)目錄都是一個(gè)應(yīng)用,其中 ROOT 目錄中存放主應(yīng)用,其他目錄 存放別的子應(yīng)用,而整個(gè) webapps 是一個(gè)站點(diǎn)。

  1. 寫出Servlet重要的類以及作用
Servlet接口:

init:負(fù)責(zé)初始化 Servlet 對象。容器一旦創(chuàng)建好 Servlet 對象后,就調(diào)用此方法來初始化 Servlet 對象

service:負(fù)責(zé)處理客戶的請求并返回響應(yīng)。當(dāng)容器接收到客戶端要求訪問特定的 servlet 請 求時(shí),就會調(diào)用 Servlet 的 service 方法

destroy:負(fù)責(zé)釋放 Servlet 對象占用的資源,當(dāng) servlet 對象結(jié)束生命周期時(shí), servlet 容器調(diào)用此方法來銷毀 servlet 對象.

getServletInto:返回一個(gè)字符串,在該字符串中包含 servlet 的創(chuàng)建者,版本和版權(quán)等信息

getServletConfig:返回一個(gè) ServletConfig 對象,該對象中包含了 Servlet 初始化參數(shù)信息

ServletConfig接口:

getServletName:用于獲取servlet名,web.xml中定義的servlet-name

getServletContext:獲取servlet上下文對象

getInitParameter:獲取inin-param中的配置參數(shù)

getInitParameterNames:獲取配置的所有init-param名字集合

GenericServlet: Servlet類的默認(rèn)實(shí)現(xiàn)類,與具體協(xié)議無關(guān)。在實(shí)現(xiàn)Servlet類的同時(shí),也實(shí)現(xiàn)了ServletConfig接口和Serialzable接口。在GenericServlet類中唯一沒有實(shí)現(xiàn)的方法是Servlet類中service方法,是交由子類去實(shí)現(xiàn)具體的應(yīng)用。

HttpServlet:HttpServlet是基于Http協(xié)議實(shí)現(xiàn)的Servlet基類,在寫servlet時(shí)直接繼承它。在請求響應(yīng)方法service中,根據(jù)請求類型調(diào)用不同的方法,寫servlet只需要根據(jù)請求類型覆蓋響應(yīng)的方法即可

分享/講解/擴(kuò)展思考

點(diǎn)名提問從第一節(jié)課到最后一節(jié)課分別學(xué)到了什么,直到同學(xué)們把所有的知識點(diǎn)都說出來并且保證無誤。

第210次(源碼分析)

學(xué)習(xí)主題:源碼分析

學(xué)習(xí)目標(biāo):

對應(yīng)視頻:

http://www.itbaizhan.cn/course/id/85.html

對應(yīng)文檔:



對應(yīng)作業(yè)

  1. Mybatis底層源碼分析
    1. 寫出Mybatis運(yùn)行流程



  1. 寫出Mybatis常用類以及作用
Configuration.xml: 該配置文件是 MyBatis 的全局配置文件,在這個(gè)文件中可以配置諸多項(xiàng)目。常用的內(nèi)容 是別名設(shè)置,攔截器設(shè)置等。

Mapper.xml: Mapper.xml 映射文件中定義了操作數(shù)據(jù)庫的 sql,每個(gè) sql 是一個(gè) statement,映射文件 是 mybatis 的核心

Resources: Resources 工具類會從路徑中加載資源,并返回一個(gè)輸入流對象,對于資源文件的加載 提供了簡易的使用方法。

SqlSessionFactoryBuilder: 該類是 SqlSessionFactory(會話工廠)的構(gòu)建者類,之前描述的操作其實(shí)全是從這里面 開啟的,首先就是調(diào)用 XMLConfigBuilder 類的構(gòu)造器來創(chuàng)建一個(gè) XML 配置構(gòu)建器對象, 利用這個(gè)構(gòu)建器對象來調(diào)用其解析方法 parse()來完成 Configuration 對象的創(chuàng)建,之后以這 個(gè)配置對象為參數(shù)調(diào)用會話工廠構(gòu)建者類中的 build(Configuration config)方法來完成SqlSessionFactory(會話工廠)對象的構(gòu)建。

XMLConfigBuilder: 該類是 XML 配置構(gòu)建者類, 是用來通過 XML 配置文件來構(gòu)建 Configuration 對象實(shí)例, 構(gòu)建的過程就是解析 Configuration.xml 配置文件的過程,期間會將從配置文件中獲取到的指 定標(biāo)簽的值逐個(gè)添加到之前創(chuàng)建好的默認(rèn) Configuration 對象實(shí)例中。

Configuration: 該對象是 Mybatis 的上下文對象,實(shí)例化這個(gè)類的目的就是為了使用其對象作為項(xiàng)目全 局配置對象,這樣通過配置文件配置的信息可以保存在這個(gè)配置對象中,而這個(gè)配置對象在 創(chuàng)建好之后是保存在 JVM 的 Heap 內(nèi)存中的,方便隨時(shí)讀取。不然每次需要配置信息的時(shí) 候都要臨時(shí)從磁盤配置文件中獲取,代碼復(fù)用性差的同時(shí),也不利于開發(fā)

DefaultSqlSessionFactory: SqlsessionFactory 該 接 口 是 會 話 工 廠 , 是 用 來 生 產(chǎn) 會 話 的 工 廠 接 口 , DefaultSqlSessionFactory 是其實(shí)現(xiàn)類,是真正生產(chǎn)會話的工廠類,這個(gè)類的實(shí)例的生命周期 是全局的,它只會在首次調(diào)用時(shí)生成一個(gè)實(shí)例(單例模式),就一直存在直到服務(wù)器關(guān)閉

Executor: 執(zhí)行器接口,SqlSession 會話是面向程序員的,而內(nèi)部真正執(zhí)行數(shù)據(jù)庫操作的卻是 Executor 執(zhí)行器,可以將 Executor 看作是面向 MyBatis 執(zhí)行環(huán)境的,SqlSession 就是門面貨, Executor 才是實(shí)干家。通過 SqlSession 產(chǎn)生的數(shù)據(jù)庫操作,全部是通過調(diào)用 Executor 執(zhí)行器 來完成的。 Executor 是跟 SqlSession 綁定在一起的,每一個(gè) SqlSession 都擁有一個(gè)新的 Executor 對 象,由 Configuration 創(chuàng)建。

StatementHandler: 該類是 Statement 處理器,封裝了 Statement 的各種數(shù)據(jù)庫操作方法 execute(),可見 MyBatis 其實(shí)就是將操作數(shù)據(jù)庫的 JDBC 操作封裝起來的一個(gè)框架,同時(shí)還實(shí)現(xiàn)了 ORM 罷 了。RoutingStatementHandler是一個(gè)封裝類,它不提供具體的實(shí)現(xiàn),只是根據(jù) Executor 的類型,創(chuàng)建不同的類型 StatementHandler。

ResultSetHandler: 結(jié)果集處理器,如果是查詢操作,必定會有返回結(jié)果,針對返回結(jié)果的操作,就要使用 ResultSetHandler 來進(jìn)行處理,這個(gè)是由 StatementHandler 來進(jìn)行調(diào)用的。這個(gè)處理器的作用 就是對返回結(jié)果進(jìn)行處理。











































分享/講解/擴(kuò)展思考

點(diǎn)名提問從第一節(jié)課到最后一節(jié)課分別學(xué)到了什么,直到同學(xué)們把所有的知識點(diǎn)都說出來并且保證無誤。

關(guān)鍵詞:

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉