精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring WebFlux核心組件詳解

開發(fā) 前端
對于客戶端,有一個基本的ClientHttpConnector契約來執(zhí)行HTTP請求,包括非阻塞I/O和響應式流回壓,以及Reactor Netty, Reactive Jetty HttpClient和Apache HttpComponents的適配器。應用程序中使用的高級web客戶端構建在這個基本契約之上。

環(huán)境:Springboot2.4.12

概述

spring-web模塊包含了對響應式web應用程序的以下基本支持:

  • 對于服務器請求處理,有兩個級別的支持。
  1. HttpHandler:處理HTTP請求的基本協(xié)議,包括非阻塞I/O和響應式流背壓,以及Reactor Netty、Undertow、Tomcat、Jetty和任何Servlet 3.1+容器的適配器。
  2. WebHandler API:稍微高級一點的,用于處理請求的通用web API,在此基礎上構建具體的編程模型,如帶注釋的控制器和函數(shù)式端點。
  • 對于客戶端,有一個基本的ClientHttpConnector契約來執(zhí)行HTTP請求,包括非阻塞I/O和響應式流回壓,以及Reactor Netty, Reactive Jetty HttpClient和Apache HttpComponents的適配器。應用程序中使用的高級web客戶端構建在這個基本契約之上。
  • 對于客戶端和服務器,用于HTTP請求和響應內(nèi)容的序列化和反序列化的編解碼器。

HttpHandler

HttpHandler是一個簡單的協(xié)議,只有一個方法來處理請求和響應。它故意最小化,其主要和唯一的目的是在不同的HTTP服務器api上提供最小的抽象。

支持的服務器api如下表所示:

服務器

服務的API

反應式流支持

Netty

Netty API

Reactor Netty

Undertow

Undertow API

spring-web: Undertow到Reactive Streams橋接

Tomcat

Servlet 3.1 non-blocking I/O; Tomcat API to read and write ByteBuffers vs byte[]

spring-web:Servlet 3.1非阻塞 I/O到Reactive Streams橋接

Jetty

Servlet 3.1 non-blocking I/O; Jetty API to write ByteBuffers vs byte[]

spring-web:Servlet 3.1非阻塞 I/O到Reactive Streams橋接

Servlet 3.1 container

Servlet 3.1 non-blocking I/O

spring-web: Servlet 3.1非阻塞 I/O到Reactive Streams橋接

下表描述了服務器依賴關系:

服務器

Group id

Artifact name

Reactor Netty

io.projectreactor.netty

reactor-netty

Undertow

io.undertow

undertow-core

Tomcat

org.apache.tomcat.embed

tomcat-embed-core

Jetty

org.eclipse.jetty

jetty-server, jetty-servlet

下面的代碼片段顯示了在每個服務器API中使用HttpHandler適配器:

  • Reactor Netty
HttpHandler handler = WebHttpHandlerBuilder.applicationContext(this.applicationContext).build();
ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(handler);
HttpServer.create().host(host).port(port).handle(adapter).bind().block();
  • Undertow
HttpHandler handler = WebHttpHandlerBuilder.applicationContext(this.applicationContext).build();
UndertowHttpHandlerAdapter adapter = new UndertowHttpHandlerAdapter(handler);
Undertow server = Undertow.builder().addHttpListener(port, host).setHandler(adapter).build();
server.start();
  • Tomcat
HttpHandler handler = WebHttpHandlerBuilder.applicationContext(this.applicationContext).build();
Servlet servlet = new TomcatHttpHandlerAdapter(handler);


Tomcat server = new Tomcat();
File base = new File(System.getProperty("java.io.tmpdir"));
Context rootContext = server.addContext("", base.getAbsolutePath());
Tomcat.addServlet(rootContext, "main", servlet);
rootContext.addServletMappingDecoded("/", "main");
server.setHost(host);
server.setPort(port);
server.start();
  • Jetty
HttpHandler handler = WebHttpHandlerBuilder.applicationContext(this.applicationContext).build();
Servlet servlet = new JettyHttpHandlerAdapter(handler);


Server server = new Server();
ServletContextHandler contextHandler = new ServletContextHandler(server, "");
contextHandler.addServlet(new ServletHolder(servlet), "/");
contextHandler.start();


