日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Tomcat架構設計及Servlet作用規范講解

瀏覽:407日期:2023-03-19 16:51:53
目錄
  • 1.Servlet規范
    • 1.1 Servlet作用講解
    • 1.2 Servlet核心API
    • 1.3 ServletRequest
    • 1.4 ServletResponse
  • 2.Tomcat的設計
    • 2.1 什么是Tomcat
    • 2.2 Tomcat的架構結構
    • 2.3 組件分類

1.Servlet規范

1.1 Servlet作用講解

Servlet是JavaEE規范中的一種,主要是為了擴展Java作為Web服務的功能,統一定義了對應的接口,比如Servlet接口,HttpRequest接口,HttpResponse接口,Filter接口。

然后由具體的服務廠商來實現這些接口功能,比如Tomcat,jetty等。

在規范里面并不會有具體的實現。

可以自行看下源碼,而在Servlet規范中規定了一個http請求到來的執行處理流程:

對應的服務器容器會接收到對應的Http請求,然后解析該請求,然后創建對應的Servlet實例,調用對應init方法來完成初始化,把請求的相關信息封裝為HttpServletRequest對象來調用Servlet的service方法來處理請求,然后通過HttpServletResponse封裝響應的信息交給容器,響應給客戶端。

1.2 Servlet核心API

我們再來回顧下Servlet中的核心API,這塊對我們更好的掌握Tomcat的內容還是非常有幫助的。

API描述ServletConfig獲取servlet初始化參數和servletContext對象。ServletContext在整個Web應用的動態資源之間共享數據。ServletRequest封裝Http請求信息,在請求時創建。ServletResponse封裝Http響應信息,在請求時創建。

ServletConfig

容器在初始化servlet時,為該servlet創建一個servletConfig對象,并將這個對象通過init()方法來傳遞并保存在此Servlet對象中。核心作用:

  • 獲取初始化信息;
  • 獲取ServletContext對象。

ServletContext

一個項目只有一個ServletContext對象,可以在多個Servlet中來獲取這個對象,使用它可以給多個Servlet傳遞數據,該對象在Tomcat啟動時就創建,在Tomcat關閉時才會銷毀!作用是在整個Web應用的動態資源之間共享數據。

在實際的Servlet開發中,我們會實現HttpServlet接口,在該接口中會實現GenericServlet,而在GenericServlet會實現ServiceConfig接口,從而可以獲取ServletContext容器對象

所以在Servlet中我們可以很容易的獲取到ServletContext對象,從而完成對應的操作。

public class ServletTwoImpl extends HttpServlet {    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");// 1、參數傳遞ServletContext servletContext = this.getServletContext() ;String value = String.valueOf(servletContext.getAttribute("name")) ;System.out.println("value="+value);// 2、獲取初始化參數String userName= servletContext.getInitParameter("user-name") ;System.out.println("userName="+userName);// 3、獲取應用信息String servletContextName = servletContext.getServletContextName() ;System.out.println("servletContextName="+servletContextName);// 4、獲取路徑String pathOne = servletContext.getRealPath("/") ;String pathTwo = servletContext.getRealPath("/WEB-INF/") ;System.out.println("pathOne="+pathOne+";pathTwo="+pathTwo);response.getWriter().print("執行:doGet; value:"+value);    }}

1.3 ServletRequest

HttpServletRequest接口繼承ServletRequest接口,用于封裝請求信息,該對象在用戶每次請求servlet時創建并傳入servlet的service()方法,在該方法中,傳入的servletRequest將會被強制轉化為HttpservletRequest 對象來進行HTTP請求信息的處理。核心作用:

  • 獲取請求報文信息;
  • 獲取網絡連接信息;
  • 獲取請求域屬性信息。

1.4 ServletResponse

HttpServletResponse繼承自ServletResponse,封裝了Http響應信息。客戶端每個請求,服務器都會創建一個response對象,并傳入給Servlet.service()方法。核心作用:

