日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringMVC底层数据传输校验的方案(修改版)

發(fā)布時(shí)間:2025/5/22 javascript 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC底层数据传输校验的方案(修改版) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

團(tuán)隊(duì)的項(xiàng)目正常運(yùn)行了很久,但近期偶爾會(huì)出現(xiàn)BUG。目前觀察到的有兩種場(chǎng)景:一是大批量提交業(yè)務(wù)請(qǐng)求,二是生成批量導(dǎo)出文件。出錯(cuò)后,再執(zhí)行一次就又正常了。

經(jīng)過跟蹤日志,發(fā)現(xiàn)是在Server之間進(jìn)行json格式大數(shù)據(jù)量傳輸時(shí)會(huì)丟失部分字符,造成接收方拿到完整字符串后不能正確解析成json,因此報(bào)錯(cuò)。

同其他團(tuán)隊(duì)同事們溝通后發(fā)現(xiàn),不僅僅是我們項(xiàng)目有這個(gè)問題,我們不是一個(gè)人在戰(zhàn)斗。

1 問題現(xiàn)象

服務(wù)器之間使用http+json的數(shù)據(jù)傳輸方案,在傳輸過程中,一些json數(shù)據(jù)發(fā)生錯(cuò)誤,導(dǎo)致數(shù)據(jù)接收方解析json報(bào)錯(cuò),系統(tǒng)功能因此失敗。

下面截取了一小段真實(shí)數(shù)據(jù)錯(cuò)誤,在傳輸?shù)膉son中,有一個(gè)數(shù)據(jù)項(xiàng)是departmentIdList,其內(nèi)容時(shí)一個(gè)長(zhǎng)整型數(shù)組。

?

傳輸之前的數(shù)據(jù)為:

"departmentIdList" : [ 719, 721, 722, 723, 7367, 7369, 7371, 7373, 7375, 7377 ]

接收到的數(shù)據(jù)為:

"departmentIdlist" : [ 719, 721'373, 7375, 7377 ]

可以看到,這個(gè)錯(cuò)誤導(dǎo)致了兩個(gè)問題:

1、 json解析失敗

2、 丟失了一些有效數(shù)據(jù)

詳細(xì)檢查系統(tǒng)日志之后,這是偶發(fā)bug,并且只在傳輸數(shù)據(jù)較大時(shí)發(fā)生。

2 可選的解決方案

2.1 請(qǐng)架構(gòu)組協(xié)助解決

這是最直接的解決方案,因?yàn)槲覀冺?xiàng)目使用架構(gòu)組提供的環(huán)境,他們需要提供可靠的底層數(shù)據(jù)傳輸機(jī)制。

2.2 壓縮傳輸數(shù)據(jù)

因?yàn)閿?shù)據(jù)量大時(shí)容易發(fā)生,并且傳輸?shù)亩际瞧胀ㄎ谋?#xff0c;可以考慮對(duì)內(nèi)容進(jìn)行壓縮后傳輸。普通文件壓縮率也很高,壓縮后內(nèi)容長(zhǎng)度能做到原數(shù)據(jù)10%以內(nèi),極大減少傳輸出錯(cuò)的幾率。

2.3 對(duì)傳輸數(shù)據(jù)進(jìn)行MD5校驗(yàn)

將傳輸數(shù)據(jù)作為一個(gè)完整數(shù)據(jù)塊,傳輸之前先做一個(gè)md5摘要,并將原數(shù)據(jù)和摘要一并發(fā)送;接收方收到數(shù)據(jù)后,先進(jìn)行數(shù)據(jù)校驗(yàn)工作,校驗(yàn)成功后再進(jìn)行后續(xù)操作流程,如果不成功可以輔助重傳或直接報(bào)錯(cuò)等機(jī)制。

3 方案設(shè)計(jì)

為了徹底解決這個(gè)問題,設(shè)計(jì)了一個(gè)底層方案

3.1 設(shè)計(jì)原則

1、 適用類型:Spring MVC項(xiàng)目,數(shù)據(jù)發(fā)送方使用RestTemplate工具類,使用fastjson作為json工具類。

2、 數(shù)據(jù)校驗(yàn),使用MD5加密,當(dāng)然也可以配合數(shù)據(jù)壓縮機(jī)制,減少傳輸數(shù)據(jù)量。

3、 提供底層解決方案,不需要對(duì)系統(tǒng)代碼做大規(guī)模調(diào)整。

3.2 核心設(shè)計(jì)

?

數(shù)據(jù)發(fā)送方,重載RestTemplate,在數(shù)據(jù)傳輸之前對(duì)數(shù)據(jù)進(jìn)行md5摘要,并將原始數(shù)據(jù)和 md5摘要一并傳輸。

數(shù)據(jù)接收方,重載AbstractHttpMessageConverter,接收到數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行MD5校驗(yàn)。

3.3 DigestRestTemplate關(guān)鍵代碼

對(duì)原json進(jìn)行摘要,并同原始數(shù)據(jù)一起生成一個(gè)新的json對(duì)象。

private Object digestingJson(JSONObject json) throws Exception {

?????? String requestJsonMd5 = JsonDigestUtil.createMD5(json);

?????? JSONObject newJson = new JSONObject();

?????? newJson.put("content", json);

?????? newJson.put("md5", requestJsonMd5);

?????? return newJson;

}

重載的postForEntity函數(shù)核心部分,如果傳入?yún)?shù)是 JSONObject,則調(diào)用方法對(duì)數(shù)據(jù)進(jìn)行摘要操作,并用新生成的json進(jìn)行傳輸。

Object newRequest = null;

if (request instanceof JSONObject) {

?????? JSONObject json = (JSONObject) request;

?????? try {

????????????? newRequest = digestingJson(json);

?????? } catch (Exception e) {

?????? }

}

if (newRequest == null) {

?????? newRequest = request;

}

return super.postForEntity(url, newRequest, responseType);

?

3.4 DigestFastJsonHttpMessageConverter 核心代碼