ServerConnector connector = new ServerConnector(server);
connector.setHost(host);
connector.setPort(port);
server.addConnector(connector);
server.start();
  • Servlet 3.1+ Container

要將war部署到任何Servlet 3.1+容器,你可以擴展并在war中包含
AbstractReactiveWebInitializer。這個類用ServletHttpHandlerAdapter封裝了一個HttpHandler,并將其注冊為Servlet。

部分源碼:?

public abstract class AbstractReactiveWebInitializer implements WebApplicationInitializer {
public void onStartup(ServletContext servletContext) throws ServletException {
String servletName = getServletName();
ApplicationContext applicationContext = createApplicationContext();
refreshApplicationContext(applicationContext);
registerCloseListener(servletContext, applicationContext);


// 與上面的服務器一樣通過WebHttpHandlerBuilder構建HttpHandler對象
HttpHandler httpHandler = WebHttpHandlerBuilder.applicationContext(applicationContext).build();
// 該類實現(xiàn)了javax.servlet.Servlet接口
ServletHttpHandlerAdapter servlet = new ServletHttpHandlerAdapter(httpHandler);


ServletRegistration.Dynamic registration = servletContext.addServlet(servletName, servlet);
registration.setLoadOnStartup(1);
registration.addMapping(getServletMapping());
registration.setAsyncSupported(true);
}
}

WebHandler

org.springframework.web.server包構建在HttpHandler契約之上,為通過多個WebExceptionHandler、多個WebFilter和單個WebHandler組件的鏈處理請求提供通用的web API。只需指向自動檢測組件的Spring ApplicationContext,或者向構建器注冊組件,就可以將該鏈與WebHttpHandlerBuilder組合在一起。

HttpHandler的目標很簡單,就是抽象出不同的HTTP服務器,而WebHandler API的目標是提供web應用中常用的更廣泛的功能,例如:

  • 具有屬性的用戶會話
  • 請求屬性
  • 已解析請求的區(qū)域設置或主體
  • 訪問已解析和緩存的表單數(shù)據(jù)
  • 多部分數(shù)據(jù)的摘要。
  • 等等

特殊bean類型

下表列出了WebHttpHandlerBuilder可以在Spring ApplicationContext中自動檢測或直接注冊的組件:

Bean name

Bean type

Count

Description

<any>

WebExceptionHandler

0..N

為來自WebFilter實例鏈和目標WebHandler的異常提供處理。

<any>

WebFilter

0..N

在過濾器鏈的其余部分和目標WebHandler的前后應用攔截樣式邏輯。

webHandler

WebHandler

1

請求處理程序。

webSessionManager

WebSessionManager

0..1

通過ServerWebExchange上的方法公開的WebSession實例管理器。默認為DefaultWebSessionManager。

serverCodecConfigurer

ServerCodecConfigurer

0..1

用于訪問HttpMessageReader實例,解析表單數(shù)據(jù)和multipart數(shù)據(jù),然后通過ServerWebExchange上的方法公開這些數(shù)據(jù)。默認情況下是servercodecconfiguration.create()。

localeContextResolver

LocaleContextResolver

0..1

LocaleContext的解析器通過ServerWebExchange上的方法公開。默認為AcceptHeaderLocaleContextResolver。

forwardedHeaderTransformer

ForwardedHeaderTransformer

0..1

對于處理轉發(fā)的類型頭,可以提取并刪除它們,也可以只刪除它們。默認不使用。

Form Data

ServerWebExchange公開了以下訪問表單數(shù)據(jù)的方法:

Mono<MultiValueMap<String, String>> getFormData();

DefaultServerWebExchange使用配置的HttpMessageReader將表單數(shù)據(jù)(
application/x-www-form-urlencoded)解析為MultiValueMap。默認情況下,F(xiàn)ormHttpMessageReader被配置為由ServerCodecConfigurer bean使用。

Multipart Data

ServerWebExchange公開了以下訪問多部分數(shù)據(jù)的方法:

Mono<MultiValueMap<String, Part>> getMultipartData();

DefaultServerWebExchange使用配置的HttpMessageReader<MultiValueMap<String, Part>>來將multipart/form-data內(nèi)容解析為MultiValueMap。默認情況下,這是DefaultPartHttpMessageReader,它沒有任何第三方依賴。另外,還可以使用基于Synchronoss nio Multipart庫的SynchronossPartHttpMessageReader。兩者都是通過ServerCodecConfigurer bean進行配置的。