  • 設置響應頭信息;
  • 發送狀態碼;
  • 設置響應正文;
  • 重定向;

2.Tomcat的設計

通過上面Servlet規范的介紹,其實我們發下我們要實現Servlet規范的話,很重要的就得提供一個服務容器來獲取請求,解析封裝數據,并調用Servlet實例相關的方法。也就是如下圖中的部分

這塊的內容其實就是Tomcat,具體的我們來看看。

2.1 什么是Tomcat

Tomcat是一個容器,用于承載Servlet,那么我們說Tomcat就是一個實現了部分J2EE規范的服務器。J2 EE和Jakarta EE(Eclipse基金會)這兩是啥?用于Tomcat10以后都是Jakarta EE,而9之前就是J2EE.

2.2 Tomcat的架構結構

我們通過上面的分析,知道Tomcat是一個Servlet規范的實現,要接收請求和響應請求,那么具體是如何實現的呢?這塊我們可以通過conf下的server.xml得出對應的結論。

server.xml是Tomcat中最重要的配置文件,server.xml 的每一個元素都對應了Tomcat 中的一個組件 ;通過對xml文件中元素的配置,可以實現對Tomcat中各個組件的控制。因此,學習server.xml文件的配置,對于了解和使用Tomcat至關重要.

<?xml version="1.0" encoding="UTF-8"?><Server port="8005" shutdown="SHUTDOWN">  <Service name="Catalina">    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="150" minSpareThreads="4"/>    <Connector port="8080" protocol="HTTP/1.1"       connectionTimeout="20000"       redirectPort="8443" />    <Connector executor="tomcatThreadPool"       port="8080" protocol="HTTP/1.1"       connectionTimeout="20000"       redirectPort="8443" />    <Engine name="Catalina" defaultHost="localhost">      <Realm className="org.apache.catalina.realm.LockOutRealm"><!-- This Realm uses the UserDatabase configured in the global JNDI     resources under the key "UserDatabase".  Any edits     that are performed against this UserDatabase are immediately     available for use by the Realm.  --><Realm className="org.apache.catalina.realm.UserDatabaseRealm"       resourceName="UserDatabase"/>      </Realm>      <Host name="localhost"  appBase="webapps"    unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"       prefix="localhost_access_log" suffix=".txt"       pattern="%h %l %u %t "%r" %s %b" />      </Host>    </Engine>  </Service></Server>

極簡模式

<Server>    <Service><Connector /><Connector /><Engine>    <Host><Context /><!-- 現在常常使用自動部署,不推薦配置Context元素,Context小節有詳細說明 -->    </Host></Engine>    </Service></Server>

梳理出的結構

對應的每個組件的作用。

2.3 組件分類

官網其實對上面的組件也做了分類:

頂級元素:

  • Server:是整個配置文件的根元素
  • Service:代表一個Engine元素以及一組與之相連的Connector元素

連接器

  • 代表了外部客戶端發送請求到特定Service的接口;同時也是外部客戶端從特定Service接收響應的接口。

容器

容器的作用是處理Connector接收進來的請求,并產生對應的響應,Engine,Host和Context都是容器,他們不是平行關系,而是父子關系。

每個組件的作用:

  • Engine:可以處理所有請求
  • Host:可以處理發向一個特定虛擬主機的所有請求
  • Context:可以處理一個特定Web應用的所有請求

核心組件的串聯關系

當客戶端請求發送過來后其實是通過這些組件相互之間配合完成了對應的操作。