首先會(huì)判斷是否是經(jīng)過md5摘要的json,是有摘要的數(shù)據(jù)進(jìn)行校驗(yàn),否則直接返回對(duì)象。

private JSONObject getDigestedJson(JSONObject json) {

? if (json.size()==2&&json.containsKey("md5")&&json.containsKey("content")) {

??? String md5 = json.getString("md5");

??? String content = json.getString("content");

??? logger.info("degested json : {}", json);

??? try {

????? String newMd5 = JsonDigestUtil.createMD5(content);

????? if (newMd5.equals(md5)) {

??????? json = JSON.parseObject(content);

????? } else {

??????? logger.error("md5 is not same : {} vs {}", md5, newMd5);

??????? throw new RuntimeException("content is modified");

????? }

??? } catch (Exception e) {

??? }

? } else {

??? logger.info("may not be digested json");

??}

? return json;

}

原有的處理數(shù)據(jù)代碼增加調(diào)用該方法的代碼

@Override

protected Object readInternal(Class<? extends Object> clazz,

HttpInputMessage inputMessage)

??? throws IOException, HttpMessageNotReadableException {

? JSONObject json = null;

? InputStream in = inputMessage.getBody();

? Charset jsonCharset = fastJsonConfig.getCharset();

? Feature[] jsonFeatures = fastJsonConfig.getFeatures();

? json = JSON.parseObject(in, jsonCharset, clazz, jsonFeatures);

? json = getDigestedJson(json);

? return json;

}

當(dāng)前的代碼,如果數(shù)據(jù)校驗(yàn)失敗,簡(jiǎn)單拋出異常。后續(xù)可以增加更多的機(jī)制,比如在RestTemplate處增加校驗(yàn),如果發(fā)現(xiàn)校驗(yàn)失敗,則重傳。

3.5 數(shù)據(jù)發(fā)送方項(xiàng)目配置

以Spring Boot項(xiàng)目為例

在Main類中定義 restTemplate

@Bean(name = "restTemplate")

public RestTemplate getRestTemplate() {

? RestTemplate restTemplate = new DigestRestTemplate();

? return restTemplate;

}

需要調(diào)用RestTemplate的代碼,只需要依賴注入RestTemplate

@Autowired

RestTemplate restTemplate;

3.6 數(shù)據(jù)接收方項(xiàng)目設(shè)置

在SpringBootApplication類中定義

@Bean

public HttpMessageConverters fastJsonHttpMessageConverters() {

? DigestFastJsonHttpMessageConverter fastConverter =

??? new DigestFastJsonHttpMessageConverter();

? FastJsonConfig fastJsonConfig = new FastJsonConfig();

? fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

? fastConverter.setFastJsonConfig(fastJsonConfig);

? HttpMessageConverter<?> converter = fastConverter;

? return new HttpMessageConverters(converter);

}

?

4 出錯(cuò)重傳機(jī)制

在數(shù)據(jù)接收端,當(dāng)數(shù)據(jù)校驗(yàn)失敗時(shí),會(huì)拋出一個(gè)RuntimeException異常(如果要做到產(chǎn)品,當(dāng)然應(yīng)該自定義一個(gè)高大上的Exception)。

4.1 服務(wù)器端隨機(jī)模擬傳輸失敗

為了模擬測(cè)試,在接收方的代碼中,增加隨機(jī)失敗的情況。見下面代碼中黑體字部分,大約10%的概率會(huì)失敗。

private JSONObject getDigestedJson(JSONObject json) {

? if (json.size()==2&&json.containsKey("md5")&&json.containsKey("content")) {

??? String md5 = json.getString("md5");

??? String content = json.getString("content");

??? logger.info("degested json : {}", json);

??? try {

????? String newMd5 = JsonDigestUtil.createMD5(content);

????? if (newMd5.equals(md5)) {

??????? json = JSON.parseObject(content);

????? } else {

??????? logger.error("md5 is not same : {} vs {}", md5, newMd5);

??????? throw new RuntimeException("content is modified");

????? }

??? } catch (Exception e) {

??? }

? } else {

??? logger.info("may not be digested json");

??}

? if (random.nextInt(100) < 10) {

??? logger.info("random throw exception");

??? throw new RuntimeException("content be modified");

? }

? return json;

}

?

4.2 發(fā)送方Catch異常重傳

當(dāng)接收端拋異常后,最終會(huì)發(fā)送一個(gè)500錯(cuò)誤到數(shù)據(jù)發(fā)送方。

org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error

最簡(jiǎn)單的處理方式,在發(fā)送方校驗(yàn)是否發(fā)生了 500 錯(cuò)誤,如果發(fā)生了就重傳。這個(gè)方案的代碼如下:

ResponseEntity<T> responseEntity = null;

int times = 0;

while (times < 5) {

? try {

??? responseEntity = super.postForEntity(url,

?????? ? newRequest, responseType, uriVariables);

??? break;

? } catch (Exception e) {

??? if (e instanceof HttpServerErrorException) {

????? times++;

????? logger.error("post for entity", e);

????? logger.error("resend the {}'st times", times);

??? } else {

????? break;

??? }

? }

}

當(dāng)傳輸錯(cuò)誤后,圖示代碼會(huì)最多嘗試發(fā)送五次。仍然失敗后考慮拋異常,由發(fā)送端上層代碼處理。

但這個(gè)代碼有一個(gè)很明顯的問題,接收端的任何錯(cuò)誤如數(shù)據(jù)保存失敗,都會(huì)導(dǎo)致發(fā)送端重傳數(shù)據(jù)。下面讀一下Spring的代碼,看看是如何處理異常的。

4.3 SpringMVC異常處理

4.3.1 第一層處理

在類AbstractMessageConverterMethodArgumentResolver的readWithMessageConverters()方法中,會(huì)Catch IOException,相關(guān)代碼為

catch (IOException ex) {

? throw new HttpMessageNotReadableException(

??? "Could not read document: " + ex.getMessage(), ex);

}

HttpMessageNotReadableException是繼承自RuntimeException的一個(gè)異常。

4.3.2 第二層處理

