国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Tomcat 組成與工作原理

共 3293字,需瀏覽 7分鐘

 ·

2022-01-17 02:35

點擊上方“程序員大白”,選擇“星標”公眾號

重磅干貨,第一時間送達

來自:掘金,作者:VectorJin

鏈接:https://juejin.cn/post/6844903473482317837


Tomcat 是什么

開源的 Java Web 應用服務器,實現(xiàn)了 Java EE(Java Platform Enterprise Edition)的部分技術規(guī)范,比如 Java Servlet、Java Server Page、JSTL、Java WebSocket。Java EE 是 Sun 公 司為企業(yè)級應用推出的標準平臺,定義了一系列用于企業(yè)級開發(fā)的技術規(guī)范,除了上述的之外,還有 EJB、Java Mail、JPA、JTA、JMS 等,而這些都依賴具體容器的實現(xiàn)。


上圖對比了 Java EE 容器的實現(xiàn)情況,Tomcat 和 Jetty 都只提供了 Java Web 容器必需的 Servlet 和 JSP 規(guī)范,開發(fā)者要想實現(xiàn)其他的功能,需要自己依賴其他開源實現(xiàn)。

Glassfish 是由 Sun 公司推出,Java EE 最新規(guī)范出來之后,首先會在 Glassfish 上進行實 現(xiàn),所以是研究 Java EE 最新技術的首選。

最常見的情況是使用 Tomcat 作為 Java Web 服務器,使用 Spring 提供的開箱即用的強大 的功能,并依賴其他開源庫來完成負責的業(yè)務功能實現(xiàn)。

Servlet 容器

Tomcat 組成如下圖:主要有 Container 和 Connector 以及相關組件構成。


  • Server:指的就是整個 Tomcat 服 務器,包含多組服務,負責管理和 啟動各個 Service,同時監(jiān)聽 8005 端口發(fā)過來的 shutdown 命令,用于關閉整個容器;

  • Service:Tomcat 封裝的、對外提供完整的、基于組件的 Web 服務, 包含 Connectors、Container 兩個核心組件,以及多個功能組件,各個 Service 之間是獨立的,但是共享 同一 JVM 的資源;

  • Connector:Tomcat 與外部世界的連接器,監(jiān)聽固定端口接收外部請求,傳遞給 Container,并將 Container 處理的結果返回給外部;

  • Container:Catalina,Servlet 容器,內(nèi)部有多層容器組成,用于管理 Servlet 生命周期,調用 servlet 相關方法;

  • Loader:封裝了 Java ClassLoader,用于 Container 加載類文件;

  • Realm:Tomcat 中為 Web 應用程序提供訪問認證和角色管理的機制;

  • JMX:Java SE 中定義技術規(guī)范,是一個為應用程序、設備、系統(tǒng)等植入管理功能的框架,通過 JMX 可以遠程監(jiān)控 Tomcat 的運行狀態(tài);

  • Jasper:Tomcat 的 JSP 解析引擎,用于將 JSP 轉換成 Java 文件,并編譯成 class 文件。

  • Session:負責管理和創(chuàng)建 Session,以及 Session 的持久化(可自定義),支持 Session 的集 群。

  • Pipeline:在容器中充當管道的作用,管道中可以設置各種 valve(閥門),請求和響應在經(jīng)由管道中各個閥門處理,提供了一種靈活可配置的處理請求和響應的機制。

  • Naming:命名服務,JNDI, Java 命名和目錄接口,是一組在 Java 應用中訪問命名和目錄服務的 API。命名服務將名稱和對象聯(lián)系起來,使得我們可以用名稱訪問對象,目錄服務也是一種命名 服務,對象不但有名稱,還有屬性。Tomcat 中可以使用 JNDI 定義數(shù)據(jù)源、配置信息,用于開發(fā)與部署的分離。


Container 組成


  • Engine:Servlet 的頂層容器,包含一 個或多個 Host 子容器;

  • Host:虛擬主機,負責 Web 應用的部 署和 Context 的創(chuàng)建;

  • Context:Web 應用上下文,包含多個 Wrapper,負責 Web 配置的解析、管 理所有的 Web 資源;

  • Wrapper:最底層的容器,是對 Servlet 的封裝,負責 Servlet 實例的創(chuàng) 建、執(zhí)行和銷毀。


生命周期管理

Tomcat 為了方便管理組件和容器的生命周期,定義了從創(chuàng)建、啟動、到停止、銷毀共 12 中狀態(tài),Tomcat 生命周期管理了內(nèi)部狀態(tài)變化的規(guī)則控制,組件和容器只需實現(xiàn)相應的生命周期 方法即可完成各生命周期內(nèi)的操作(initInternal、startInternal、stopInternal、 destroyInternal)。

比如執(zhí)行初始化操作時,會判斷當前狀態(tài)是否 New,如果不是,則拋出生命周期異常;如果是,則設置當前狀態(tài)為 Initializing,并執(zhí)行 initInternal 方法,由子類實現(xiàn),方法執(zhí)行成功則設置當 前狀態(tài)為 Initialized,執(zhí)行失敗則設置為 Failed 狀態(tài)。


Tomcat 的生命周期管理引入了事件機制,在組件或容器的生命周期狀態(tài)發(fā)生變化時會通知事件監(jiān)聽器,監(jiān)聽器通過判斷事件的類型來進行相應的操作。事件監(jiān)聽器的添加可以在 server.xml 文件中進行配置。

Tomcat 各類容器的配置過程就是通過添加 listener 的方式來進行的,從而達到配置邏輯與容器的解耦。如 EngineConfig、HostConfig、ContextConfig。

  • EngineConfig:主要打印啟動和停止日志

  • HostConfig:主要處理部署應用,解析應用 META-INF/context.xml 并創(chuàng)建應用的 Context

  • ContextConfig:主要解析并合并 web.xml,掃描應用的各類 Eeb 資源(filter、servlet、listener)



Tomcat 的啟動過程