  • Server元素在最頂層,代表整個Tomcat容器;一個Server元素中可以有一個或多個Service元素
  • Service在Connector和Engine外面包了一層,把它們組裝在一起,對外提供服務。一個Service可以包含多個Connector,但是只能包含一個Engine;Connector接收請求,Engine處理請求。
  • Engine、Host和Context都是容器,且Engine包含Host,Host包含Context。每個Host組件代表Engine中的一個虛擬主機;每個Context組件代表在特定Host上運行的一個Web應用.

整體Tomcat的運行架構圖

以上就是Tomcat架構設計及Servlet作用規范講解的詳細內容,更多關于Tomcat架構設計Servlet規范的資料請關注其它相關文章!

標簽: Tomcat
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
最新中文字幕在线播放| 久久精品一区二区三区中文字幕| 国产精品视频3p| 日韩欧美2区| 91亚洲精品在看在线观看高清| 蜜桃视频一区二区| 日韩专区一卡二卡| 亚洲精品观看| 91精品国产自产在线丝袜啪| 欧美日韩夜夜| 久久精品观看| 免费视频亚洲| 日韩精品欧美精品| 久久99久久久精品欧美| www成人在线视频| 亚洲国产专区校园欧美| 欧美在线网站| 欧美一区二区三区久久| 日本黄色精品| 蜜臀91精品一区二区三区| 日韩成人精品一区二区三区 | 亚洲精品**中文毛片| 亚洲不卡av不卡一区二区| 国产精品免费看| 欧美中文高清| 色老板在线视频一区二区| 亚洲专区视频| 国产一区福利| 亚洲三级国产| 欧美日韩视频网站| 日韩和欧美一区二区| 亚洲综合在线电影| 亚洲国产一区二区在线观看| 日韩精品第二页| 亚洲成av人片一区二区密柚| 国产欧美在线观看免费| 中文在线不卡| 人人草在线视频| 国产精品一区三区在线观看| 在线亚洲精品| 999久久久免费精品国产| 国产欧美自拍一区| 91久久国产| 欧美精品三级在线| 久久久久久夜| 免费一级片91| 欧美性感美女一区二区| 成人三级高清视频在线看| 日韩欧美三区| 香蕉久久国产| 91久久午夜| 在线日韩中文| 性欧美xxxx免费岛国不卡电影| 国产精品白丝av嫩草影院| 亚洲精品免费观看| 综合色一区二区| 免费看日韩精品| 狠狠干综合网| 麻豆精品蜜桃视频网站| 久久激情av| 国产美女视频一区二区| 日韩国产精品久久久久久亚洲| 日韩中文字幕麻豆| 六月婷婷一区| 色综合视频一区二区三区日韩| 在线成人直播| 亚洲一区网站| 亚洲精品欧洲| 国产精品免费精品自在线观看| 国产欧美日韩| 老司机精品在线| 国产精品久久国产愉拍| 日韩精品乱码av一区二区| 久久国产乱子精品免费女| 欧美成人精品一级| 国产99在线| 亚洲一级在线| 欧美有码在线| 精品国产麻豆| 国产一区二区中文| 天海翼精品一区二区三区| 国产精品亚洲片在线播放| 伊人久久在线| 久久夜色精品| 色狠狠一区二区三区| 国产精品一区二区三区www| 日产精品一区二区| 欧美一区二区三区高清视频| 人人爽香蕉精品| 久久av影院| 日韩一区二区免费看| 国产美女亚洲精品7777 | 蜜桃久久av一区| 国产精品一线天粉嫩av| 久久精品亚洲欧美日韩精品中文字幕| 国产视频久久| 一区二区三区四区日韩| 久久国产精品美女| 国产精品日韩欧美一区| 精品日本视频| 日韩国产在线一| 高清不卡亚洲| 日本aⅴ免费视频一区二区三区| 999久久久亚洲| 国产精品欧美一区二区三区不卡| 久久中文字幕av| 国产精品一区二区三区av| 91久久久精品国产| 国产二区精品| 男女精品网站| 国产精品magnet| 99精品小视频| 日韩av有码| 国产精品乱战久久久| 欧美欧美黄在线二区| 伊人国产精品| 香蕉视频亚洲一级| 国产精品最新自拍| 日韩专区欧美专区| 999国产精品999久久久久久| 国产伦精品一区二区三区视频| 日韩视频在线一区二区三区 | 欧美黄色精品| 亚洲精品乱码久久久久久蜜桃麻豆| 九色porny丨国产首页在线| 精品国产鲁一鲁****| 你懂的亚洲视频| 国产精品一区二区三区美女 | 久久香蕉精品| 香蕉精品视频在线观看| 成人午夜网址| 精品视频国产| 麻豆中文一区二区| 欧美aa在线视频| 亚洲三级网址| 日本不卡一二三区黄网| 亚洲小说春色综合另类电影| 日韩视频一区| 在线亚洲观看| 日本不卡视频一二三区| 亚洲人成网站在线在线观看| 亚洲一卡久久| 日本中文字幕视频一区| 国产午夜一区| 精品香蕉视频| 久久久精品午夜少妇| 黄色国产精品| 日韩av中文字幕一区二区 | 日韩精品91亚洲二区在线观看| 亚洲精品精选| 美女视频免费精品| 日韩高清中文字幕一区二区| 在线国产一区| 国产免费久久| 国产欧洲在线| 在线看片日韩| 成人国产精品| 亚洲欧美日韩国产综合精品二区| 日韩高清电影一区| 人人草在线视频| 亚洲精选成人| 日韩另类视频| 中国女人久久久| 日韩av黄色在线| 欧美精品高清| 777久久精品| 欧美日韩中文一区二区| 日韩精品成人在线观看| 福利一区在线| 国产精品老牛| 成人台湾亚洲精品一区二区| 日韩精品一级二级 | 爽好久久久欧美精品| 精品久久91| 日韩精品社区| 国产精品毛片| 国产精品sm| 蜜臀av亚洲一区中文字幕| 黄毛片在线观看| 久久黄色影视| 免费不卡在线观看| 国产在线观看www| 日韩一区精品字幕| 色88888久久久久久影院| 久久精品人人| 欧美日一区二区在线观看| 香蕉久久夜色精品国产| 欧美精品资源| 超级白嫩亚洲国产第一| 欧美一级一区| 日韩精品免费视频一区二区三区 | 日韩天堂av| 亚洲成人日韩| 日韩成人精品一区| 精品资源在线| 69堂免费精品视频在线播放| 亚州国产精品| 日韩av网站在线免费观看| 亚洲精品看片| 日韩av在线播放中文字幕|