在類InvocableHandlerMethod的getMethodArgumentValues()方法,Catch Exception打印一下日志,然后繼續(xù)throw。

try {

? args[i] = this.argumentResolvers.resolveArgument(

??? parameter, mavContainer, request, this.dataBinderFactory);

? continue;

}

catch (Exception ex) {

? if (logger.isDebugEnabled()) {

??? logger.debug(getArgumentResolutionErrorMessage("Failed to resolve", i)

?????? ? , ex);

? }

? throw ex;

}

?

4.3.3 第三層處理

在類org.springframework.web.servlet.DispatcherServlet.doDispatch()分別捕獲了兩種異常,代碼如下

catch (Exception ex) {

? dispatchException = ex;

}

catch (Throwable err) {

? dispatchException = new NestedServletException(

"Handler dispatch failed", err);

}

processDispatchResult(processedRequest, response,

? mappedHandler, mv, dispatchException);

可以看到,如果拋出的Exception異常,會(huì)將原異常直接處理,如果是Runtime Exception,會(huì)轉(zhuǎn)換成繼承自ServletException的異常NestedServletException。

4.3.4 處理異常

在 processDispatchResult() 方法中,異常處理核心代碼

if (exception instanceof ModelAndViewDefiningException) {

? logger.debug("ModelAndViewDefiningException encountered", exception);

? mv = ((ModelAndViewDefiningException) exception).getModelAndView();

}

else {

? Object handler = (mappedHandler != null ? mappedHandler.getHandler() : null);

? mv = processHandlerException(request, response, handler, exception);

? errorView = (mv != null);

}

我們拋出的異常,明顯不是 ModelAndViewDefiningException,所以會(huì)交由processHandlerException處理。看看它的代碼

ModelAndView exMv = null;

for (HandlerExceptionResolver resolver : this.handlerExceptionResolvers) {

? exMv =resolver.resolveException(request, response, handler, ex);

? if (exMv != null) {

??? break;

? }

}

…(如果exMv不為空,會(huì)單獨(dú)處理)

throw ex;

可以看到,這部分代碼如果沒有處理,會(huì)繼續(xù)拋出異常,回到 processDispatchResult()

catch (Exception ex) {

?triggerAfterCompletion(processedRequest, response, mappedHandler, ex);

}

呃,太復(fù)雜,先不往下看了。因?yàn)槲覀冃枰獏^(qū)分是數(shù)據(jù)傳輸錯(cuò)誤還是其他錯(cuò)誤,可以考慮數(shù)據(jù)出錯(cuò)時(shí)拋異常,不拋普通的RuntimeException,而是HttpMessageNotReadableException,看看數(shù)據(jù)發(fā)送端會(huì)有什么變化。

4.3.4 數(shù)據(jù)接收方拋新異常

修改了數(shù)據(jù)接收方代碼中拋出異常HttpMessageNotReadableException

private JSONObject getDigestedJson(JSONObject json) {

? if (json.size()==2&&json.containsKey("md5")&&json.containsKey("content")) {

??? String md5 = json.getString("md5");

??? String content = json.getString("content");

??? logger.info("degested json : {}", json);

??? try {

????? String newMd5 = JsonDigestUtil.createMD5(content);

????? if (newMd5.equals(md5)) {

??????? json = JSON.parseObject(content);

????? } else {

??????? logger.error("md5 is not same : {} vs {}", md5, newMd5);

??????? throw new HttpMessageNotReadableException("content is modified");

????? }

??? } catch (Exception e) {

??? }

? } else {

??? logger.info("may not be digested json");

??}

? // 調(diào)試用,后續(xù)刪掉

? if (random.nextInt(15) < 10) {

??? logger.info("random throw exception");

??? throw new HttpMessageNotReadableException("content be modified");

? }

? return json;

}

?

4.3.5 數(shù)據(jù)發(fā)送端修改代碼

RestClientException transferException = null;

ResponseEntity<T> responseEntity = null;

int times = 0;

while (times < 5) {

? try {

??? responseEntity = super.postForEntity(url,

?????? ? newRequest, responseType, uriVariables);

??? transferException = null;

??? break;

? } catch (RestClientException e) {

??? transferException = e;

??? boolean transferError = false;

??? if (e instanceof HttpClientErrorException) {

????? HttpClientErrorException clientError =

?????? ??? (HttpClientErrorException) e;

????? transferError = clientError.getRawStatusCode() == 400;

??? }

??? if (transferError) {

????? times++;

????? logger.error("post for entity", e);

????? logger.error("resend the {}'st times", times);

??? } else {

????? break;

??? }

? }

}

if(transferException != null){

? throw transferException;

}

return responseEntity;

如果返回的是400錯(cuò)誤,發(fā)送方會(huì)嘗試共發(fā)送5次;如果是其他異常或5次都不成功,則拋出異常。

5 后記

經(jīng)過測(cè)試,這個(gè)方案是可行的。如果為了能夠適應(yīng)更多的項(xiàng)目及更多的Java技術(shù)棧,需要對(duì)代碼進(jìn)行進(jìn)一步完善。

補(bǔ)充:第一版發(fā)布后,同學(xué)們很關(guān)心如何重傳的問題。對(duì)這個(gè)也做了一些測(cè)試,補(bǔ)充到文檔中。如果是數(shù)據(jù)傳輸錯(cuò)誤,會(huì)嘗試共傳輸5次;如果仍然不成功則拋出異常由上層代碼處理。

?

轉(zhuǎn)載于:https://www.cnblogs.com/codestory/p/6761800.html

總結(jié)

