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

后端的Long型參數,讓阿粉踩了個大坑

開發 后端
最近幾天一直在改造工程,采用雪花算法生成主鍵ID,突然踩到一個天坑,前端 JavaScript 在取 Long 型參數時,參數值有點不太對!

最近幾天一直在改造工程,采用雪花算法生成主鍵ID,突然踩到一個天坑,前端 JavaScript 在取 Long 型參數時,參數值有點不太對!

[[340323]]

一、問題描述

最近在改造內部管理系統的時候, 發現了一個巨坑,就是前端 JS 在獲取后端 Long 型參數時,出現精度丟失!

起初,用 postman 模擬接口請求,都很正常,但是用瀏覽器請求的時候,就出現問題了!

問題復現:

  1. @RequestMapping("/queryUser") 
  2. public List<User> queryUser(){ 
  3.     List<User> resultList = new ArrayList<>(); 
  4.     User user = new User(); 
  5.     //賦予一個long型用戶ID 
  6.     user.setId(123456789012345678L); 
  7.     resultList.add(user); 
  8.     return resultList; 

打開瀏覽器,請求接口,結果如下!

用 postman 模擬接口請求,結果如下!

剛開始的時候,還真沒發現這個坑,結果當進行測試的時候,才發現前端傳給后端的ID,與數據庫中存的ID不一致,才發現 JavaScript 還有這個天坑!

由于 JavaScript 中 Number 類型的自身原因,并不能完全表示 Long 型的數字,在 Long 長度大于17位時會出現精度丟失的問題。

當我們把上面的用戶 ID 改成 19 位的時候,我們再來看看瀏覽器請求返回的結果。

  1. //設置用戶ID,位數為19位 
  2. user.setId(1234567890123456789l); 

瀏覽器請求結果!

當返回的結果超過17位的時候,后面的全部變成0!

二、解決辦法

遇到這種情況,應該怎么辦呢?

  • 第一種辦法:在后臺把 long 型改為String類型,但是代價有點大,只要涉及到的地方都需要改
  • 第二種辦法:使用工具進行轉化把 long 型改為String類型,這種方法可以實現全局轉化(推薦)
  • 第三種辦法:前端進行處理(目前沒有很好的辦法,不推薦)

因為項目涉及到的代碼非常多,所以不可能把 long 型改為 String 類型,而且使用 Long 類型的方法非常多,改起來風險非常大,所以不推薦使用!

最理想的方法,就是使用aop代理攔截所有的方法,對返回參數進行統一處理,使用工具進行轉化,過程如下!

1. Jackson 工具序列化對象

我們可以使用Jackson工具包來實現對象序列化。

首先在 maven 中添加必須的依賴:

  1. <!--jackson依賴--> 
  2. <dependency> 
  3.     <groupId>com.fasterxml.jackson.core</groupId> 
  4.     <artifactId>jackson-core</artifactId> 
  5.     <version>2.9.8</version> 
  6. </dependency> 
  7. <dependency> 
  8.     <groupId>com.fasterxml.jackson.core</groupId> 
  9.     <artifactId>jackson-annotations</artifactId> 
  10.     <version>2.9.8</version> 
  11. </dependency> 
  12. <dependency> 
  13.     <groupId>com.fasterxml.jackson.core</groupId> 
  14.     <artifactId>jackson-databind</artifactId> 
  15.     <version>2.9.8</version> 
  16. </dependency> 

編寫一個轉化工具類JsonUtil:

  1. public class JsonUtil { 
  2.  
  3.     private static final Logger log = LoggerFactory.getLogger(JsonUtil.class); 
  4.  
  5.     private static ObjectMapper objectMapper = new ObjectMapper(); 
  6.     private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"
  7.  
  8.     static { 
  9.         // 對象的所有字段全部列入 
  10.         objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS); 
  11.         // 取消默認轉換timestamps形式 
  12.         objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); 
  13.         // 忽略空bean轉json的錯誤 
  14.         objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); 
  15.         //設置為東八區 
  16.         objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8")); 
  17.         // 統一日期格式 
  18.         objectMapper.setDateFormat(new SimpleDateFormat(DATE_FORMAT)); 
  19.         // 反序列化時,忽略在json字符串中存在, 但在java對象中不存在對應屬性的情況, 防止錯誤 
  20.         objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
  21.         // 序列換成json時,將所有的long變成string 
  22.         objectMapper.registerModule(new SimpleModule().addSerializer(Long.class, ToStringSerializer.instance).addSerializer(Long.TYPE, ToStringSerializer.instance)); 
  23.     } 
  24.  
  25.     /** 
  26.      * 對象序列化成json字符串 
  27.      * @param obj 
  28.      * @param <T> 
  29.      * @return 
  30.      */ 
  31.     public static <T> String objToStr(T obj) { 
  32.         if (null == obj) { 
  33.             return null; 
  34.         } 
  35.  
  36.         try { 
  37.             return obj instanceof String ? (String) obj : objectMapper.writeValueAsString(obj); 
  38.         } catch (Exception e) { 
  39.             log.warn("objToStr error: ", e); 
  40.             return null; 
  41.         } 
  42.     } 
  43.  
  44.     /** 
  45.      * json字符串反序列化成對象 
  46.      * @param str 
  47.      * @param clazz 
  48.      * @param <T> 
  49.      * @return 
  50.      */ 
  51.     public static <T> T strToObj(String str, Class<T> clazz) { 
  52.         if (StringUtils.isBlank(str) || null == clazz) { 
  53.             return null; 
  54.         } 
  55.  
  56.         try { 
  57.             return clazz.equals(String.class) ? (T) str : objectMapper.readValue(str, clazz); 
  58.         } catch (Exception e) { 
  59.             log.warn("strToObj error: ", e); 
  60.             return null; 
  61.         } 
  62.     } 
  63.  
  64.     /** 
  65.      * json字符串反序列化成對象(數組) 
  66.      * @param str 
  67.      * @param typeReference 
  68.      * @param <T> 
  69.      * @return 
  70.      */ 
  71.     public static <T> T strToObj(String str, TypeReference<T> typeReference) { 
  72.         if (StringUtils.isBlank(str) || null == typeReference) { 
  73.             return null; 
  74.         } 
  75.  
  76.         try { 
  77.             return (T) (typeReference.getType().equals(String.class) ? str : objectMapper.readValue(str, typeReference)); 
  78.         } catch (Exception e) { 
  79.             log.warn("strToObj error", e); 
  80.             return null; 
  81.         } 
  82.     } 