要以流式方式解析多部分數(shù)據(jù),你可以使用HttpMessageReader<Part>返回的` Flux<Part> `。例如,在帶注釋的控制器中,使用@RequestPart意味著通過名稱訪問各個部分,就像map一樣,因此需要完整解析多個部分的數(shù)據(jù)。相比之下,可以使用@RequestBody將內(nèi)容解碼到Flux<Part>,而無需收集到MultiValueMap。

Filters

在WebHandler API中,你可以使用WebFilter在過濾器和目標WebHandler處理鏈的其余部分之前和之后應用攔截風格的邏輯。當使用WebFlux配置時,注冊WebFilter就像把它聲明為Spring bean一樣簡單,并且(可選地)通過在bean聲明上使用@Order或實現(xiàn)Ordered來表示優(yōu)先級。

Exceptions

在WebHandler API中,可以使用WebExceptionHandler來處理來自WebFilter實例鏈和目標WebHandler的異常。當使用WebFlux配置時,注冊WebExceptionHandler就像聲明它為Spring bean一樣簡單,并且(可選)通過在bean聲明上使用@Order或實現(xiàn)Ordered來表示優(yōu)先級。

下表描述了可用的WebExceptionHandler實現(xiàn):

Exception Handler

Description

ResponseStatusExceptionHandler

通過將響應設置為異常的HTTP狀態(tài)碼,提供對ResponseStatusException類型異常的處理。

WebFluxResponseStatusExceptionHandler

擴展了ResponseStatusExceptionHandler,它還可以確定任何異常的@ResponseStatus注解的HTTP狀態(tài)碼。

這個處理程序是在WebFlux配置中聲明的。

Codecs

spring-web和spring-core模塊通過非阻塞I/O提供響應式流回壓,支持序列化和反序列化與高層對象之間的字節(jié)內(nèi)容。下面介紹這種支持:

  • Encoder與Decoder是底層協(xié)議,獨立于HTTP對內(nèi)容進行編碼和解碼。
  • HttpMessageReader和HttpMessageWriter是編碼和解碼HTTP消息內(nèi)容的協(xié)議。
  • Encoder可以使用EncoderHttpMessageWriter包裝,以適應在web應用程序中使用,而 Decoder可以使用DecoderHttpMessageReader包裝。
  • DataBuffer抽象了不同的字節(jié)緩沖區(qū)表示形式(例如Netty ByteBuf、java.nio。ByteBuffer等),也是所有編解碼器都能處理的。

spring-core模塊提供了byte[]、ByteBuffer、DataBuffer、Resource和String編碼器和解碼器的實現(xiàn)。spring-web模塊提供了Jackson JSON、Jackson Smile、JAXB2、Protocol buffer和其他Encoder和Decoder,以及針對表單數(shù)據(jù)、多部分內(nèi)容、服務器發(fā)送事件等只支持web的HTTP消息閱讀器和writer實現(xiàn)。

責任編輯:武曉燕 來源: 實戰(zhàn)案例錦集
相關推薦

2022-11-04 08:39:46

SpringWebFlux

2009-07-17 16:19:16

Swing核心組件

2022-07-04 09:15:10

Spring請求處理流程

2023-09-04 11:52:53

SpringMVC性能

2020-05-21 13:25:43

Spring組件架構

2020-11-02 07:00:29

Spring Boo注解自動化

2024-01-10 12:26:16

2019-05-28 12:03:59

vuejavascript前端

2023-11-02 18:01:24

SpringMVC配置

2020-03-24 09:54:57

SpringMVCWebFlux

2019-03-04 08:48:23

Spring WebFJavaIO

2020-07-07 07:00:00

Spring WebFREST APIReactive AP

2021-07-15 11:16:31

Spring WebWebFlux架構

2022-09-26 08:54:39

Spring函數(shù)式編程

2024-03-06 07:52:21

Spring框架響應式編程微服務架構

2022-01-05 08:53:13

Spring原理分析MVC

2020-05-25 07:00:00

雙因素認證身份認證密碼

2024-01-10 09:59:19

虛擬線程信息

2022-03-02 09:00:00