啟動從 Tomcat 提供的 start.sh 腳本開始,Shell 腳本會調用 Bootstrap 的 main 方法,實際調用了 Catalina 相應的 load、start 方法。

load 方法會通過 Digester 進行 config/server.xml 的解析,在解析的過程中會根據(jù) xml 中的關系和配置信息來創(chuàng)建容器,并設置相關的屬性。接著 Catalina 會調用 StandardServer 的 init 和 start 方法進行容器的初始化和啟動。

按照 xml 的配置關系,server 的子元素是 service,service 的子元素是頂層容器 Engine,每層容器有持有自己的子容器,而這些元素都實現(xiàn)了生命周期管理 的各個方法,因此就很容易的完成整個容器的啟動、關閉等生命周期的管理。

StandardServer 完成 init 和 start 方法調用后,會一直監(jiān)聽來自 8005 端口(可配置),如果接收到 shutdown 命令,則會退出循環(huán)監(jiān)聽,執(zhí)行后續(xù)的 stop 和 destroy 方法,完成 Tomcat 容器的關閉。同時也會調用 JVM 的 Runtime.getRuntime()?.addShutdownHook 方法,在虛擬機意外退出的時候來關閉容器。

所有容器都是繼承自 ContainerBase,基類中封裝了容器中的重復工作,負責啟動容器相關的組 件 Loader、Logger、Manager、Cluster、Pipeline,啟動子容器(線程池并發(fā)啟動子容器,通過線程池 submit 多個線程,調用后返回 Future 對象,線程內(nèi)部啟動子容器,接著調用 Future 對象的 get 方法來等待執(zhí)行結果)。

List>?results?=?new?ArrayList>();
for?(int?i?=?0;?i?????results.add(startStopExecutor.submit(new?StartChild(children[i])));
}
boolean?fail?=?false;
for?(Future result :results)?{
????try?{
????????result.get();
????}?catch?(Exception?e)?{
????????log.error(sm.getString("containerBase.threadedStartFailed"),?e);
????????fail?=?true;
????}
}


Web 應用的部署方式
注:


  • catalina.home:安裝目錄

  • catalina.base:工作目錄

  • 默認值:user.dir

  • Server.xml 配置 Host 元素,指定 appBase 屬性,默認 $catalina.base/webapps/

  • Server.xml 配置 Context 元素,指定 docBase,元素,指定 Web 應用的路徑

  • 自定義配置在 $catalina.base/EngineName/HostName/XXX.xml 配置 Context 元素


HostConfig 監(jiān)聽了 StandardHost 容器的事件,在 start 方法中解析上述配置文件:

  • 掃描 appbase 路徑下的所有文件夾和 war 包,解析各個應用的 META-INF/context.xml,并創(chuàng)建 StandardContext,并將 Context 加入到 Host 的子容器中。

  • 解析 $catalina.base/EngineName/HostName/ 下的所有 Context 配置,找到相應 Web 應用的位置,解析各個應用的 META-INF/context.xml,并創(chuàng)建 StandardContext,并將 Context 加入到 Host 的子容器中。


注:

  • HostConfig 并沒有實際解析 Context.xml,而是在 ContextConfig 中進行的。

  • HostConfig 中會定期檢查 watched 資源文件(context.xml 配置文件)


ContextConfig 解析 context.xml 順序:

  • 先解析全局的配置 config/context.xml

  • 然后解析 Host 的默認配置 EngineName/HostName/context.xml.default

  • 最后解析應用的 META-INF/context.xml


ContextConfig 解析 web.xml 順序:

  • 先解析全局的配置 config/web.xml

  • 然后解析 Host 的默認配置 EngineName/HostName/web.xml.default 接著解析應用的 MEB-INF/web.xml

  • 掃描應用 WEB-INF/lib/ 下的 jar 文件,解析其中的 META-INF/web-fragment.xml 最后合并 xml 封裝成 WebXml,并設置 Context


注:

  • 掃描 Web 應用和 jar 中的注解(Filter、Listener、Servlet)就是上述步驟中進行的。

  • 容器的定期執(zhí)行:backgroundProcess,由 ContainerBase 來實現(xiàn)的,并且只有在頂層容器中才會開啟線程。(backgroundProcessorDelay=10 標志位來控制)


Servlet 生命周期


Servlet 是用 Java 編寫的服務器端程序。其主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動態(tài) Web 內(nèi)容。

  1. 請求到達 server 端,server 根據(jù) url 映射到相應的 Servlet

  2. 判斷 Servlet 實例是否存在,不存在則加載和實例化 Servlet 并調用 init 方法

  3. Server 分別創(chuàng)建 Request 和 Response 對象,調用 Servlet 實例的 service 方法(service 方法內(nèi)部會根據(jù) http 請求方法類型調用相應的 doXXX 方法)

  4. doXXX 方法內(nèi)為業(yè)務邏輯實現(xiàn),從 Request 對象獲取請求參數(shù),處理完畢之后將結果通過 response 對象返回給調用方

  5. 當 Server 不再需要 Servlet 時(一般當 Server 關閉時),Server 調用 Servlet 的 destroy() 方法。


load on startup

當值為 0 或者大于 0 時,表示容器在應用啟動時就加載這個 servlet;當是一個負數(shù)或者沒有指定時,則指示容器在該 servlet 被選擇時才加載;正數(shù)的值越小,啟動該 servlet 的優(yōu)先級越高。

single thread model

每次訪問 servlet,新建 servlet 實體對象,但并不能保證線程安全,同時 Tomcat 會限制 servlet 的實例數(shù)目。最佳實踐:不要使用該模型,servlet 中不要有全局變量。

請求處理過程


  1. 根據(jù) server.xml 配置的指定的 connector 以及端口監(jiān)聽 http、或者 ajp 請求

  2. 請求到來時建立連接,解析請求參數(shù),創(chuàng)建 Request 和 Response 對象,調用頂層容器 Pipeline 的 invoke 方法

  3. 容器之間層層調用,最終調用業(yè)務 servlet 的 service 方法

  4. Connector 將 response 流中的數(shù)據(jù)寫到 socket 中