緊接著,編寫一個實體類Person,用于測試:

  1. @Data 
  2. public class Person implements Serializable { 
  3.  
  4.     private static final long serialVersionUID = 1L
  5.  
  6.     private Integer id; 
  7.  
  8.     //Long型參數 
  9.     private Long uid; 
  10.     private String name; 
  11.     private String address; 
  12.     private String mobile; 
  13.  
  14.     private Date createTime; 

最后,我們編寫一個測試類測試一下效果:

  1. public static void main(String[] args) { 
  2.     Person person = new Person(); 
  3.     person.setId(1); 
  4.     person.setUid(1111L); 
  5.     person.setName("hello"); 
  6.     person.setAddress(""); 
  7.     System.out.println(JsonUtil.objToStr(person)); 

輸出結果如下:

其中最關鍵一行代碼,是注冊了這個轉換類,從而實現將所有的 long 變成 string。

  1. // 序列換成json時,將所有的long變成string 
  2. SimpleModule simpleModule = new SimpleModule(); 
  3. simpleModule.addSerializer(Long.class, ToStringSerializer.instance); 
  4. simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); 
  5. objectMapper.registerModule(simpleModule); 

如果想對某個日期進行格式化,可以全局設置。

  1. //全局統一日期格式 
  2. objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); 