微服務架構開發(fā)

2009-07-17 12:54:13

點贊
收藏

51CTO技術棧公眾號

国产香蕉97碰碰久久人人| 亚洲 欧美 激情 另类| 日韩一区二区三区免费播放| 欧美日本一区二区三区四区| 男人添女人下部视频免费| 欧美 日韩 国产 成人 在线 91| 午夜亚洲影视| 中文字幕不卡av| 成人做爰www看视频软件| 欧美一级大片| 亚洲影视资源网| 日韩欧美精品一区二区| 亚洲毛片欧洲毛片国产一品色| 老牛嫩草一区二区三区日本 | 黄色亚洲大片免费在线观看| 亚洲摸下面视频| 国产精品区在线| 一级毛片久久久| 一区二区久久久久| 午夜老司机精品| 色av男人的天堂免费在线| 国产一区二区电影| 国产精品入口免费视| 亚洲精品日韩精品| 超碰在线播放91| 久久精品成人一区二区三区蜜臀| 欧美激情一区二区三区免费观看| 亚州视频一区二区三区| 美女网站一区二区| 97精品国产97久久久久久| 亚洲精品一区二三区不卡| 国产l精品国产亚洲区久久| 国产精品剧情| 中文字幕乱码亚洲精品一区| 精品视频在线观看| www.久久色| 久久aⅴ国产欧美74aaa| 国产99久久久欧美黑人 | 五月天开心婷婷| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲国产精品一区二区www| 青青草原国产免费| 日本不卡视频| 中文字幕一区二区在线观看| 五码日韩精品一区二区三区视频| 天堂a√在线| 99久久精品国产麻豆演员表| 999视频在线观看| 国产美女主播在线观看| 精品制服美女久久| 成人黄色av网| 国产日本精品视频| 国产精品18久久久久| 久久久九九九九| 国产精品xxx在线观看www| 99久久免费国产精精品| 日本xxxx人| 久久一级电影| 久久天堂电影网| 国精品无码一区二区三区| 91精品高清| 欧美日一区二区三区在线观看国产免| 亚洲图片欧美午夜| 我不卡一区二区| 欧美精品一区二区久久| 中文字幕精品av| www在线观看免费视频| 亚洲精品白浆高清| 亚洲色图综合网| 国产成人免费在线观看视频| 婷婷成人基地| 欧美国产视频一区二区| 久久久久久激情| 蜜桃视频一区| 国产精品一区二区三区久久| 97人妻精品一区二区三区动漫 | 韩国日本美国免费毛片| 久久天堂av| 日韩一区二区三区观看| 欧美极品jizzhd欧美仙踪林| 妖精视频一区二区三区免费观看| 国产亚洲激情在线| 精品国产欧美日韩不卡在线观看| 韩国在线一区| 热久久美女精品天天吊色| 正在播放木下凛凛xv99| 国产精品996| 日韩欧美一区二区久久婷婷| 久久综合毛片| 网友自拍视频在线| 亚洲一区在线观看免费观看电影高清| 男人添女人下部高潮视频在观看| 日韩三级影视| 2017亚洲天堂1024| 成人18精品视频| 日韩高清三级| 亚洲wwwww| 日本高清免费不卡视频| www.51色.com| 久久99影视| 中文字幕一区二区三区精华液| 亚洲天堂男人天堂| 黑人操日本美女| 一区二区三区四区五区精品视频| 国产精品视频1区| 亚洲精品国产手机| 中文一区二区在线观看| 国产原创popny丨九色| 另类一区二区| 亚洲精品在线看| 免费又黄又爽又色的视频| 男人的天堂亚洲一区| 精品97人妻无码中文永久在线| 久久精品色综合| 日韩在线视频免费观看| 国产成人无码精品久在线观看| 久久机这里只有精品| 久久人人九九| 电影k8一区二区三区久久| 欧美日韩在线直播| 91中文字幕永久在线| 激情综合自拍| 亚洲va久久久噜噜噜| 成人性生交视频免费观看| 国产偷人爽久久久久久老妇app | 中文字幕在线视频一区二区三区| 亚洲盗摄视频| 午夜精品久久久久久久白皮肤 | 欧美 日韩 国产 在线观看| 中文字幕在线中文字幕在线中三区| 日韩无一区二区| 国产日韩精品中文字无码| 亚洲作爱视频| 国产欧美日韩综合一区在线观看| av中文字幕在线观看| 欧美日韩国产大片| 三区四区在线观看| 老牛影视一区二区三区| 久久偷窥视频| 日本三级一区| 亚洲男人天堂网| 欧美一区二区三区四| 成人中文字幕在线| www.国产在线播放| 老司机aⅴ在线精品导航| 欧美激情精品久久久久久免费印度| 国产欧美日韩综合精品一区二区三区| 国产精品女人毛片| 日韩精品视频一二三| 色喇叭免费久久综合| 国产欧美在线观看| 亚州av一区二区| 国产成人av免费在线观看| 日韩精品五月天| 日韩欧美的一区| 山东少妇露脸刺激对白在线| 可以看av的网站久久看| 日韩片电影在线免费观看| 婷婷午夜社区一区| 亚洲最大在线视频| 在线观看亚洲一区二区| 最近日韩中文字幕| 四虎1515hh.com| 国一区二区在线观看| 国产精品一区二区免费看| 18video性欧美19sex高清| 精品国产a毛片| 日本三级小视频| 精品123区| 中文字幕一区二区三区av| 一起操在线视频| 中文字幕一区二区av | 日韩精品免费在线视频| 天天干天天操天天爱| 国产视频亚洲色图| www.cao超碰| 欧美精品一卡| 久久伊人一区| 日韩欧美专区| 欧美激情综合亚洲一二区| 四虎精品成人免费网站| 欧美亚洲国产一卡| 国产少妇在线观看| 91女人视频在线观看| 国内外成人免费在线视频| 色女孩综合网| 视频精品一区| 国产精品av在线播放| 国产精品实拍| 亚洲欧美日韩精品久久亚洲区 | 久久免费视频6| 久久综合视频网| 中文字幕 欧美日韩| 伊人久久亚洲美女图片| 亚洲v欧美v另类v综合v日韩v| 精品国产亚洲一区二区在线观看| 97香蕉久久超级碰碰高清版| 91精彩视频在线观看| 亚洲精品一区二区三区影院| 中文文字幕一区二区三三| 一区二区三区高清在线| 国产精品天天干| 高清不卡一区二区| 久久夜色精品国产| 日本视频www| 国产精品私人影院| 91黄色免费视频| 国产一区二区三区四区在线观看| 日本成年人网址| 欧美1区2区3区| 日韩一区二区三区资源| 国产精品高潮呻吟久久久久| 成人精品在线观看| 日韩在线影院| 国内成人精品一区| 国产91在线视频蝌蚪| 亚洲人永久免费| 深爱激情五月婷婷| 日韩色在线观看| 一区二区三区黄色片| 一本色道久久综合亚洲精品按摩| 丰满少妇被猛烈进入一区二区| 国产清纯白嫩初高生在线观看91| 在线免费看黄色片| 国产精品69久久久久水密桃| 中文字幕一区二区三区四区在线视频| 青青草国产免费一区二区下载| 久久av一区二区| 给我免费播放日韩视频| 亚洲a级在线观看| 国产毛片精品久久| 国产精品久久久久91| 欧美日韩在线观看首页| 久久久久中文字幕| 日本高清在线观看视频| 久久成人国产精品| а√中文在线8| 久久伊人色综合| 丝袜美腿美女被狂躁在线观看| 亚洲男子天堂网| 欧美孕妇性xxxⅹ精品hd| 亚洲第一精品福利| 亚洲AV无码成人片在线观看| 欧美一二三四区在线| 国产理论视频在线观看| 欧美精品自拍偷拍动漫精品| 亚洲最大成人av| 欧美日韩大陆在线| 中文字幕一级片| 欧美三级午夜理伦三级中视频| 精品乱码一区内射人妻无码| 在线观看一区二区视频| 波多野结衣在线观看视频| 在线一区二区三区四区五区 | 欧美在线视频你懂得| 中文字幕在线天堂| 欧美日韩综合不卡| 91精品国产乱码久久| 欧美一区午夜视频在线观看| 国产美女主播在线观看| 精品精品国产高清a毛片牛牛| 蜜臀久久精品久久久久| 亚洲国产精品久久久久秋霞蜜臀| 天天综合天天综合| 亚洲性猛交xxxxwww| 日本蜜桃在线观看| 欧美肥老妇视频| 国模精品视频| 国产精品黄色av| 刘亦菲久久免费一区二区| 午夜亚洲精品| 免费无码av片在线观看| 免费在线欧美视频| xxxx在线免费观看| 成人美女视频在线看| 免费观看av网站| 国产精品国产三级国产a | 亚洲风情在线资源站| 可以免费看的av毛片| 色综合咪咪久久| 国产精品色综合| 亚洲国产日韩欧美在线图片| 福利成人在线观看| 久久成人在线视频| 依依综合在线| 成人天堂噜噜噜| 日本天堂一区| 亚洲国产精品99久久| 国产欧美小视频| 亚洲福利视频三区| 中文字幕在线网站| 精品国产乱码久久久久久老虎 | 91麻豆精品在线观看| 五月天婷婷丁香网| 亚洲va国产天堂va久久en| 波多野结衣一二区| 日韩精品综合一本久道在线视频| 男人的天堂在线视频| 欧美xxxx14xxxxx性爽| 中文在线最新版地址| 999视频在线观看| 不卡视频在线| 免费一级特黄特色毛片久久看| 免费不卡在线视频| 欧美做受喷浆在线观看| 亚洲欧美成人一区二区三区| 精品91久久| 日韩精品在线电影| 在线观看国产原创自拍视频| 欧美国产日韩中文字幕在线| 日本精品裸体写真集在线观看| 亚洲一区二区三区四区视频| 国产乱码精品一区二区亚洲 | 色吊一区二区三区| 国产综合视频在线| 最新中文字幕亚洲| 中文在线免费视频| 国产精品大全| 国产精品国产一区| 无码无遮挡又大又爽又黄的视频| 国产成人精品免费网站| 永久免费观看片现看| 91九色综合久久| 夜夜狠狠擅视频| 日韩精品视频三区| 色呦呦视频在线观看| 亚洲成av人影院| 国产又粗又猛又爽又黄91| 亚洲男人第一av网站| 交100部在线观看| 成人av免费电影| 亚洲先锋影音| 亚洲va综合va国产va中文| 国产日韩影视精品| aaaaaa毛片| 亚洲女人天堂av| 色戒汤唯在线| 国内精品久久久久久久果冻传媒| 国产综合网站| 欧美午夜精品一区二区| 亚洲精品免费在线观看| 一区二区视频在线免费观看| 亚洲午夜激情免费视频| 偷拍视频一区二区三区| 欧美资源一区| 日韩电影在线一区| 国产又黄又粗的视频| 欧美三级日韩三级国产三级| www.亚洲免费| 91精品国产自产在线观看永久| 视频在线不卡免费观看| 性欧美1819| 亚洲欧美国产高清| 成人午夜精品福利免费| 久久欧美在线电影| 欧美激情极品| 女人扒开屁股爽桶30分钟| 久久久99免费| 成人手机电影网| 五月天精品视频| 在线观看三级视频欧美| 成在在线免费视频| 国产精品美女在线| 91欧美在线| 欧美色图校园春色| 亚洲18色成人| 看电影就来5566av视频在线播放| 国产精品白嫩初高中害羞小美女 | 超清av在线| 另类小说综合网| 日韩成人一级大片| 亚洲 欧美 变态 另类 综合| 米奇精品关键词| 国产欧美精品va在线观看| 亚洲先锋影音| 182在线视频| 欧美午夜精品久久久久久孕妇 | 国产精品爽黄69天堂a| 手机亚洲手机国产手机日韩| 亚洲精品无码久久久久久久| 亚洲高清视频的网址| 国产系列在线观看| 91亚洲国产精品| 国产精品久久久免费| 香蕉久久久久久久| 精品国产乱码久久久久久影片| 吞精囗交69激情欧美| 成年丰满熟妇午夜免费视频| 91视视频在线直接观看在线看网页在线看| 欧美一级黄视频| 欧美激情一区二区三区高清视频 | 中文字幕一区二区精品| 7m精品国产导航在线| 五月婷婷激情久久| 亚洲不卡av一区二区三区| 国产1区2区3区在线| 99精品国产高清一区二区| 日韩黄色在线观看| 国产在线观看免费av| 中文综合在线观看|