Pipeline 與 Valve


Pipeline 可以理解為現(xiàn)實中的管道,Valve 為管道中的閥門,Request 和 Response 對象在管道中經(jīng)過各個閥門的處理和控制。

每個容器的管道中都有一個必不可少的 basic valve,其他的都是可選的,basic valve 在管道中最后調用,同時負責調用子容器的第一個 valve。

Valve 中主要的三個方法:setNext、getNext、invoke。Valve 之間的關系是單向鏈式結構,本身 invoke 方法中會調用下一個 Valve 的 invoke 方法。

各層容器對應的 basic valve 分別是 StandardEngineValve、StandardHostValve、StandardContextValve、StandardWrapperValve。

JSP引擎


JSP 生命周期

  • 編譯階段:servlet 容器編譯 servlet 源文件,生成 servlet 類

  • 初始化階段:加載與 JSP 對應的 servlet 類,創(chuàng)建其實例,并調用它的初始化方法

  • 執(zhí)行階段:調用與 JSP 對應的 servlet 實例的服務方法

  • 銷毀階段:調用與 JSP 對應的 servlet 實例的銷毀方法,然后銷毀 servlet 實例


JSP元素

  • 代碼片段:<% 代碼片段 %>

  • JSP聲明:<%! declaration; [ declaration; ]+ ... %>

  • JSP表達式:<%= 表達式 %>

  • JSP注釋:<%-- 注釋 --%>

  • JSP指令:<%@ directive attribute=“value” %>

  • JSP行為:

  • HTML元素:html/head/body/div/p/……

  • JSP隱式對象:request、response、out、session、application、config、 pageContext、page、Exception


JSP 元素說明

  • 代碼片段:包含任意量的 Java 語句、變量、方法或表達式

  • JSP 聲明:一個聲明語句可以聲明一個或多個變量、方法,供后面的 Java 代碼使用

  • JSP 表達式:輸出 Java 表達式的值,String 形式;

  • JSP 注釋:為代碼作注釋以及將某段代碼注釋掉

  • JSP 指令:用來設置與整個 JSP 頁面相關的屬性:

    • <%@ page ... %> 定義頁面的依賴屬性,比如 language、contentType、errorPage、 isErrorPage、import、isThreadSafe、session 等等

    • <%@ include ... %> 包含其他的 JSP 文件、HTML 文件或文本文件,是該 JSP 文件的一部分,會被同時編譯執(zhí)行

    • <%@ taglib ... %> 引入標簽庫的定義,可以是自定義標簽


  • JSP 行為:jsp:include、jsp:useBean、jsp:setProperty、jsp:getProperty、jsp:forward


JSP 解析過程


  • 代碼片段:在 _jspService() 方法內(nèi)直接輸出

  • JSP 聲明:在 servlet 類中進行輸出

  • JSP 表達式:在 _jspService() 方法內(nèi)直接輸出

  • JSP 注釋:直接忽略,不輸出

  • JSP 指令:根據(jù)不同指令進行區(qū)分,include:對引入的文件進行解析;page 相關的屬性會做為 JSP 的屬性,影響的是解析和請求處理時的行為

  • JSP 行為:不同的行為有不同的處理方式,jsp:useBean 為例,會從 pageContext 根據(jù) scope 的 類別獲取 bean 對象,如果沒有會創(chuàng)建 bean,同時存到相應 scope 的 pageContext 中

  • HTML:在 _jspService() 方法內(nèi)直接輸出

  • JSP 隱式對象:在 _jspService() 方法會進行聲明,只能在方法中使用

Connector


  • HTTP,HTTP 是超文本傳輸協(xié)議,是客戶端瀏覽器或其他程序與 Web 服務器之間的應用層通信協(xié)議

  • AJP,Apache JServ 協(xié)議(AJP)是一種二進制協(xié)議,專門代理從 Web 服務器到位于后端的應用程序服務器的入站請求


阻塞 IO


非阻塞 IO


IO 多路復用


阻塞與非阻塞的區(qū)別在于進行讀操作和寫操作的系統(tǒng)調用時,如果此時內(nèi)核態(tài)沒有數(shù)據(jù)可讀或者沒有緩沖空間可寫時,是否阻塞。

IO 多路復用的好處在于可同時監(jiān)聽多個 socket 的可讀和可寫事件,這樣就能使得應用可以同時監(jiān)聽多個 socket,釋放了應用線程資源。

Tomcat 各類 Connector 對比


Connector 的實現(xiàn)模式有三種,分別是 BIO、NIO、APR,可以在 server.xml 中指定。

  • JIO:用 java.io 編寫的 TCP 模塊,阻塞IO

  • NIO:用 java.nio 編寫的 TCP 模塊,非阻塞 IO,(IO 多路復用)

  • APR:全稱 Apache Portable Runtime,使用 JNI 的方式來進行讀取文件以及進行網(wǎng)絡傳輸


Apache Portable Runtime 是一個高度可移植的庫,它是 Apache HTTP Server 2.x 的核心。APR 具有許多用途,包括訪問高級 IO 功能(如 sendfile,epoll 和 OpenSSL),操作系統(tǒng)級功能(隨機數(shù)生成,系統(tǒng)狀態(tài)等)和本地進程處理(共享內(nèi)存,NT 管道和 Unix 套接字)。

表格中字段含義說明:

  • Support Polling:是否支持基于 IO 多路復用的 socket 事件輪詢

  • Polling Size:輪詢的最大連接數(shù)

  • Wait for next Request:在等待下一個請求時,處理線程是否釋放,BIO 是沒有釋放的,所以在 keep-alive=true 的情況下處理的并發(fā)連接數(shù)有限

  • Read Request Headers:由于 request header 數(shù)據(jù)較少,可以由容器提前解析完畢,不需要阻塞

  • Read Request Body:讀取 request body 的數(shù)據(jù)是應用業(yè)務邏輯的事情,同時 Servlet 的限制,是需要阻塞讀取的

  • Write Response:跟讀取 request body 的邏輯類似,同樣需要阻塞寫


NIO處理相關類