也可以,單獨對某個屬性進行設置,例如對createTime屬性格式化為yyyy-MM-dd,只需要加上如下注解即可。

  1. @JsonFormat(pattern="yyyy-MM-dd"timezone="GMT+8"
  2. private Date createTime; 

工具轉化類寫好之后,就非常簡單了,只需要對 aop 攔截的方法返回的參數,進行序列化就可以自動實現將所有的 long 變成 string。

2. SpringMVC 配置

如果是 SpringMVC 項目,操作也很簡單。

自定義一個實現類,繼承自ObjectMapper:

  1. package com.example.util; 
  2.  
  3. /** 
  4.  * 繼承ObjectMapper 
  5.  */ 
  6. public class CustomObjectMapper extends ObjectMapper { 
  7.  
  8.     public CustomObjectMapper() { 
  9.         super(); 
  10.         SimpleModule simpleModule = new SimpleModule(); 
  11.         simpleModule.addSerializer(Long.class, ToStringSerializer.instance); 
  12.         simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); 
  13.         registerModule(simpleModule); 
  14.     } 

在 SpringMVC 的配置文件中加上如下配置:

  1. <mvc:annotation-driven > 
  2.     <mvc:message-converters> 
  3.         <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
  4.             <constructor-arg index="0" value="utf-8" /> 
  5.             <property name="supportedMediaTypes"> 
  6.                 <list> 
  7.                     <value>application/json;charset=UTF-8</value> 
  8.                     <value>text/plain;charset=UTF-8</value> 
  9.                 </list> 
  10.             </property> 
  11.         </bean>           
  12.         <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
  13.             <property name="objectMapper"> 
  14.                 <bean class="com.example.util.CustomObjectMapper"> 
  15.                     <property name="dateFormat"> 
  16.                         <-對日期進行統一轉化-> 
  17.                         <bean class="java.text.SimpleDateFormat"> 
  18.                             <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" /> 
  19.                         </bean> 
  20.                     </property> 
  21.                 </bean> 
  22.             </property> 
  23.         </bean> 
  24.     </mvc:message-converters> 
  25. </mvc:annotation-driven> 

3. SpringBoot 配置

如果是 SpringBoot 項目,操作也類似。

編寫一個WebConfig配置類,并實現自WebMvcConfigurer,重寫configureMessageConverters方法:

  1. /** 
  2.  * WebMvc配置 
  3.  */ 
  4. @Configuration 
  5. @Slf4j 
  6. @EnableWebMvc 
  7. public class WebConfig implements WebMvcConfigurer { 
  8.  
  9.     /** 
  10.      *添加消息轉化類 
  11.      * @param list 
  12.      */ 
  13.     @Override 
  14.     public void configureMessageConverters(List<HttpMessageConverter<?>> list) { 
  15.         MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter(); 
  16.         ObjectMapper objectMapper = jsonConverter.getObjectMapper(); 
  17.         //序列換成json時,將所有的long變成string 
  18.         SimpleModule simpleModule = new SimpleModule(); 
  19.         simpleModule.addSerializer(Long.class, ToStringSerializer.instance); 
  20.         simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); 
  21.         objectMapper.registerModule(simpleModule); 
  22.         list.add(jsonConverter); 
  23.     } 

三、總結

在實際的項目開發中,很多服務都是純微服務開發,沒有用到SpringMVC,在這種情況下,使用JsonUtil工具類實現對象序列化,可能是一個非常好的選擇。

 

責任編輯:趙寧寧 來源: Java極客技術
相關推薦

2024-09-24 13:31:33

2023-10-26 07:29:06

mongodb十六進制ID

2025-01-16 16:16:53

2024-01-24 12:09:33

代碼Lodash前端

2024-12-09 08:25:47

Springsave方法

2015-05-11 10:39:19

2020-03-27 10:20:05

安全眾測滲透測試網絡安全

2022-08-28 20:07:17

Docker后端

2024-08-30 11:40:19

2021-01-08 07:38:15

代碼功能調用

2020-06-05 07:42:16

參數驗證合法

2021-05-07 07:59:52

WebFluxSpring5系統

2022-03-15 17:35:20

電商系統架構

2020-03-09 10:21:12

Java集合類 Guava

2021-08-19 07:34:55

RabbitMQLinuxWindows

2020-09-06 10:02:32

項目管理戰略目標CIO

2020-10-19 06:47:05

爬蟲數據Jsoup

2020-07-09 07:54:35

ThreadPoolE線程池

2020-10-30 07:43:35

Jenkins配置前端

2020-11-06 07:35:09

微信支付支付寶
點贊
收藏

51CTO技術棧公眾號

窝窝社区一区二区| 亚洲精品88| 丁香桃色午夜亚洲一区二区三区| 欧美激情女人20p| 97伦伦午夜电影理伦片| 国产亚洲精彩久久| 亚洲成va人在线观看| 日韩一区二区三区资源| 性色av蜜臀av| 日韩高清国产一区在线| 欧美多人爱爱视频网站| 久久婷婷五月综合| 国产主播性色av福利精品一区| 色婷婷精品久久二区二区蜜臀av| 波多野结衣 作品| 国产日本在线| 丰满岳乱妇一区二区三区| 国产999视频| 日本熟妇毛耸耸xxxxxx| 婷婷综合伊人| 一区二区三区视频免费| 国产真实乱人偷精品| 亚洲国产精选| 色88888久久久久久影院按摩| 亚洲色婷婷久久精品av蜜桃| 成a人v在线播放| 99视频有精品| 成人欧美一区二区| 国产精品久久无码一三区| 蜜桃视频一区| 91精品国产色综合久久不卡98口 | 亚洲精品性视频| 九色porny丨入口在线| 成人免费一区二区三区在线观看| 免费精品视频一区二区三区| 国产77777| 国产精品中文欧美| 成人黄色大片在线免费观看| 国产一级精品毛片| 久久蜜桃精品| 国产91免费观看| 国产三级av片| 亚洲在线免费| 国产va免费精品高清在线| 黄色一级片免费看| 亚洲国产激情| 久久露脸国产精品| 精品久久免费视频| 影音国产精品| 91wwwcom在线观看| 午夜精品久久久久久久久久久久久蜜桃 | 日韩精彩视频在线观看| 国产ts人妖一区二区三区| 中文字幕亚洲精品一区| 国产亚洲成人一区| 欧美一级在线亚洲天堂| 日韩在线视频免费播放| 欧美亚洲一级| 国产91网红主播在线观看| 亚洲欧美一区二区三区在线观看| 久久精品欧洲| 国产精品久久久久久久久久久不卡| 国产午夜无码视频在线观看 | 日本视频久久久| 久久久久久久久久久影院 | 艹b视频在线观看| 成人亚洲综合| 91精品国产综合久久婷婷香蕉| 亚洲一区二区福利视频| 国产精久久久| 亚洲国产精品久久| 国产吞精囗交久久久| 国内精品伊人久久久| 色综合伊人色综合网| 成人高潮免费视频| 好看的日韩av电影| 日本精品一区二区三区在线播放视频| 乱子伦一区二区三区| 久久99久久99小草精品免视看| 91久久久在线| 亚洲精品一区二区三区不卡| 久久综合色播五月| 在线观看成人av| 国产亚av手机在线观看| 粉嫩老牛aⅴ一区二区三区| 免费看污黄网站| 日韩成人18| 亚洲欧美精品中文字幕在线| 人与动物性xxxx| 亚洲麻豆av| 国产日韩专区在线| 香蕉久久一区二区三区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 日韩理论视频| 在线播放日韩导航| free性中国hd国语露脸| 99国产精品一区二区| 97精品久久久| 国产成人精品av在线观| 久久精品亚洲麻豆av一区二区| 欧美日韩亚洲国产成人| 亚洲黄色中文字幕| 日韩精品一区二区三区视频| 最新中文字幕av| 亚洲精品男同| 97人人做人人人难人人做| 国产在线观看免费| 一片黄亚洲嫩模| 亚洲免费一级视频| 天天做夜夜做人人爱精品| 久久久国产91| 亚洲视屏在线观看| 91免费版在线| 日韩精品一区二区免费| 精品福利在线| 亚洲图中文字幕| 日韩xxxxxxxxx| 国产麻豆视频一区二区| 亚洲一区二区三区乱码| 蜜桃视频www网站在线观看| 日韩午夜在线观看视频| 国产1区2区在线观看| 亚洲欧美日本视频在线观看| 91一区二区三区| h片在线免费观看| 欧美日韩精品一区二区天天拍小说| 白丝女仆被免费网站| 亚洲午夜在线| 91精品国产自产在线| 狠狠狠综合7777久夜色撩人| 午夜欧美在线一二页| 能看毛片的网站| 亚洲精品国产首次亮相| 国产一区深夜福利| 91xxx在线观看| 欧美色综合久久| 亚洲自拍偷拍图| 久久蜜桃精品| 视频一区视频二区视频| 精品无人乱码一区二区三区 | 91成人破解版| 视频一区在线视频| 日韩精品久久一区二区三区| 成人影院av| 亚洲天堂av在线免费| 日本天堂在线视频| 91一区二区在线| 日本不卡在线观看视频| 色老板在线视频一区二区| 57pao国产精品一区| 日本韩国精品一区二区| 色综合天天综合色综合av| 一区二区三区伦理片| 日本vs亚洲vs韩国一区三区二区| 色就是色欧美| 91精品国产一区二区在线观看| www.亚洲成人| www.av日韩| 天天综合色天天综合色h| 女人被狂躁c到高潮| 日韩国产在线观看| 亚洲一区三区视频在线观看| 日本少妇精品亚洲第一区| 欧美风情在线观看| 色婷婷综合视频| 色妹子一区二区| 日本不卡一二区| 国产成a人无v码亚洲福利| 一二三四视频社区在线| 精品国产美女| 亚洲最大av在线| 黄在线观看免费网站ktv| 一本色道久久88综合日韩精品| 亚洲天堂国产精品| 亚洲一区二区欧美日韩| mm131美女视频| 九九九久久久精品| 男的插女的下面视频| 欧美日韩激情在线一区二区三区| 91久久综合亚洲鲁鲁五月天| 91破解版在线观看| 在线播放国产精品| 风流少妇一区二区三区91| 欧美丝袜美女中出在线| 天天色影综合网| 99久久国产免费看| 午夜精品久久久久久久99热影院| 韩国av一区| 翔田千里亚洲一二三区| caoporn成人免费视频在线| 青青草原成人在线视频| 黄视频网站在线看| 亚洲欧美国产视频| www.黄色小说.com| 在线欧美日韩精品| 国产精品a成v人在线播放| 国产精品嫩草影院com| 完美搭档在线观看| 激情综合色综合久久| 日韩中文字幕在线视频观看| 亚洲91中文字幕无线码三区| 免费av在线一区二区| 精品中文视频| 国产精品久久在线观看| 两个人看的在线视频www| 久久久精品影院| 国产午夜在线观看| 日韩成人xxxx| 亚洲va欧美va| 欧美日韩国产综合视频在线观看| 国产精品视频免费播放| 一区二区三区中文字幕精品精品| 永久免费av无码网站性色av| 不卡视频一二三| 日批免费观看视频| 国产呦萝稀缺另类资源| 簧片在线免费看| 久久亚洲美女| 欧美国产激情视频| 在线成人国产| 欧洲精品在线播放| 婷婷成人基地| 一区二区三区四区视频在线观看| 精品中文一区| 欧美不卡在线一区二区三区| 福利在线一区| 国产精品毛片一区视频| 奇米一区二区| 91最新国产视频| av日韩一区| 成人免费视频网址| 欧美黄色成人| 国产在线观看一区二区三区| 精品欧美一区二区三区在线观看| 2023亚洲男人天堂| 伊人成综合网站| 欧美一级在线亚洲天堂| 涩涩av在线| 日本在线观看天堂男亚洲| 男人天堂视频在线观看| 18一19gay欧美视频网站| 国产99在线观看| 91av在线播放视频| 国产精品粉嫩| 国产不卡视频在线| 成人做爰免费视频免费看| 国产精品免费一区| 在线播放成人| 1区1区3区4区产品乱码芒果精品| 日韩综合一区二区三区| 成人欧美一区二区三区在线观看 | 精品免费日韩av| 亚洲成人黄色片| 亚洲国产成人久久综合| 午夜视频www| 亚洲日本中文字幕| 色大18成网站www在线观看| 久久精品视频99| 欧美xxxx视频| 人体精品一二三区| 精品久久毛片| 国产精品久久久久久久小唯西川| 全国精品免费看| 色婷婷精品国产一区二区三区| 国产精品久久观看| 国产色一区二区三区| 新狼窝色av性久久久久久| 日本 片 成人 在线| 国产在线精品一区二区夜色| www.四虎精品| 久久久不卡网国产精品一区| 亚洲女同二女同志奶水| 亚洲激情一二三区| 国语对白永久免费| 欧美久久婷婷综合色| 亚洲精品一区二区三区区别| 亚洲欧美日韩在线高清直播| 久久久久久国产精品免费无遮挡| 欧美高清电影在线看| 国产免费不卡| 91成人免费观看| 亚洲自拍电影| 91精品国产毛片武则天| 久久一区中文字幕| 四虎国产精品永久免费观看视频| 97久久超碰国产精品| 少妇高潮在线观看| 欧美日韩在线视频一区二区| 亚洲视频在线免费播放| 精品无人国产偷自产在线| 三区四区电影在线观看| 91av视频在线观看| 精品午夜视频| 四虎影院一区二区三区 | 欧美视频一二区| 日韩中文字幕在线视频| 超碰91在线观看| 91久久精品美女高潮| 在线日本制服中文欧美| 国产在线视频综合| 美日韩一区二区| 欧美精品黑人猛交高潮| 亚洲美女精品一区| 姑娘第5集在线观看免费好剧| 精品久久久三级丝袜| 麻豆免费在线观看| 国产成人精品一区二区在线| 成人免费在线电影网| 三年中文高清在线观看第6集| 亚洲欧美久久久| 中文字幕天堂av| 自拍偷拍欧美激情| 亚洲午夜在线播放| 亚洲欧洲在线观看| 国产在线美女| 国产精品日韩二区| 欧美日韩免费观看一区=区三区| 五月婷婷之综合激情| 久久精品亚洲国产奇米99| 日本一区二区不卡在线| 精品久久五月天| 里番在线播放| 999视频在线免费观看| 国产精品久久天天影视| 日本久久久久久久久久久久| 91美女片黄在线观看91美女| 日韩欧美中文字幕一区二区| 欧美大胆一级视频| 欧美另类tv| y111111国产精品久久婷婷| 国产精品久久久久无码av| 亚洲激情在线看| 中文字幕日韩欧美一区二区三区| 久久精品国产亚洲av麻豆蜜芽| 亚洲免费高清视频| 精品91久久| 日韩精品久久久免费观看| 日韩成人免费电影| 99久久99久久精品免费| 欧美一a一片一级一片| www.亚洲.com| 国产欧美婷婷中文| 午夜激情久久| 男生和女生一起差差差视频| 亚洲精品日韩综合观看成人91| 国产男女无套免费网站| 久国内精品在线| 97久久综合区小说区图片区| 国产高清www| 91色乱码一区二区三区| 黄色片视频免费| 在线视频中文亚洲| 国产美女亚洲精品7777| www国产免费| 91原创在线视频| 亚洲精品国产精品乱码视色| 精品国产一区二区在线| 日本亚洲视频| 人妻精品无码一区二区三区 | 日韩成人av网站| 久久99日本精品| 久久免费精彩视频| 日韩电视剧免费观看网站| 写真福利精品福利在线观看| 亚洲天堂电影网| 国产91露脸合集magnet| 91国产丝袜播放在线| 一区二区亚洲精品国产| www.久久草.com| 欧洲黄色一级视频| 亚洲欧洲美洲综合色网| 亚洲AV无码精品国产| 秋霞成人午夜鲁丝一区二区三区| 日本午夜一区| 欧美做受高潮中文字幕 | av 一区二区三区| 2019亚洲男人天堂| 久久麻豆精品| 黑人玩弄人妻一区二区三区| 色综合色综合色综合| 黄色av电影在线观看| 国产综合18久久久久久| 美国毛片一区二区三区| 精品无码人妻一区二区三区品| 亚洲欧美国产精品久久久久久久| 伊人久久一区| 97国产精东麻豆人妻电影| 亚洲欧美自拍偷拍色图| 欧美熟妇另类久久久久久不卡| 国产成人精品优优av| 国内精品亚洲| 熟女少妇a性色生活片毛片| 亚洲精品99久久久久中文字幕| 91精品美女| 精品无码一区二区三区爱欲| 国产精品女主播av| 少妇性bbb搡bbb爽爽爽欧美| 96国产粉嫩美女| 肉色丝袜一区二区| 青青草av在线播放|