以上是生活随笔為你收集整理的SpringMVC底层数据传输校验的方案(修改版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

国产成人黄色 | 不卡的av电影在线观看 | 久久免费国产视频 | 久久国产精品区 | 国产亚洲高清视频 | 久久综合久久综合久久综合 | 97超级碰 | 国产69久久久欧美一级 | 欧美a级一区二区 | 人人插人人艹 | 国产午夜精品一区 | 国产在线第三页 | 天天做综合网 | 丁香5月婷婷 | 国产一级视频在线免费观看 | 精品伦理一区二区三区 | 激情视频91 | 欧美色888| 久久婷婷国产 | 日韩精选在线观看 | 久久男女视频 | 啪啪免费试看 | 亚洲天堂激情 | 国产不卡在线观看视频 | 九九日九九操 | 日韩欧美高清视频在线观看 | 欧美日本高清视频 | 久久久国产精品一区二区中文 | 日韩av电影网站在线观看 | 国产亚州av| 精品999在线| 日本福利视频在线 | 亚洲国产片色 | 一区二区在线电影 | 精品1区2区3区 | www.久久精品视频 | 人人看97 | av免费在线网站 | 久精品视频在线 | 91丨九色丨蝌蚪丨对白 | 国产精品3| av动图 | 国产综合精品久久 | 国产拍揄自揄精品视频麻豆 | 免费观看性生交大片3 | 99re在线视频观看 | 日韩av免费网站 | 伊在线视频 | 欧美性视频网站 | 一区二区三区中文字幕在线观看 | 97电院网手机版 | 国产成人精品久久亚洲高清不卡 | 欧美成a人片在线观看久 | 国产成人免费观看久久久 | 伊甸园永久入口www 99热 精品在线 | 亚洲精品网站在线 | 久久久久久久久久久网 | 综合网中文字幕 | 成年人国产视频 | 亚洲成av人片一区二区梦乃 | 久久xx视频| 激情综合久久 | 日韩久久精品一区二区三区 | 日本精品久久久久中文字幕 | 在线蜜桃视频 | 91九色视频国产 | 免费人成在线观看网站 | 成人久久18免费网站图片 | 亚洲高清视频在线观看免费 | 玖玖国产精品视频 | 青青河边草免费视频 | 一区二区伦理电影 | 在线中文字母电影观看 | 亚洲资源在线网 | 中文av在线播放 | 99免费在线| 黄网站免费久久 | 亚洲国产午夜精品 | 午夜av电影| 久久人人爽人人爽人人片 | 久久久久久久久影视 | 17videosex性欧美| 婷婷精品视频 | 久草在线观看资源 | 一区二区三区国产精品 | 国产伦理久久精品久久久久_ | 伊人天天狠天天添日日拍 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 性日韩欧美在线视频 | www免费 | 国产精品免费久久久久影院仙踪林 | 在线天堂v| 免费h视频 | 亚洲最大成人免费网站 | 93久久精品日日躁夜夜躁欧美 | 免费视频网| 久草视频中文在线 | 久久精品久久久精品美女 | 亚洲精品乱码久久久久久高潮 | 中文字幕乱码电影 | 久久综合婷婷综合 | 92av视频 | 国产精品麻豆99久久久久久 | 精品一区二区日韩 | 久久久在线观看 | 亚洲国产精品va在线看黑人动漫 | 成人丁香花 | 午夜美女网站 | 91精品国产欧美一区二区 | 国产麻豆精品传媒av国产下载 | 日本午夜在线亚洲.国产 | 麻豆精品视频在线 | 国产色小视频 | 中文资源在线播放 | 成人国产精品一区 | 天天天干天天射天天天操 | 另类老妇性bbwbbw高清 | 在线观看亚洲专区 | 五月网婷婷 | 国产免费视频在线 | 国产亚洲精品久久19p | 国产精品国产自产拍高清av | 一级黄色片在线播放 | 日本性久久 | 欧美少妇xxxxxx | 中文字幕在线影院 | 欧美日韩高清在线 | 97精品一区 | 天堂av影院 | 国产成人av电影在线 | 成人天堂网 | 亚洲自拍自偷 | 国产香蕉视频 | 国产乱对白刺激视频在线观看女王 | 一二三区视频在线 | 国产视频色 | 欧美久久成人 | 麻豆视频免费播放 | 国产麻豆精品在线观看 | 99久久婷婷国产 | 91视频高清 | 欧美日本在线视频 | 97电院网手机版 | 国产精品网址在线观看 | 激情在线网站 | 国产精品一区二区在线观看免费 | 天天色综合1 | 91精品在线免费观看视频 | 黄色在线观看网站 | 亚洲成人精品在线 | 天干啦夜天干天干在线线 | 中文字幕在线观看三区 | 国产精品一区二区在线看 | 久久久久久久99精品免费观看 | 国产伦精品一区二区三区免费 | 国产小视频精品 | 最近日本韩国中文字幕 | 久久av一区二区三区亚洲 | 久久理论影院 | 丰满少妇一级 | 久久综合久久综合这里只有精品 | 色偷偷97 | 草久久av | 成人av一区二区兰花在线播放 | 久草观看| 国产亚洲欧美在线视频 | 精品亚洲免费视频 | 国产精品久久久久久久午夜片 | 五月天综合色 | 国产一区在线免费观看 | 久久久久久免费视频 | 国产小视频在线播放 | 亚洲高清精品在线 | 在线观看色网 | 久久综合中文字幕 | 久久视频这里有久久精品视频11 | 免费国产亚洲视频 | 久久艹在线观看 | 精品免费视频 | 天天操比| 欧美激情综合五月色丁香小说 | 亚洲黄色成人 | 色av网站| 国产精品视频你懂的 | 99在线看 | 亚洲高清91 | 69国产成人综合久久精品欧美 | 国产成人91 | 亚洲免费在线播放视频 | 成 人 黄 色 免费播放 | 91在线中文字幕 | 天天透天天插 | 五月天堂网 | 91大神精品视频 | 国产福利av | av免费看网站 | 91污视频在线观看 | 91在线视频一区 | 欧美成人猛片 | 超碰在线观看97 | 国产一区观看 | 在线观看成人国产 | 四虎在线视频免费观看 | 人人爽人人爽 | 五月开心婷婷 | 国产丝袜高跟 | 国产日韩一区在线 | 国内小视频在线观看 | 国产在线观看免 | 亚洲精品一区中文字幕乱码 | 9999精品| 国产原创av在线 | 在线观看视频在线 | 久久免费在线视频 | 国产视频2区| 在线成人免费 | 国产精品日韩高清 | 日韩一区二区免费在线观看 | 色福利网| 久久精品毛片 | 亚洲成a人片在线观看网站口工 | 亚洲精品视频在线 | 国产亚州精品视频 | 黄色性av| 欧美精品乱码99久久影院 | 亚洲国产资源 | 久章草在线观看 | 久久精品在线 | 草免费视频 | 三级av免费观看 | 美女国产网站 | 中文字幕电影一区 | 在线播放你懂 | 亚洲激情综合 | 96久久久| 欧美精品色 | 精品国内自产拍在线观看视频 | bbbb操bbbb | 国产精品1区 | 日韩在线二区 | 日韩91在线 | 国产免费叼嘿网站免费 | 天天干天天在线 | 国产精品大片在线观看 | 天天摸天天操天天爽 | 色婷婷在线视频 | 一级片观看 | 中文在线字幕免 | 最新中文在线视频 | 亚洲精品动漫在线 | 国产精品久久久久久久久久久久午夜 | 探花视频免费在线观看 | www亚洲精品 | 国际精品网 | 久久中文网 | 国产精品视频99 | 精品福利视频在线观看 | 日本亚洲国产 | a色视频| 九九日九九操 | 亚洲精品国偷拍自产在线观看蜜桃 | 91精品国产乱码久久桃 | 婷婷色在线播放 | 婷婷丁香综合 | 手机看片 | 国产三级视频 | 日韩av影视在线观看 | 天天操夜夜操天天射 | 精品国产乱码久久久久久1区二区 | 国产黄色在线网站 | 亚洲特级片 | av在线亚洲天堂 | 久久国产精品99久久久久久进口 | 免费在线观看黄 | 免费av一级电影 | 人人艹人人 | 97超视频免费观看 | 91精品夜夜| 在线观看爱爱视频 | 亚洲欧美视频在线观看 | 精品久久一区二区三区 | 激情综合亚洲 | 99超碰在线观看 | 一性一交视频 | 亚洲国产中文字幕在线 | 一区二区 不卡 | 亚洲精品 在线视频 | 成人av免费在线看 | 操操综合 | 91九色蝌蚪视频网站 | 久久免费高清 | 一区二区三区福利 | 中国一区二区视频 | 中文字幕在线观看亚洲 | 国产精品久久久久9999 | 亚洲资源片| 制服丝袜欧美 | 成年人在线 | 日韩一区二区三区高清在线观看 | 麻豆超碰| 日韩av免费观看网站 | 天天操天天射天天操 | 亚洲区色| 久久久影院一区二区三区 | 国产精品视频 | 97色噜噜| 在线观看网站你懂的 | a一片一级 | 国产人在线成免费视频 | 激情视频一区 | 97国产精品久久 | 欧美日韩久久不卡 | 日本黄色黄网站 | 草久久影院 | 狂野欧美激情性xxxx欧美 | 久久久污| 国产精品18久久久久久不卡孕妇 | 在线看一区二区 | 亚洲永久国产精品 | 欧美人交a欧美精品 | 在线免费黄色av | 91最新网址在线观看 | 日韩精品一区二区三区免费观看 | 久久小视频 | 欧美综合国产 | 国产精品6999成人免费视频 | 日韩簧片在线观看 | 久久国内精品视频 | 999精品| 婷婷丁香自拍 | 久久久免费毛片 | 曰本三级在线 | 久久精品一二三区白丝高潮 | 美女福利视频网 | 91麻豆文化传媒在线观看 | 91欧美视频网站 | av在线专区 | 国产精品免费视频网站 | 欧美性久久久 | 超碰在线人人爱 | 色噜噜噜噜 | 欧美日韩国产精品一区二区三区 | 欧美在线视频精品 | 91重口视频 | 国产高清视频在线播放 | 国产99久久久国产 | 天天久久夜夜 | 一区 二区 精品 | 免费av黄色| 日p视频 | 91视频免费看网站 | 国产99久久久国产 | 欧美91精品久久久久国产性生爱 | 黄色网在线免费观看 | 91精品国自产在线观看欧美 | 在线成人免费av | 日本黄色免费电影网站 | 精品中文字幕视频 | 亚洲在线视频免费 | 91久久丝袜国产露脸动漫 | 午夜美女网站 | 一区二区三区中文字幕在线观看 | 91大神dom调教在线观看 | 最近免费中文字幕大全高清10 | 国产精品美女久久久久久久久 | 国产成人一区二区啪在线观看 | 日韩激情在线视频 | 久久久国产影院 | 国产免费久久 | 久久与婷婷 | 17videosex性欧美| 伊人婷婷网 | 日韩中文字幕免费在线观看 | 成人激情开心网 | 高清av在线免费观看 | 国产午夜在线观看 | 91在线看黄| 天天射天天干天天插 | 亚洲精品久久久蜜臀下载官网 | 精品女同一区二区三区在线观看 | 国产一区欧美在线 | 999抗病毒口服液 | 日韩免费观看一区二区三区 | 五月婷婷综合激情网 | 久久精品中文字幕免费mv | www.国产在线| 国产精品一区免费在线观看 | 免费看污黄网站 | 欧美另类成人 | 久久色中文字幕 | 国产精品视频全国免费观看 | 综合网成人 | 黄色福利网站 | 99精品一区二区 | wwwwwww色| 国产亲近乱来精品 | 麻豆视频在线免费观看 | 成人午夜电影在线观看 | 99视频在线看 | 精品国内自产拍在线观看视频 | 日韩在线观看高清 | 国产伦理剧 | 五月婷婷六月丁香在线观看 | 国产免费专区 | 国产精品久久网 | av成人资源 | 色综合人人 | 国产粉嫩在线 | 日韩av播放在线 | 最新精品视频在线 | 亚洲精品456在线播放第一页 | 五月的婷婷 | 玖玖玖国产精品 | 午夜精品久久久久久久99无限制 | 伊人久久在线观看 | 久草com | 一级性av | 一本一道久久a久久精品蜜桃 | 夜夜狠狠| 久久国产精品久久w女人spa | 国产在线观看污片 | 成人欧美一区二区三区在线观看 | 国产精品免费不 | 中文字幕a在线 | 久久深夜福利免费观看 | 好看的国产精品视频 | www.色婷婷 | 国产成免费视频 | 亚洲视频,欧洲视频 | 操久 | 国产精品18久久久久久首页狼 | 午夜av一区二区三区 | 伊人导航 | 六月丁香激情综合 | 日本在线观看中文字幕 | 97理论电影| 免费视频99 | 黄色成人小视频 | 综合色久| 成人在线视频在线观看 | 日韩av伦理片 | 二区三区在线视频 | 久久精品视频3 | 又黄又爽又刺激 | 中文一区二区三区在线观看 | 九九热视频在线播放 | 网址你懂的在线观看 | 久草视频免费在线播放 | 99精品久久久久久久久久综合 | 九九热在线视频免费观看 | 黄色成人免费电影 | 在线观看的a站 | 91传媒免费在线观看 | 又爽又黄又刺激的视频 | 国产区在线视频 | 国产免费视频在线 | 91九色蝌蚪国产 | 日韩| www.久久精品视频 | 日本久久久久 | 99国产精品 | www国产亚洲 | 黄色小说网站在线 | 国产va在线观看免费 | 国产麻豆视频免费观看 | 日韩在线视频看看 | 国产成人精品av在线观 | 国产亚洲精品久久久久秋 | 亚洲精品成人av在线 | 免费av在线播放 | 黄色官网在线观看 | 黄色成人av在线 | 国产91免费看| 丁香久久综合 | 婷五月天激情 | 国产一区二区三区四区在线 | 久久婷婷五月综合色丁香 | 免费日韩一区二区三区 | 四虎在线免费观看视频 | 久久久精品| 中文字幕第一页在线 | 精品视频不卡 | 久久99久久99精品免视看婷婷 | 亚洲免费观看视频 | 亚洲六月丁香色婷婷综合久久 | 在线观看午夜 | av电影亚洲| 欧美精品亚洲精品日韩精品 | 国产精品免费人成网站 | 国产精品久久久久影视 | 91精品一区二区三区蜜桃 | 啪一啪在线 | 精品不卡av | 日韩三级视频 | 9999国产精品 | 国产亚洲午夜高清国产拍精品 | zzijzzij日本成熟少妇 | 久久看片网站 | 日韩精品一区二区三区第95 | 操操操干干干 | 一区二区三区在线观看 | 国产精品青草综合久久久久99 | 亚洲一级影院 | 国产视频一二区 | 国产精品99免费看 | 激情久久久久久久久久久久久久久久 | 国产一级黄色片免费看 | 久久综合狠狠综合久久激情 | 国产裸体bbb视频 | 激情大尺度视频 | 欧美日韩性视频 | 999视频在线播放 | 国产精品久久久久久久久久了 | 四虎亚洲精品 | 99精彩视频在线观看免费 | 国产麻豆精品久久一二三 | caobi视频 | 国产精品爽爽久久久久久蜜臀 | 91喷水 | 日韩精品欧美精品 | av网站免费看 | 国产 日韩 在线 亚洲 字幕 中文 | 夜夜夜夜爽| 国产精品欧美久久久久三级 | 久久久69| 欧美另类69 | 区一区二区三在线观看 | 国产免费一区二区三区最新6 | 欧美精品久久人人躁人人爽 | 亚洲天堂网在线视频观看 | 中文字幕字幕中文 | 欧美日韩国产在线精品 | 狠狠干狠狠久久 | 成人免费在线看片 | 狠狠干网站 | 999国产 | 中文字幕色站 | 久久精品一级片 | 国产精品久久影院 | 免费福利片 | 国产香蕉av | 亚洲午夜不卡 | 亚洲欧洲一区二区在线观看 | 久久久国产精品人人片99精片欧美一 | 亚洲电影久久久 | 国产在线观看地址 | 不卡在线一区 | 国产黄色片免费观看 | 欧美精品久久久久久久久免 | 亚洲人成免费网站 | 成人影音av | 日韩国产精品一区 | 九九热在线观看视频 | 国产在线视频在线观看 | 在线观看免费中文字幕 | 久久久久久国产精品 | 亚洲电影黄色 | 久久精品人人做人人综合老师 | 国产三级视频 | 欧美日韩免费在线观看视频 | 日韩精品一区二区三区不卡 | 久久伊人操| 日韩免费观看视频 | aaawww| 99热 精品在线 | 在线免费黄色av | 国产精品99久久久久久久久 | www免费在线观看 | 国产69精品久久99不卡的观看体验 | 色婷婷激情 | 成人国产精品电影 | 狠狠色噜噜狠狠狠狠2021天天 | 美女网色 | 韩国一区在线 | 亚洲激情视频在线 | 日本久久综合网 | 国产精品一区二区你懂的 | 国产精品少妇 | 99r在线视频 | 亚州精品天堂中文字幕 | 区一区二区三在线观看 | 精品999在线观看 | 久久久久亚洲精品成人网小说 | 激情六月婷婷久久 | 欧美一区免费观看 | 日韩av在线影视 | 免费在线国产黄色 | www.久久精品视频 | 日韩黄色中文字幕 | 欧美专区亚洲专区 | 精品美女久久久久 | 色婷婷综合视频在线观看 | 最近最新中文字幕视频 | 国产中文字幕久久 | 开心色插 | 中文字幕日韩有码 | 色婷婷福利视频 | 在线中文字幕视频 | 久久精品中文字幕免费mv | 亚洲精品在线一区二区三区 | 中文字幕av日韩 | 国内精品久久久久影院一蜜桃 | 久久久综合九色合综国产精品 | 色香蕉在线视频 | 手机在线免费av | 激情av综合| 国产一二三精品 | 国产成人精品在线观看 | 亚洲免费观看在线视频 | 91av社区 | 久久久精品国产一区二区三区 | 91一区啪爱嗯打偷拍欧美 | 狠狠狠狠狠狠狠 | 欧美 日韩 久久 | 精品毛片一区二区免费看 | 国产成人亚洲精品自产在线 | 欧美一区二区三区特黄 | 成人欧美一区二区三区在线观看 | 99久久99热这里只有精品 | 久久免费视频在线观看30 | 国内偷拍精品视频 | 精品中文字幕在线 | 9幺看片 | 国产一区二区在线免费播放 | 亚洲午夜精品一区二区三区电影院 | 免费在线观看中文字幕 | 波多野结衣在线观看一区二区三区 | 天天色天天色 | 超碰97在线看 | 国产1区2| 日韩最新理论电影 | 超碰在线公开免费 | 97超碰人人模人人人爽人人爱 | 怡红院av久久久久久久 | av+在线播放在线播放 | 日韩精品视频在线观看免费 | 六月丁香婷 | 国产成人一区二区三区久久精品 | 免费黄a大片 | 色悠悠久久综合 | 天天干天天操天天拍 | 久久久久国产成人精品亚洲午夜 | 亚洲女同ⅹxx女同tv | 99精品欧美一区二区三区 | 国产原创在线 | 成人免费视频视频在线观看 免费 | .精品久久久麻豆国产精品 亚洲va欧美 | 五月婷婷色综合 | 精品久久久久久久久久 | 色老板在线视频 | 天天干天天操天天干 | 天天摸天天干天天操天天射 | 国产亚洲成av片在线观看 | 国产精品一区二区三区在线看 | 天天爽夜夜爽人人爽曰av | 亚洲天天摸日日摸天天欢 | 久久这里只有精品视频99 | 五月天伊人 | 另类老妇性bbwbbw高清 | 婷婷激情在线 | 久久精品二区 | 热久久免费国产视频 | 国产精品久久久久永久免费观看 | 久久综合精品国产一区二区三区 | 中文字幕在线观看完整版电影 | 中文字幕在线观看一区二区 | 欧美一区影院 | 91亚洲精品国偷拍 | 五月婷婷网站 | 欧美 日韩精品 | 美女禁18| 国内视频在线观看 | av综合av| www免费网站在线观看 | 免费日韩三级 | 亚洲成人av在线 | 在线免费视频你懂的 | 亚洲天堂网站 | 欧美aaa大片 | 天天看天天干 | 久久视频国产 | www操操| 国产99一区| 天天色天天射天天综合网 | 美女在线免费视频 | 99久久99热这里只有精品 | 色噜噜狠狠狠狠色综合 | jizz欧美性9 国产一区高清在线观看 | 九九久久免费视频 | 中文字幕有码在线观看 | www.黄色片网站 | 久久精品中文 | 亚洲开心激情 | 国产精品对白一区二区三区 | 97福利在线 | 激情网色 | 国产成人在线网站 | 免费av网站观看 | av三级av| 伊人成人激情 | 国产剧情一区二区在线观看 | 免费看污污视频的网站 | 91精品在线观看入口 | 色婷久久 | 国内成人精品2018免费看 | 欧美日韩精品在线观看视频 | 久久久国产精品一区二区中文 | 亚洲伦理中文字幕 | 99久久精品久久久久久清纯 | 在线观看中文字幕一区 | 999精品网 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲永久国产精品 | 日韩精品黄 | 久久精品播放 | 麻豆成人网 | 国产精品18久久久久久首页狼 | 婷婷色五| 免费国产一区二区视频 | 91成人网在线播放 | 久久99国产精品免费网站 | 色婷婷福利 | 成人试看120秒 | 婷婷中文字幕在线观看 | 国产精品原创视频 | 色婷婷激情电影 | 久久久免费精品国产一区二区 | 成人午夜电影在线播放 | 日韩午夜精品福利 | 久久免费av电影 | 欧美日韩在线观看不卡 | 久久精品麻豆 | 男女激情网址 | 日韩欧美成人网 | 日韩黄色一区 | 国产夫妻性生活自拍 | 精品视频在线免费观看 | 欧美伦理一区 | 天天做日日做天天爽视频免费 | 久久综合久久久 | 91爱爱视频| 日韩手机在线 | 成人免费影院 | 国产精品久久久久久久午夜 | 天无日天天操天天干 | 午夜视频在线观看一区 | 午夜视频在线观看欧美 | 久久99精品波多结衣一区 | 日本精品一区二区三区在线播放视频 | 韩日精品在线 | 久久av中文字幕片 | 五月激情婷婷丁香 | 福利片视频区 | 在线观看va| 色综合色综合久久综合频道88 | 国产精品2020 | 国内精品久久久久影院日本资源 | 亚洲国产丝袜在线观看 | 亚洲视频在线视频 | 久久久网页 | 中文字幕视频在线播放 | 久久在线 | 亚洲国产字幕 | 免费观看视频黄 | 久久精品国产v日韩v亚洲 | 97成人免费视频 | 亚洲国产合集 | 在线成人小视频 | 色香蕉在线视频 | 精品日韩中文字幕 | 99免费在线观看 | 在线视频欧美日韩 | 色婷婷视频在线观看 | 国产成人精品在线 | 久久中文字幕导航 | 中文在线a∨在线 | 久久夜色电影 | av中文字幕第一页 | 久久久国产精品亚洲一区 | 久久久久免费精品视频 | 久精品视频在线观看 | av中文字幕在线免费观看 | 欧美日韩中字 | av线上看 | 丁香资源影视免费观看 | 久久国语 | 综合国产在线观看 | 日韩三区在线观看 | 久草在线这里只有精品 | 亚洲高清在线 | 波多野结衣一区二区三区中文字幕 | 美女网站在线免费观看 | 天天干,天天插 | 国产九九精品视频 | 丁香婷婷激情国产高清秒播 | 国产婷婷一区二区 | 综合色综合色 | 国产91精品高清一区二区三区 | 国产在线一区二区三区播放 | 久99久中文字幕在线 | 久久av免费 | 一区二区三区 中文字幕 | 精品亚洲国产视频 | av成人黄色 | 国产成人一区二区三区 | 免费观看国产成人 | 伊人手机在线 | 国产剧情在线一区 | 久久,天天综合 | 成年人在线观看视频免费 | 99精品视频免费观看视频 | 亚洲国产精品久久久久 | 在线欧美a | 久久精品综合网 | 成人综合日日夜夜 | 欧美韩国日本在线观看 | 亚洲精区二区三区四区麻豆 | 麻豆影视在线播放 | 午夜色大片在线观看 | 黄色综合 | 色婷婷激情网 | 久久久受www免费人成 | 97人人模人人爽人人喊中文字 | 中文字幕 在线 一 二 | 91高清视频在线 | 久久精品电影网 | 免费观看成人 | 五月婷婷久久综合 | 欧美91精品国产自产 | 亚洲国产精久久久久久久 | 国产日韩欧美精品在线观看 | 天天射天天 | 久久大片网站 | 久久99国产一区二区三区 | 久草在线在线精品观看 | 四虎精品成人免费网站 | 亚洲欧美国产日韩在线观看 | 免费高清在线视频一区· | 黄色av影院 | 日韩久久久 | 国产精品成人一区二区三区 | 操高跟美女 | 五月激情六月丁香 | 日韩视频区 | 亚洲欧美日韩在线看 | 久久视频精品在线观看 | 99久久9| 亚洲欧美怡红院 | 中国一级片视频 | 91视频麻豆 | 91麻豆视频 | 日韩区在线观看 | 国产精品久久久久久久久久久久 | 一区二区在线电影 | 美女网站色免费 | 日韩成人黄色 | 欧美精品久久久久久久久免 | 国产96在线视频 | 999久久久 | 一区二区三区日韩精品 | www..com毛片| 一本一本久久aa综合精品 | 久久久精品免费观看 | 久久久久久毛片精品免费不卡 | 九九热在线观看视频 | 国产亚洲精品久久久久久无几年桃 | 97在线观看免费 | 韩国精品在线 | 日韩欧美亚州 | 中文av在线播放 | 欧美久久久久久久久久久久久 | 五月综合色 | 亚洲国产欧美在线人成大黄瓜 | 日韩欧美高清在线 | 日韩免费电影一区二区三区 | 一区二区精品 | 一本一本久久a久久精品综合 | 欧美日韩有码 | 精品v亚洲v欧美v高清v | 午夜影视一区 | 天天操天天干天天插 | 欧美日韩精品影院 | 亚洲另类视频在线 | 久久婷婷一区二区三区 | 国产一线天在线观看 | 日韩有码网站 | 亚洲国产欧美在线人成大黄瓜 | 99国产精品视频免费观看一公开 | 久久99精品久久久久久三级 | 四虎永久网站 | 亚洲精区二区三区四区麻豆 | 亚洲电影图片小说 | 亚州中文av | 午夜少妇av | www.色国产| 亚洲三级av | 午夜的福利 | 国产一级在线 | 激情六月婷婷久久 | 国产精品video爽爽爽爽 | 亚洲影院一区 | 91麻豆国产福利在线观看 | 中国一区二区视频 | 狠狠色丁香婷婷综合基地 | 欧美片一区二区三区 | 91av在线视频免费观看 | 亚洲国产中文字幕 | 在线亚洲日本 | 日韩免费视频网站 | 国产看片网站 | 97在线免费视频观看 | 粉嫩av一区二区三区四区在线观看 | 欧美一区二区精品在线 | 亚洲婷婷免费 | 蜜臀av性久久久久蜜臀av | 婷婷丁香色综合狠狠色 | 狠狠狠干 | 97超碰香蕉 | 91久久久久久国产精品 | 一区二区三区免费播放 | 偷拍精偷拍精品欧洲亚洲网站 | 免费看污片| 国产高清在线观看av | 成人久久网 | 香蕉在线观看视频 | 久久久久久99精品 | av综合在线观看 | 久久桃花网| 精品一区二区三区久久久 | 成人小视频在线播放 | 日韩一二三在线 | 在线中文字幕视频 | 婷婷去俺也去六月色 | 欧美一区日韩精品 | 手机av片 | 久久久精品免费观看 | 国产视频在线观看一区二区 | 日韩一级精品 | 国产98色在线 | 日韩 | 日韩成人免费在线 | 亚洲久草视频 | 国产精品第十页 | 综合久久综合久久 | av免费网页 | 免费看一级特黄a大片 | 中文字幕色婷婷在线视频 | 中文字幕久久精品亚洲乱码 | 久久香蕉电影 | 国产午夜精品免费一区二区三区视频 | 深爱婷婷网 | 婷婷丁香导航 | 96久久| 成人亚洲综合 | 国内精品视频在线播放 | 激情网在线视频 | 中文字幕在线观看一区 | 亚洲成人精品在线观看 | 日韩免费电影网 | 久草在线视频免费资源观看 | 国模视频一区二区 | 欧美黄色软件 | 欧美激情精品久久 | 免费福利片2019潦草影视午夜 | 国产999久久久| av电影免费在线播放 | 亚洲闷骚少妇在线观看网站 | 999电影免费在线观看 | 亚洲伊人av | 久久综合久久综合九色 | 一级性av| a电影免费看 | 91免费高清观看 | 丁香五婷 | 亚洲91精品在线观看 | 在线观看黄网 | 三级在线播放视频 | 在线高清av| 色.www | 深爱激情久久 | 色综合天 | 91免费高清观看 | 欧美一区二区三区激情视频 | 色综合久久久久综合99 | 这里有精品在线视频 | 6080yy精品一区二区三区 | 精品色综合 | 国产精品久久久久免费观看 | 久久国产精品一国产精品 | 色五月成人 | 日韩精品一区二区不卡 | 日韩电影在线观看一区 | 在线观看黄网站 | 超碰人人99 | 欧美成人亚洲成人 | 欧美成人按摩 | 国产.精品.日韩.另类.中文.在线.播放 | 国产成人精品在线播放 | 国产免费久久 |