Acceptor 線程負責接收連接,調用 accept 方法阻塞接收建立的連接,并對 socket 進行封裝成 PollerEvent,指定注冊的事件為 op_read,并放入到 EventQueue 隊列中,PollerEvent 的 run 方法邏輯的是將 Selector 注冊到 socket 的指定事件。

Poller 線程從 EventQueue 獲取 PollerEvent,并執(zhí)行 PollerEvent 的 run 方法,調用 Selector 的 select 方法,如果有可讀的 Socket 則創(chuàng)建 Http11NioProcessor,放入到線程池中執(zhí)行。

CoyoteAdapter 是 Connector 到 Container 的適配器,Http11NioProcessor 調用其提供的 service 方法,內(nèi)部創(chuàng)建 Request 和 Response 對象,并調用最頂層容器的 Pipeline 中的第一個 Valve 的 invoke 方法。

Mapper 主要處理 http url 到 servlet 的映射規(guī)則的解析,對外提供 map 方法。

NIO Connector主要參數(shù)


Comet


Comet 是一種用于 Web 的推送技術,能使服務器實時地將更新的信息傳送到客戶端,而無須客戶端發(fā)出請求,在 WebSocket 出來之前,如果不使用 comet,只能通過瀏覽器端輪詢 Server 來模擬實現(xiàn)服務器端推送。Comet 支持 servlet 異步處理 IO,當連接上數(shù)據(jù)可讀時觸發(fā)事件,并異步寫數(shù)據(jù)(阻塞)。


Tomcat 要實現(xiàn) Comet,只需繼承 HttpServlet 同時,實現(xiàn) CometProcessor 接口。

  • Begin:新的請求連接接入調用,可進行與 Request 和 Response 相關的對象初始化操作,并保存 response 對象,用于后續(xù)寫入數(shù)據(jù)

  • Read:請求連接有數(shù)據(jù)可讀時調用

  • End:當數(shù)據(jù)可用時,如果讀取到文件結束或者 response 被關閉時則被調用

  • Error:在連接上發(fā)生異常時調用,數(shù)據(jù)讀取異常、連接斷開、處理異常、socket 超時


Note:

  • Read:在 post 請求有數(shù)據(jù),但在begin事件中沒有處理,則會調用read,如果read沒有讀取數(shù)據(jù),在會觸發(fā)Error回調,關閉socket

  • End:當socket超時,并且response被關閉時也會調用;server被關閉時調用

  • Error:除了socket超時不會關閉socket,其他都會關閉socket

  • End和Error時間觸發(fā)時應關閉當前comet會話,即調用CometEvent的close方法 Note:在事件觸發(fā)時要做好線程安全的操作


異步 Servlet



傳統(tǒng)流程:

  • 首先,Servlet 接收到請求之后,request 數(shù)據(jù)解析;

  • 接著,調用業(yè)務接口的某些方法,以完成業(yè)務處理;

  • 最后,根據(jù)處理的結果提交響應,Servlet 線程結束。



異步處理流程:

  • 客戶端發(fā)送一個請求

  • Servlet 容器分配一個線程來處理容器中的一個 Servlet

  • Servlet 調用 request.startAsync(),保存 AsyncContext,然后返回

  • 任何方式存在的容器線程都將退出,但是 response 仍然保持開放

  • 業(yè)務線程使用保存的 AsyncContext 來完成響應(線程池)

  • 客戶端收到響應


Servlet 線程將請求轉交給一個異步線程來執(zhí)行業(yè)務處理,線程本身返回至容器,此時 Servlet 還沒有生成響應數(shù)據(jù),異步線程處理完業(yè)務以后,可以直接生成響應數(shù)據(jù)(異步線程擁有 ServletRequest 和 ServletResponse 對象的引用)

為什么 Web 應用中支持異步?

推出異步,主要是針對那些比較耗時的請求:比如一次緩慢的數(shù)據(jù)庫查詢,一次外部 REST API 調用,或者是其他一些 I/O 密集型操作。這種耗時的請求會很快的耗光 Servlet 容器的線程池,繼而影響可擴展性。

Note:從客戶端的角度來看,request 仍然像任何其他的 HTTP 的 request-response 交互一樣,只是耗費了更長的時間而已。

異步事件監(jiān)聽

  • onStartAsync:Request 調用 startAsync 方法時觸發(fā)

  • onComplete:syncContext 調用 complete 方法時觸發(fā)

  • onError:處理請求的過程出現(xiàn)異常時觸發(fā)

  • onTimeout:socket 超時觸發(fā)


Note:onError/onTimeout 觸發(fā)后,會緊接著回調 onComplete,onComplete 執(zhí)行后,就不可再操作 request 和 response。

13個你一定要知道的PyTorch特性

解讀:為什么要做特征歸一化/標準化?

一文搞懂 PyTorch 內(nèi)部機制

張一鳴:每個逆襲的年輕人,都具備的底層能力




,,西,,[],!


瀏覽 35
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 最新日韩无码| 欧美人妻视频在线| 在线观看黄| 深爱五月婷婷| AV无码免费观看| 韩日无码视频| 丰满人妻一区二区三区精品高| 国产多人搡BBBB槡BBBB | 久久人妻免费视频| 伊人久久综合| 蜜桃视频一区二区三区| 波多野结衣不卡| 久久爆乳一区二区三区| 人人操人人插| 伊人久久网站| 懂色av,蜜臀AV粉嫩av| 东京热在线免费观看| 你懂得在线观看| 黄色小说视频网站| 毛片黄色| 人人看人人摸人人搞| 国产理论片在线观看| 午夜福利播放| 日B视频在线观看| 韩国成人无码| 久久久精品网站| 午夜特片| 欧美操逼大片| 日韩成人免费在线观看| 日韩美女久久| 国产女人在线视频| 成人在线H| 在线观看AV网站| 开心黄色网| 91人妻人人澡人人爽人人DVD| 91乱了伦国产乱子伦| 国产波霸爆乳一区二区| 操B视频在线播放| 亚洲va欧美ⅴa在线| 成人中文字幕网站| 人人摸人人操人人看| 欧美一级片网站| 亚洲综合中文字幕在线播放| 国产无码电影网| 91女色| 国产黄色电影在线| 东北奇淫老老妇| 97成人精品| 人妻丰满精品一区二区| 影音先锋91久久网| 日本一级特级毛片视频| 91ccc| 免费观看一级毛一片| 麻豆国产在线| 操逼激情网| 亚洲码无人客一区二区三区| 这里只有精品在线观看| 青草国产视频| 亚洲欧洲成人| 中文字幕+乱码+中文乱码电影 | 亚洲综合视频在线观看| 陈冠希和张柏芝mv| 内射少妇18| 欧美性爱一区二区| 免费一级黄色电影| 激情婷婷五月天| 欧美人操逼一二区| 就去色色五月丁香婷婷久久久| 欧美性视频网站| 天天狠天天干| 豆花视频成人网站入口| 2017天天射| 梁祝艳谭A级毛片| 中文无码AV在线| av不卡在线观看| 69欧美视频| 99热这里只有精品7| 亚洲少妇无码| 日韩在线中文字幕视频| 日韩高清av| 无码精品一区二区| 欧美日韩黄色| 亚洲欧美在线视频| 色卻A| 成人无码视频在线| 亚洲国产精品自| 综综综综合网| 丁香五月天激情视频| 日韩AV中文字幕在线播放| 91大神在线观看入口| 天天免费视频| 中文字幕777| 中文字幕亚洲区| 在线观看黄色电影| 人妻少妇精品视频| 人人妻人人澡人人爽久久con| 中文字幕一区三区三A片密月| 蜜桃导航-精品导航| 东京亚洲无码| 国产精品女人777777| 日日操人人操| 欧洲美一区二区三区亚洲| 国产男女无套免费视频| www.6969成人片亚洲| 17c精品麻豆一区二区免费| 怡春院国产| 欧美日韩视频在线| 伊人网站视频在线| 先锋影音男人资源站| 91亚洲国产成人久久精品网站| 中文一区在线| 亚欧洲精品| 成人AAA片| www在线| 亚州无码| 中国最大成人网站| 九九热99视频| 高潮喷水视频| 久青草资源福利视频| 国精产品一区一区三区四川| 日本黄色视频在线| 美女av日逼| 91麻豆国产福利精品| 欧美一区二区三区四| 黄色a一级| 狼人综合在线| 中文在线字幕高清电视剧| 亚洲中文字幕在线免费观看视频| 日韩理论片| 高清无码不卡AV| 大香蕉青青| 亚洲天堂在线观看免费视频| 久久午夜电影| 91成人免费电影| 精品无码视频| 激情亚洲五月天| 18禁在线看| 中文字幕无码在线观看视频| 亚洲AV无一区二区三区久久| www.国产视频| 国产xxxx| 麻豆精品一区二区三区| 亚洲精品国产精品国自产A片同性| 成人丁香| 国产精品成人无码| 91乱伦视频| 一本久道综合| 中文无码影院| 91毛片在线观看| AV资源在线播放| 中文字幕视频2023| 求毛片网址| 综合久久视频| 久久99国产精品| 国产在线一区二区三区| 亚洲天堂影院| 一级黄色av| 91妻人人澡人人爽人人精品 | www.91自拍| 国产欧美综合视频一区二区在线| 9l蝌蚪PORNY中文| 日韩一级免费在线观看| 看黄色一级片| 国产人妖视频| 人妻少妇一区二区| av亚洲波多野结衣白嫩水多波| 人人看人人色| 成人九九| 成人网站在线| 五月丁香人妻| 国产乱子伦-区二区三区熟睡91 | 日日骚av一区二区三区| 蜜芽av在线| 中文字幕永久在线| 日本免费在线观看视频| 日本中文字幕亚洲| AV无码网站| ⅴA日本成人| 国产在线欧美| 91在线一区二区三区| 丁香成人五月天| 国产一级a片| 欧美日韩国产成人在线观看| 国产成人免费在线视频| 久操视频在线播放| 国产A片录制现场妹子都很多| 无码人妻中文| 初尝人妻滑进去了莹莹视频| 一个色综合网| 国产精品久久久一区二区三区 | www.青草视频| 99久久婷婷国产综合精品漫| 免费在线观看A片| 日韩欧美国产黄色电影| 黄色大片在线| HEZ-502搭讪绝品人妻系列| 亚洲成人影片| 夜夜撸一撸| 色婷婷激情视频| 亚洲中文字幕在线免费观看视频| 女人高潮天天躁夜夜躁| 超碰牛牛| 精品人妻二区中文字幕| 欧美色成人免费在线视频| 丰满熟妇高潮呻吟无码| 无码颜射| 成人啪啪视频| 99re热在线视频| AV无码一区二区三区| 91网站免费| 人人色人人色| 91国内精品| 国产精品视频免费在线观看| 久热综合| 亚州不卡| 在线黄色av| 日韩精品视频在线| 麻豆视频在线播放| 在线观看的av网站| 高清无码18| 欧美大鸡巴视频| 免费Av网站| 亚洲av观看| 内射黄片| 亚洲色图片区| 亚洲vs无码秘蜜桃少妇| 不卡AV在线播放| 久久无码一区二区| 51妺妺嘿嘿午夜成人A片| JIZZJIZZ国产精品喷水| 偷拍精品视频| 免费看操逼视频| 大香蕉伊人网视频| 一本道视频在线| 日逼视频免费看| 国产精品男女| 91麻豆精品国产91久久久吃药| 久久国产乱子伦精品免费女,网站| 亚洲激情国产| 老女人日逼视频| 最近日韩中文字幕中文翻译歌词| 北条麻妃久久久| 第一福利成人AV导航| 国产亚洲午夜久久久成人电影| 黄色视频在线观看地址| 欧美日韩网站| 欧美特级黄片| 欧美色视频一区二区三区在线观看| 成人性爱网站| 乱人伦欲国语对白| 五月天成人网址| 色婷婷丁香五月| 国产人成| 亚洲高清无码中文字幕| 四虎影库男人天堂| 日本做爱视频| 秋霞午夜福利| 日本有码中文字幕| 水蜜桃视频免费观看| 国产亚洲视频在线观看视频| aaa成人| 大香蕉人人| 全部在线A片免费播放| 精品久久电影| 小日本91在线观看| 天天搞天天干| 欧美黄色性爱视频| 操碰99| 台湾成人在线| 人人看人人搞人人摸| 91久久人澡人妻人人做人人爽97| 国产福利在线播放| 久久久久亚洲AV无码专区成人 | 无码免费视频在线观看| 成人无码小电影| 精品成人久久| 日韩欧美一级| 特级西西西88大胆无码| 水果派AV| 久久中文无码| 日韩肏逼| 国产婷婷内射| 中文字幕日韩电影| 午夜成人亚洲| 高清无码免费看| 影音先锋成人电影| 国产精品色在线| 东北毛片| 十八无码成人免费网站| 日韩成人小电影| 欧美日韩加勒比| 韩国精品一区二区三区| 久久激情国产| 青娱乐亚洲精品| 轻轻操内射无码| 亚洲GV成人无码久久精品| 精产国品一区二区区别| www.久久精品视频| 婷婷久久综合久色综| 欧美精品久| 亚洲av电影网| 特级西西444www高清大胆免费看| 91蝌蚪视频在线观看| 夜夜狠狠躁日日| 91成人看片| 97人妻精品黄网站| 亚洲欧美第一页| 伊人青草视频9| 亚洲三级片无码| 亚洲性爱在线| 12——13女人毛片毛片| 成人A毛片| 亚洲无码av在线观看| 亚洲欧美性爱| 日本精品在线播放| 久久久亚洲无码| 国产资源AV| 黄色大片在线免费观看| 中文字幕无码影院| AV无码高清| 国产污视频在线观看| 男女午夜福利| 国产成人精品久久二区二区91| 亚洲精品国产AV| 97资源在线视频| 成人视频在线播放| 精品丰满人妻一区二区三区免费观| 日本成人视频| 欧美性生交18XXXXX无码| 亚洲操操操| 日韩av第一页| 大香蕉国产视频| 色播AV| 超碰自拍| 成人网站无码| 熟女探花精选| 五月丁香六月婷婷综合| 成人无码视频在线| 九九碰九九爱97超碰| 免费日本A片| 天天综合精品| 国产日韩欧美久久| 中文字幕性爱| 亚洲第一成年人网站| 亚洲第一在线| 国产一区在线看| 亚洲二区后入极品| 天天爱综合| 91人妻一区二区| 岛国无码破解AV在线播放| 成人毛片一区二区三区| 黄色美女网站| 天天干,天天日| 一区二区无码在线| 亚洲精品乱码久久久久久久| 浙江妇搡BBBB搡BBBB| 中文字幕精品在线视频| 撸撸操在线视频观看只有精品| 黄页网址在线观看| 久久婷婷青青| 国产又爽又黄A片| 欧美日韩综合网| av在线免费播放| 精品久久免费视频| 看操b视频| 日韩欧美国产成人| 国产一级黄色A片| 日韩欧美爱爱| 精品色哟哟| 婷婷涩嫩草鲁丝久久午夜精品| 天天夜夜操操| 欧美性之站| 精品一区二区三区免费毛片| AV老鸭窝| 77Q视频| 九九热视频在线观看| 日本中出视频| 伊人999| 国产乱子伦真实精品!| 中文字幕av在线观看| 要操逼网| 亚洲精品无码人妻| 性爱二区| 人妻夜夜爽天天爽| 狠狠综合| 国产黄色免费视频| 69伊人| 亚洲视频一区二区| 影音先锋乱伦| 国产精品久久久久久亚洲毛片 | 肏逼在线观看| 91美女网站| 黄色av免费在线| 另类老妇性BBwBBw| 亚洲无码观看视频| 高清毛片AAAAAAAAA郊外| 草逼片| 国产精品国产三级国产专区53| 成人伦理聚合| 国产黄色视频免费观看| 日韩一| 三洞齐开Av在线免费观看| 操碰视频在线| 国产女人18水真多18精品| 久久er| 影音先锋av无码| 亚洲韩国国产| 潮喷在线| 北条麻妃精品在线| 国产毛片18水真多18精品| 亚洲精品一区二三区不卡| 日韩性爱片| 精品久久免费| 91超碰在线免费观看| 97国产精品视频人人做人人爱| 无码一区二区三区四季| 一曲二曲三曲在线观看中文字| 国产成人无码精免费视频| 偷偷操穴| 日韩精品91| 永久免费AV无码| 精品国产va久久久久久| 国精产品秘成人一区二| 新超碰97| 日韩免费福利视频| 日韩精品一二三区| 一色综合| 日韩人妻无码网站| 亚洲AV第二区国产精品| 黄色片大全| 欧美三级性爱视频| 99国产在线视频| 九九视频免费观看| 日韩毛片在线免费观看| 久久AV电影| 91国产视频在线观看| 天天日天天操天天爽| 伊人久久综合| 一级欧美视频| 亚洲激情自拍| 91av电影网| 爱搞搞就搞搞| 欧美精品系列| 欧美综合区| 人人干人人看| 成人操B| AV无码一区二区三区| 日本三级久久| 人人爱人人插| 国产精品久久无码| 国产中文字字幕乱码无限| 天天影视综合网免费观看电视剧国产 | 最新国产视频| 粉嫩99精品99久久久久久特污| 久草蜜臀| 亚洲A片在线观看| 亚州视频在线| 色综合社区| 国产性爱网站| 波多野结衣无码电影| 成人图片小说| 男女啪网站| 大香蕉啪啪| 日本黄色视频网址| 色婷婷五月天激情| 国产精品一级A片| 东京热综合| 亚洲综合天堂| 操嫩逼视频| AAA一区二区三区| 人人草人人| 黄色成人在线免费观看| 色婷婷小说| 天天日天天综合| 成人片成人网久久蜜桃臀| 国产黄A片免费网站免费| 久久足交| www.jiujiujiu| 日韩中文毛片| 一级黄色电影网站| 东方a在线| 青草久久网| 久久六月天| 国产精品成人视频| 高潮无码视频| 88AV在线视频| 91精品少妇高潮一区二区三区不卡| 亚洲国产精品成人综合色五月| 久久AV片| 国产黄色免费视频| 精品无码蜜桃| 欧美国产日韩视频| 国产欧美综合视频一区二区在线 | 内射视频网| 青青草免费在线视| 青青伊人网| 国产成人高潮毛片| 在线观看视频亚洲| 三级AV在线观看| 伊人网站视频在线| 日韩福利视频| 国产欧美一区二区三区四区 | 无码婷婷| 日本欧美黄色| 精品动漫3D一区二区三区免费版| 欧美亚洲日韩一区| 黄色福利网址| 成人在线免费观看视频| 视色网| 欧美色图综合| 国产精品国产精品国产专区不52| 思思热在线视频播放| aa无码视频| 亚洲无码三区| 97精品在线视频| 亚洲男人天堂视频| 亚洲无码av网站| 人人妻日日摸狠狠躁| 逼特逼视频| 婷婷五月天av| 欧美三级片在线视频| 又黄又爽的视频| 91豆花在线| 中文无码字幕视频| 欧美高清在线综合| 欧美激情一区二区三区| www.av91| 91免费成人电影| 囯产一级a一级a免费视频| 黄色小说在线播放| 国产久视频| 18禁网址| 久久综合中文字幕| 欧美天堂在线观看| 翔田千里50岁无码| 色悠悠国产| 无码不卡在线播放| 波多野结衣中文字幕久久| 美女av日逼| 精品视频在线免费观看| 一本色道久久综合无码欧美| 亚洲成人影片在线观看| 婷婷午夜精品久久久久久性色| 亚洲Av无码午夜国产精品色软件 | aa久久| 久久黄色视频免费观看| 啪啪免费网| 中文字幕无码Av在线| 免费的一级A片| 成人在线乱码视频| 免费看一区二区三区A片| 国产99re| 国产黄A| 亚洲精品69| 北条麻妃一区二区三区在线播放 | 黄色日逼视频| 亚洲v在线| 色xxxx| 中文字幕2025年最好看电视剧| 无码福利视频| 老鸭窝成人视频| 东北A片| 五香丁香天堂网| 蜜桃精品久久久| 亚洲免费在线观看| 尤物视频在线观看| 爱搞搞就搞搞| 亚洲国产精品久久久| 久久久久久久91| 97精品人妻一区二区三区在线| 老女人网站| 成人免费在线电影| 黄色三级A片| 欧美老女人逼| 日韩欧美中文在线观看| 色色色成人视频| 日韩欧美在线视频| 亚洲日韩精品中文字幕| 免费无码高清视频| 日韩免费A片| 日韩综合久久| 婷婷久久亚洲| 无码人妻精品一区二区三区蜜臀百度 | 狼人综合影院| 国产乱码| 中文字幕免费看高清| AV在线观看黄| 国精产品秘一区二区-| 五月网| 亚洲资源在线观看| 国产成人精品AA毛片| av午夜| 五月开心激情网| 国产一卡二卡在线观看| 18岁成人毛片| 北条麻妃在线视频聊天| 青草久久视频| 影音先锋国产av| 97AV在线| 国产午夜精品一区二区三区牛牛| eeuss在线| 精品91在线视频| 91成人视频免费观看| 高清无码视频免费版本在线观看| 亚洲欧美成人片| 狠狠色噜噜狠狠狠7777米奇网 | 日韩一级无码毛片| 超碰小说| 免费在线观看中文字幕| 成人做爰100片免费-百度| chip少妇性| 躁BBB躁BBB躁BBBBBB日| 一道本在线| 日韩精品三区| 插菊花综合网1| 在线免费看黄片| 插插视频| 久艹视频在线观看| 特级西西444WWW大精品视频| 狠狠操在线视频| 江苏妇搡BBBB搡BBBB| 一道本无吗一区| A片视频在线观看| 欧美视频二区| 青青草综合网| 黄色电影A片| 99视频在线播放| 国内自拍第一页| 久久成人免费| 免费一级a片| 江苏妇搡BBBB搡BBBB| 在线中文字幕视频| 成人A片一级| 国产乱妇无码毛片A片在线看下载 日韩电影免费在线观看中文字幕 欧美性爱中文字幕 | 亚洲第一色在线| 亚洲精品字幕久久久久| 天天亚洲| 日韩网站在线| av无码导航| 福利视频导航自拍| 国产亚洲午夜久久久成人电影| 97国产精品| 日韩黄片| 亚洲AV无码第一区二区三区蜜桃| 大屌探花| 天天干夜夜操熟女| 在线观看视频免费无码| 久久国产精品影院| av日韩在线播放| 福利视频导航自拍| 久久久久久久久久久久国产精品| 你懂得视频在线观看| 青青草网站在线观看| 日本精品视频一区二区| 国产91无码| 成人性爱视频网站| 精东影业AV无码精品| 国产色视频一区二区三区QQ号| 麻豆911| 欧美国产日本| 天天天天天天操| 特黄aaaaaaaa真人毛片| 搡BBBB搡BBB搡我瞎了| 波多野结衣无码视频在线观看| 国产群交| gay成人在线观看| 99成人乱码一区二区三区在线 | 国产精品无码一区二区三区| 黄片免费大全| 色欲影视插综合一区二区三区| 丁香五月激情中文字幕| 婷婷激情五月天丁香| 日韩色妇| 69AV免费视频| 色色三区| 操逼操逼逼| 久久综合伊人777777| 99人人操| 国产精品96久久久| 欧美后门菊门交| 黄色操逼网站| 殴殴美日韩在线| 青草午夜| 91精品国产一区| 梁祝艳谭A级毛片| 五月天天| 久久精品秘一区二区三免费| 91无码AⅤ在线| 囯产精品久久久久久久| 在线免费观看黄色片| 欧美日韩性爱视频| 91无码人妻传媒tv| 木下凛凛子AV888AV在线观看| 天天操人人妻| 狠狠干老司机| 国产天堂在线观看| 久草视频福利在线| 国产a片免费看| 三级视频网| 日本午夜视频| 中文字幕第一页在线| 日韩图片区小说视频区日| 日韩av电影免费在线观看| 青青成人视频| 精品一区二区三区四| 亚洲成年视频| 91免费成人| 狠狠操AV| 久热中文字幕| 久久成人A片| 人妻免费在线视频| 欧美日韩国产成人电影| 午夜精品人妻无码| 日本爽妇网| 免费三级网址| 亚洲欧美在线视频| 18成人毛片| 99天天视频| 亚洲精品国产精品国自产网站| 国产欧美在线看| 久久久久久久91| 东北嫖老熟女一区二区视频网站| 一区二区av| 亚洲精品成人片在线观看精品字幕| 激情婷婷色五月| 91原创国产内射| a片免费在线| 国产真实乱婬A片三区高清蜜臀| 无码精品一区二区三区同学聚会| 黄色免费网站| 黄色毛片av| 西欧超碰在线| 波多野吉衣高清无码| 嫩草视频在线观看| 黄色高清无码| 午夜大香蕉| 91福利视频网| 日韩日批| 一级A色情大片| 久久成人综合| 蜜桃精品视频| 无码成人视频| 国产女人高潮的AV毛片| 波多野结衣av在线观看| 青青视频网| 成人电影一区| 大香蕉在线视频99| 91人妻无码视频| 全国男人的天堂网站| 久99久视频| 无码一道本一区二区无码| 99热亚洲| 午夜国产精品AV| 久久国产日韩| 蜜臀av在线免费观看| 成人视频在线观看黄色18| 日韩精品人妻一区二区| 亚洲天堂av在线观看| 亚洲videos| www.人人摸| 翔田AV无码秘三区| av无码aV天天aV天天爽| 国产亚洲色情| 69福利| 亚洲A网| 中文字幕在线观看日韩| 伊人激情| 亚洲最新AV在线| 中文字幕va| 精品人妻午夜一区二区三区四区| 韩国无码人妻| 久草网大香蕉| 亚洲天堂无码av| 一二三四区视频| 少妇嫩搡BBBB搡BBBB| 豆花视频在线| 成人黄网站免费观看| 久久国产亚洲| 国内精品久久久久| 91久久欧美极品XXXXⅩ| 亚洲欧美手机在线| 人妻啪啪| 日韩成人AV在线| 欧美精产国品一二三产品在哪买| 国产18女人水真多免费看| 丁香五月天激情视频| 高清无码二区| 亚洲无码影音先锋| 夜夜嗨av无码一区二区三区| 97午夜福利视频| 国产夫妻在线视频| 黄色综合| 午夜日韩乱伦| 国产精品同| 午夜天堂网| 东京热一区二区| www日本色| 影音先锋男人你懂的| 日韩无码人妻一区二区| 超碰99在线| 男人的天堂视频在线观看| 无码免费高清视频| 七十路の高齢熟女千代子| 爱福利视频网| 激情五月婷婷网| 福利视频一区二区三区| 国产av黄色| 国产在线欧美在线白浆| 在线观看操逼| 久久亚洲免费视频| 免费激情网站| 丁香六月婷婷激情| 久久久久99精品成人片三人毛片| 亚洲AV激情无码专区在线播放| 雾水情缘电影港片| 中文字幕在线视频日本| A片动漫| 香蕉伊人网| 超碰毛片| 黄色工厂这里只有精品| 欧美日韩国产一区二区| 亚洲丁香五月激情| 色综合成人| 午夜久久| 亚洲免费在线观看| 久久久精品中文字幕麻豆发布| 又大又黄又爽| 三级片视频网站| 色综合九九| 国产av三级片| 猛操美女| 无码av网| 污污污污污www网站免费观看| 蜜桃视频无码| 久久久久久99| 精品人妻一区二区三区阅读全文| 一本色道久久综合熟妇| 欧美日韩一区二区三区在线电影| 国内精品久久久久久久久久 | 久久精品美臀| 3D动漫操逼视频| 爱搞搞就要搞搞| 一欧美日韩免费/看| 婷婷深爱激情| 欧美中文在线观看| 北条麻妃一区二区三区-免费免费高清观看 | 中文在线视频| www.色中色| 日韩在线一级| 操操影院| av视屏| 亚洲黄色小视频| 精品九九九| 四虎看片| 免费成人黄色网址| 亚洲精品国产精品乱玛不99| 亚洲天堂网在线观看视频| 三级高清无码| 五月天婷婷AV| 十八女人高潮A片免费| 中文字幕在线观看免费高清完整版在线观看 | 午夜av在线观看| 国产精品怡红院有限公司| 日韩精品小电影| 最新中文字幕在线视频| 久久久久久无码视频| ChineSe露脸老女人| 特级特黄AAAAAAAA片| 97夜色| 国产精品自拍偷拍| 麻豆回家视频区一区二| 四虎成人精品永久免费AV九九| 色色777| 男人av网站| 影音先锋亚洲AV| 五月天性爱| 一区二区中文| 不卡不在线中文| 中文字幕不卡| 大香蕉伊人色| 蜜桃BBwBBWBBwBBw| 亚洲福利一区二区| 日木毛片| 麻豆精品| 日韩成人无码电影网站| 性满足BBWBBWBBW| 欧美不卡在线视频| 做爰视频毛片下载蜜桃视频| 特级西西444WWW大精品视频| 成人做爰100片免费着| 欧美一级大香蕉| 手机看片福利一区二区| 天天干人人干| 日本18禁网站| 第四色视频| 亚洲AV永久无码精品| 精品人妻一区二区乱码一区二区| 欧美激情影院| 欧美色小说| 成人在线H|