久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

如何使用Spring Validation優雅地校驗參數

瀏覽:4日期:2023-08-24 09:17:11

引言

不知道大家平時的業務開發過程中 controller 層的參數校驗都是怎么寫的?是否也存在下面這樣的直接判斷?

public String add(UserVO userVO) { if(userVO.getAge() == null){ return '年齡不能為空'; } if(userVO.getAge() > 120){ return '年齡不能超過120'; } if(userVO.getName().isEmpty()){ return '用戶名不能為空'; } // 省略一堆參數校驗... return 'OK';}

業務代碼還沒開始寫呢,光參數校驗就寫了一堆判斷。這樣寫雖然沒什么錯,但是給人的感覺就是:不優雅,不專業。

其實Spring框架已經給我們封裝了一套校驗組件:validation。其特點是簡單易用,自由度高。接下來課代表使用springboot-2.3.1.RELEASE搭建一個簡單的 Web 工程,給大家一步一步講解在開發過程中如何優雅地做參數校驗。

1. 環境搭建

從springboot-2.3開始,校驗包被獨立成了一個starter組件,所以需要引入如下依賴:

<!--校驗組件--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency><!--web組件--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>

而springboot-2.3之前的版本只需要引入 web 依賴就可以了。

2.小試牛刀

參數校驗非常簡單,首先在待校驗字段上增加校驗規則注解

public class UserVO { @NotNull(message = 'age 不能為空') private Integer age;}

然后在controller方法中添加@Validated和用于接收錯誤信息的BindingResult就可以了,于是有了第一版:

public String add1(@Validated UserVO userVO, BindingResult result) { List<FieldError> fieldErrors = result.getFieldErrors(); if(!fieldErrors.isEmpty()){ return fieldErrors.get(0).getDefaultMessage(); } return 'OK';}

通過工具(postman)去請求接口,如果參數不符合規則,會將相應的 message信息返回:

age 不能為空

內置的校驗注解有很多,羅列如下:

注解 校驗功能 @AssertFalse 必須是false @AssertTrue 必須是true @DecimalMax 小于等于給定的值 @DecimalMin 大于等于給定的值 @Digits 可設定最大整數位數和最大小數位數 @Email 校驗是否符合Email格式 @Future 必須是將來的時間 @FutureOrPresent 當前或將來時間 @Max 最大值 @Min 最小值 @Negative 負數(不包括0) @NegativeOrZero 負數或0 @NotBlank 不為null并且包含至少一個非空白字符 @NotEmpty 不為null并且不為空 @NotNull 不為null @Null 為null @Past 必須是過去的時間 @PastOrPresent 必須是過去的時間,包含現在 @PositiveOrZero 正數或0 @Size 校驗容器的元素個數

3. 規范返回值

待校驗參數多了之后我們希望一次返回所有校驗失敗信息,方便接口調用方進行調整,這就需要統一返回格式,常見的就是封裝一個結果類。

public class ResultInfo<T>{ private Integer status; private String message; private T response; // 省略其他代碼...}

改造一下controller 方法,第二版:

public ResultInfo add2(@Validated UserVO userVO, BindingResult result) { List<FieldError> fieldErrors = result.getFieldErrors(); List<String> collect = fieldErrors.stream() .map(o -> o.getDefaultMessage()) .collect(Collectors.toList()); return new ResultInfo<>().success(400,'請求參數錯誤',collect);}

請求該方法時,所有的錯誤參數就都返回了:

{ 'status': 400, 'message': '請求參數錯誤', 'response': [ '年齡必須在[1,120]之間', 'bg 字段的整數位最多為3位,小數位最多為1位', 'name 不能為空', 'email 格式錯誤' ]}

4. 全局異常處理

每個Controller方法中都如果都寫一遍對BindingResult信息的處理,使用起來還是很繁瑣。可以通過全局異常處理的方式統一處理校驗異常。

當我們寫了@validated注解,不寫BindingResult的時候,Spring 就會拋出異常。由此,可以寫一個全局異常處理類來統一處理這種校驗異常,從而免去重復組織異常信息的代碼。

全局異常處理類只需要在類上標注@RestControllerAdvice,并在處理相應異常的方法上使用@ExceptionHandler注解,寫明處理哪個異常即可。

@RestControllerAdvicepublic class GlobalControllerAdvice { private static final String BAD_REQUEST_MSG = '客戶端請求參數錯誤'; // <1> 處理 form data方式調用接口校驗失敗拋出的異常 @ExceptionHandler(BindException.class) public ResultInfo bindExceptionHandler(BindException e) { List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors(); List<String> collect = fieldErrors.stream() .map(o -> o.getDefaultMessage()) .collect(Collectors.toList()); return new ResultInfo().success(HttpStatus.BAD_REQUEST.value(), BAD_REQUEST_MSG, collect); } // <2> 處理 json 請求體調用接口校驗失敗拋出的異常 @ExceptionHandler(MethodArgumentNotValidException.class) public ResultInfo methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) { List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors(); List<String> collect = fieldErrors.stream() .map(o -> o.getDefaultMessage()) .collect(Collectors.toList()); return new ResultInfo().success(HttpStatus.BAD_REQUEST.value(), BAD_REQUEST_MSG, collect); } // <3> 處理單個參數校驗失敗拋出的異常 @ExceptionHandler(ConstraintViolationException.class) public ResultInfo constraintViolationExceptionHandler(ConstraintViolationException e) { Set<ConstraintViolation<?>> constraintViolations = e.getConstraintViolations(); List<String> collect = constraintViolations.stream() .map(o -> o.getMessage()) .collect(Collectors.toList()); return new ResultInfo().success(HttpStatus.BAD_REQUEST.value(), BAD_REQUEST_MSG, collect); } }

事實上,在全局異常處理類中,我們可以寫多個異常處理方法,課代表總結了三種參數校驗時可能引發的異常:

使用form data方式調用接口,校驗異常拋出 BindException 使用 json 請求體調用接口,校驗異常拋出 MethodArgumentNotValidException 單個參數校驗異常拋出ConstraintViolationException

注:單個參數校驗需要在參數上增加校驗注解,并在類上標注@Validated。

全局異常處理類可以添加各種需要處理的異常,比如添加一個對Exception.class的異常處理,當所有ExceptionHandler都無法處理時,由其記錄異常信息,并返回友好提示。

5.分組校驗

如果同一個參數,需要在不同場景下應用不同的校驗規則,就需要用到分組校驗了。比如:新注冊用戶還沒起名字,我們允許name字段為空,但是不允許將名字更新為空字符。

分組校驗有三個步驟:

定義一個分組類(或接口) 在校驗注解上添加groups屬性指定分組 Controller方法的@Validated注解添加分組類

public interface Update extends Default{}

public class UserVO { @NotBlank(message = 'name 不能為空',groups = Update.class) private String name; // 省略其他代碼...}

@PostMapping('update')public ResultInfo update(@Validated({Update.class}) UserVO userVO) { return new ResultInfo().success(userVO);}

細心的同學可能已經注意到,自定義的Update分組接口繼承了Default接口。校驗注解(如: @NotBlank)和@validated默認都屬于Default.class分組,這一點在javax.validation.groups.Default注釋中有說明

/** * Default Jakarta Bean Validation group. * <p> * Unless a list of groups is explicitly defined: * <ul> * <li>constraints belong to the {@code Default} group</li> * <li>validation applies to the {@code Default} group</li> * </ul> * Most structural constraints should belong to the default group. * * @author Emmanuel Bernard */public interface Default {}

在編寫Update分組接口時,如果繼承了Default,下面兩個寫法就是等效的:

@Validated({Update.class})

@Validated({Update.class,Default.class})

請求一下/update接口可以看到,不僅校驗了name字段,也校驗了其他默認屬于Default.class分組的字段

{ 'status': 400, 'message': '客戶端請求參數錯誤', 'response': [ 'name 不能為空', 'age 不能為空', 'email 不能為空' ]}

如果Update不繼承Default,@Validated({Update.class})就只會校驗屬于Update.class分組的參數字段,修改后再次請求該接口得到如下結果,可以看到, 其他字段沒有參與校驗:

{ 'status': 400, 'message': '客戶端請求參數錯誤', 'response': [ 'name 不能為空' ]}

6.遞歸校驗

如果 UserVO 類中增加一個 OrderVO 類的屬性,而 OrderVO 中的屬性也需要校驗,就用到遞歸校驗了,只要在相應屬性上增加@Valid注解即可實現(對于集合同樣適用)

OrderVO類如下

public class OrderVO { @NotNull private Long id; @NotBlank(message = 'itemName 不能為空') private String itemName; // 省略其他代碼...}

在 UserVO 類中增加一個 OrderVO 類型的屬性

public class UserVO { @NotBlank(message = 'name 不能為空',groups = Update.class) private String name;//需要遞歸校驗的OrderVO @Valid private OrderVO orderVO; // 省略其他代碼...}

調用請求驗證如下:

如何使用Spring Validation優雅地校驗參數

7. 自定義校驗

Spring 的 validation 為我們提供了這么多特性,幾乎可以滿足日常開發中絕大多數參數校驗場景了。但是,一個好的框架一定是方便擴展的。有了擴展能力,就能應對更多復雜的業務場景,畢竟在開發過程中,唯一不變的就是變化本身。

Spring Validation允許用戶自定義校驗,實現很簡單,分兩步:

自定義校驗注解 編寫校驗者類

代碼也很簡單,結合注釋你一看就能懂

@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})@Retention(RUNTIME)@Documented@Constraint(validatedBy = {HaveNoBlankValidator.class})// 標明由哪個類執行校驗邏輯public @interface HaveNoBlank { // 校驗出錯時默認返回的消息 String message() default '字符串中不能含有空格'; Class<?>[] groups() default { }; Class<? extends Payload>[] payload() default { }; /** * 同一個元素上指定多個該注解時使用 */ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) @Documented public @interface List { NotBlank[] value(); }}

public class HaveNoBlankValidator implements ConstraintValidator<HaveNoBlank, String> { @Override public boolean isValid(String value, ConstraintValidatorContext context) { // null 不做檢驗 if (value == null) { return true; } if (value.contains(' ')) { // 校驗失敗 return false; } // 校驗成功 return true; }}

自定義校驗注解使用起來和內置注解無異,在需要的字段上添加相應注解即可,同學們可以自行驗證

回顧

內置多種常用校驗注解 支持單個參數校驗 結合全局異常處理自動組裝校驗異常 分組校驗 支持遞歸校驗 自定義校驗

本文代碼已上傳至GitHub

到此這篇關于如何使用Spring Validation優雅地校驗參數的文章就介紹到這了,更多相關Spring Validation校驗參數內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 黄色毛片在线观看 | 精品三级在线观看 | 亚洲一区免费在线观看 | 一级毛片网| 一区二区三区视频在线播放 | 玖玖久久 | 亚洲精品中文字幕在线观看 | 国产在线专区 | 在线看国产| 韩国精品一区二区 | 亚洲成人精品一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | 久日精品| 伊人网站 | 久久99久久98精品免观看软件 | 久久久精品日本 | 视频一区二区三区在线播放 | 精品久久久久一区二区三区 | 成人免费在线观看 | 中文字幕一级毛片 | 国产在线观看欧美 | 国产日韩精品一区二区在线观看播放 | 欧美综合一区二区 | 欧美日韩在线一区二区三区 | 在线观看你懂的视频 | 国产探花在线精品一区二区 | 国产免费自拍 | 激情欧美一区二区三区中文字幕 | 玖玖国产精品视频 | 亚洲一区中文 | 久久中文字幕一区 | 日韩精品久久久久久 | 亚洲精品视频在线 | 福利视频一区二区三区 | 超碰美女 | 国产一区在线视频 | 国产一区二区视频在线观看 | 欧美福利视频 | 激情网站免费观看 | 一级黄色毛片免费 | 欧美日韩精品一区二区在线播放 | 国产91亚洲 | 欧美综合久久久 | 国产日产欧美a级毛片 | 久草.com| 最新国产中文字幕 | 国产精品自产av一区二区三区 | 国产香蕉视频在线播放 | 狠狠操综合网 | 激情网页 | av国产精品| 亚洲国产成人av | 97国产精品视频 | a国产精品 | 99免费在线视频 | 91.com在线观看 | 国产在线成人 | 久久久久久精 | 久久久久久久99精品免费观看 | 亚洲人成人一区二区在线观看 | 欧美成人高清视频 | 亚洲精选久久 | 福利91| 欧美精品欧美精品系列 | 免费的av网站 | 亚洲成人精品久久 | 国产一级一级 | 精品久久久久久国产 | 成人精品在线视频 | 日韩精品一区二区三区第95 | 久久久一区二区三区 | 精品www| 国产精品日韩一区二区 | 亚洲精品国精品久久99热 | 欧美日韩电影一区二区三区 | 一区二区三区四区免费 | 日韩一区二区三区在线观看 | 91精品国产一区二区三区蜜臀 | 亚洲免费网站在线观看 | 久久精品成人一区二区三区蜜臀 | 日韩成人免费中文字幕 | 国产成人午夜精品影院游乐网 | 高清国产午夜精品久久久久久 | 色九九九 | 日韩视频在线免费观看 | 精品一区二区在线观看 | 亚洲精品3 | 国产精品国产三级国产aⅴ中文 | 男人的天堂一级片 | 国产精品视频一区二区三区四 | 天天拍天天草 | 亚洲国产精品久久久 | 啊啊啊网站 | www.一区二区三区 | 成人深夜福利视频 | 国产色 | 国产亚洲久久 | 夜夜操操| 久久久久久免费毛片精品 | 国产精品二区三区 | 欧美成a | 免费日韩成人 | va在线| 精品无码久久久久国产 | 亚洲激情欧美 | 一级成人免费 | 中文字幕在线资源 | 天天天干天天射天天天操 | 久久午夜电影 | 成人在线网 | 亚洲精品乱码久久久久久按摩观 | 毛片入口| 午夜三区| 国产精品毛片在线 | 香蕉视频一级片 | 欧美日韩电影一区二区 | 色综合久久天天综合网 | 男女午夜 | 夜夜超碰| 伊人激情影院 | 精品一区免费 | 亚洲一区视频在线 | 欧美日韩福利视频 | 欧美精品久久久 | 免费黄色欧美 | 国产精品香蕉在线观看 | 一区二区三区在线播放视频 | 久久久久久久久99精品 | 国产一级黄色 | 亚洲一区二区视频 | 看特级毛片 | 国产精品久久影院 | 久在线视频播放免费视频 | 国产激情视频在线 | 99精品99| 国产精品69毛片高清亚洲 | 成人免费视频网 | 色吧久久 | 日韩大片免费播放 | 深夜福利亚洲 | 日韩一二区视频 | 亚洲国产日本 | 亚洲日韩欧美一区二区在线 | 亚洲精品在线免费 | 日韩大尺度电影在线观看 | 久久精品这里热有精品 | 在线成人免费视频 | 亚洲www啪成人一区二区 | 久久久久久国产精品美女 | 久久综合伊人 | 在线播放高清视频www | 久久国产精品视频观看 | 99re99| 久久99深爱久久99精品 | 欧美一区二区在线视频 | 日韩激情二区 | 欧美理论片在线 | 国产女人和拘做受在线视频 | 一区久久 | 亚洲伊人久久综合 | 日韩视频免费在线 | 999这里只有精品 | 一区二区三区四区视频 | 一级看片 | 国产日韩欧美综合 | 午夜久久久久 | 欧美一级片在线观看 | 天堂资源av| 少妇看av一二三区 | 一级毛片av | 色网在线观看 | 欧美成人精品一区二区三区 | 最近中文字幕免费观看 | 中国一级毛片 | 国产成人在线一区二区 | 亚洲欧洲视频在线 | 四虎永久网址 | 九九99热 | 国产精品第一国产精品 | 久久久久久国产 | 亚洲人成人一区二区在线观看 | 天堂资源最新在线 | 亚洲男人天堂2024 | 日韩性猛交 | 午夜精品久久久久久久男人的天堂 | а√天堂资源中文最新版地址 | 久久亚洲二区 | 免费av中国| 性视频一区二区 | 色玖玖 | 国产精品久久777777 | 日本大人吃奶视频xxxx | 夜夜骑天天操 | 成人爽a毛片一区二区免费 亚洲自拍偷拍精品 | 国产在线观看一区二区 | 91亚洲免费视频 | 国产亚洲精品美女久久久久久久久久 | 黄色骚片| 日韩中文一区二区 | 日韩精品免费视频 | 中文字幕乱码亚洲精品一区 | 亚洲国产精品99久久久久久久久 | 欧美日韩精品一区二区 | 日韩高清国产一区在线 | 久久性色 | 成人在线视频一区二区 | 亚洲国产精品一区二区久久,亚洲午夜 | 操操操操操 | 日本黄色一级 | 噜噜噜在线视频 | 精品无码久久久久久国产 | 日韩视频中文 | 黄色精品一区二区 | 久久人爽 | www.99热.com | 91精品久久久久久久久久久久久久久 | 黄色一级网址 | 中文字幕成人 | 99re6热只有精品免费观看 | 国产欧美精品一区二区三区 | 亚洲激情在线观看 | 国产成人午夜精品影院游乐网 | 理伦影院 | 久久成人综合 | 久久国产精品免费一区二区三区 | 91精品国产91综合久久蜜臀 | 美女福利视频 | 国产老头老太作爱视频 | 一区二区国产在线 | 小泽玛丽娅 | 精品亚洲一区二区三区 | 免费的黄视频 | 色婷婷av一区二区三区大白胸 | 久久久网| 国产欧美综合一区二区三区 | 精品久久不卡 | 欧美国产91| 久久久久久九九 | 国产精品视频一区二区三区四蜜臂 | 日韩精品一区二区在线观看 | 爱色av| 91精品啪啪 | 日韩欧美在线观看 | 毛片av在线 | 国产噜噜噜噜噜久久久久久久久 | 日本黄色大片免费看 | 亚洲欧美国产毛片在线 | 午夜影院在线免费观看 | 亚洲综合在线一区 | 国产精品国产精品国产专区不片 | 日韩爱爱免费视频 | 精品国产91亚洲一区二区三区www | 欧美亚洲综合久久 | 国产午夜视频在线观看 | 久久国产精品免费一区二区三区 | 久久精品国产亚洲精品 | 亚洲国产网站 | 国产精品视频一区二区三区不卡 | 久久久久国产成人精品亚洲午夜 | 日韩一区二区在线免费观看 | 在线观看黄 | 国产精品视频免费观看 | 男女网站在线观看 | 国产精品久久国产精麻豆99网站 | 亚洲第一成人在线视频 | 亚洲一区国产视频 | 国产成人在线免费观看 | 成人一级片 | 午夜精品视频在线观看 | 亚洲免费人成在线视频观看 | 欧美精品亚洲 | 亚洲女人天堂成人av在线 | 国模精品视频一区二区 | 四虎影视 | 91精品国产综合久久久久久漫画 | 欧美自拍视频 | 视频一区 中文字幕 | 亚洲视频1| 国产在线观看av | 久久久成人精品 | 成人亚洲区 | 欧美成人精品一区 | 欧美一区在线看 | 欧美日韩国产一区 | 中文字幕一区二区三区在线视频 | 五月天婷婷丁香 | 国产精品45p | 欧美一级欧美三级在线观看 | 亚洲第一精品在线 | 91网站在线播放 | 日韩在线不卡 | 91视频日韩 | 91视频一区二区 | 欧美在线网站 | 伊人影院在线观看 | 欧美日韩一区二区中文字幕 | 亚洲另类视频 | 国产欧美一区二区视频 | 亚洲午夜精品视频 | 日韩精品999| 午夜成人在线视频 | 3bmm在线观看视频免费 | 国产成人精品一区二区在线 | 久久精品成人 | 一区二区三区高清 | 成人精品鲁一区一区二区 | 福利视频二区 | 成人在线免费观看视频 | 欧美精品成人一区二区三区四区 | 久久久久久免费看 | 久久精品成人一区二区三区蜜臀 | 午夜免费高清视频 | 一级篇| 日韩在线不卡视频 | 久久伊99综合婷婷久久伊 | 久日精品 | av电影手机版| 韩国毛片在线 | 国产精品无码久久久久 | 日韩精品视频在线 | 日韩久久在线 | 视频一区二区三区在线观看 | 久草视频在线播放 | 久久久免费视频看看 | 婷婷欧美 | 欧美精品在欧美一区二区少妇 | 中文字幕第一页在线 | 日韩三级中文字幕 | 中文字幕av高清 | 日日干夜夜干 | 成年入口无限观看网站 | 成人黄页在线观看 | 国产高清在线精品一区二区三区 | 日韩午夜视频在线观看 | 狠狠色综合欧美激情 | 一区二区成人 | 日韩av一区二区三区在线 | 欧洲免费毛片 | 婷婷五月色综合 | 天天亚洲综合 | 婷婷久久综合 | 欧美福利视频 | 羞羞视频在线观免费观看 | 国产视频一区二区在线观看 | 偷拍呻吟高潮91 | 操视频网站 | 成人久久久精品国产乱码一区二区 | 精品www| 五月婷婷在线观看视频 | 国产一区二区三区在线免费 | 精品久久av | 国产色| 在线观看免费视频日韩 | 九九九视频 | 国产精品久久9 | 亚洲二区在线视频 | 色爱区综合 | 久久久久中文字幕 | 日韩国产精品一区二区三区 | 最新国产福利在线 | 精品成人佐山爱一区二区 | 国产成人精品亚洲日本在线观看 | 精品久久久精品 | 国产欧美一区二区三区在线看 | 久久久久久亚洲 | 成人国产精品视频 | 欧美成人性生活 | 免费观看一级毛片 | 国产51人人成人人人人爽色哟哟 | 国产精品精品视频 | 国产免费av网站 | 丝袜+亚洲+另类+欧美+变态 | 亚洲精品综合 | 国产成人福利视频 | 日韩成人影院在线观看 | 国产精品高潮呻吟 | 大象一区 | 操人在线观看 | 国产一区二区 | 欧美久久久久久久久久伊人 | 国产一区二区三区精品久久久 | 久久久国产精品 | 黄色毛片在线观看 | 国产成人精品一区二 | 国产97色在线 | 亚洲 | 97国产资源 | 亚洲精品麻豆 | 国产精品成人在线观看 | 久久久久久电影 | 成人欧美一区二区三区色青冈 | 91麻豆精品国产91久久久资源速度 | 精品在线看 | 91精品国产色综合久久不卡98 | 亚洲日韩中文字幕一区 | 日本午夜在线 | 欧美精品一区自拍a毛片在线视频 | 国产高清在线 | 日韩欧美一级精品久久 | 亚洲人成网站999久久久综合 | 天天干天天曰天天操 | 久久久综合视频 | 欧美精品1区2区 | 国产高清一区二区 | 最新国产精品精品视频 | 午夜精品视频 | 国产日韩欧美在线 | 99在线视频观看 | 成人高清视频免费观看 | 在线观看成人小视频 | 日本黄色大片免费观看 | 国产高清视频 | 国产成人精品一区二 | 国产一区二区三区在线 | 国产在线观看免费av | 国产精品毛片一区二区 | 色婷婷综合在线视频 | 精品国产精品三级精品av网址 | 亚洲欧美国产另类 | 欧美日韩精品在线一区 | 99视频精品| 欧美日韩成人在线 | 成人一区在线观看 | 爱爱精品 | 日本精品在线观看 | a√免费视频 | 欧美一级内谢 | 精品欧美日韩 | 成人黄色免费 | 欧美一级在线免费观看 | 国产成人精品免高潮在线观看 | 久草中文在线 | 日韩激情一区二区三区 | 日本中文字幕一区二区 | 男人久久天堂 | 国产精品久久久久久 | 国产99在线 | 欧美 | av免费网站在线观看 | 日韩精品免费在线观看 | 久久男人天堂 | 一区二区三区在线观看国产 | 97色在线观看免费视频 | 国产精品女教师av久久 | 成人在线不卡 | 久久男女| 男女羞羞视频免费在线观看 | 狠狠操网站 | 成人精品久久久 | av在线播放国产 | 久久国产精品免费一区二区三区 | 成人看片在线观看 | 91久久久久 | 在线免费色视频 | 1000部精品久久久久久久久 | 91免费在线看 | 亚洲视频免费 | 久久国产传媒 | 欧美精品一区二区三区在线播放 | 欧美日韩国产在线观看 | 丁香婷婷在线观看 | av一区二区三区四区 | 小情侣高清国产在线播放 | 欧美午夜精品久久久久久浪潮 | 91激情视频 | 国产精品亚洲视频 | 亚洲免费精品 | 色小妹三区 | 国产精品亲子伦av一区二区三区 | 黄色毛片看看 | 最新精品在线 | 天天干视频 | 91精品国产一区二区 | 精品久久97 | 日本黄色a视频 | 日韩精品久久 | 欧美精品在线观看免费 | 亚洲在线视频 | 久久综合狠狠综合久久综合88 | 澳门av| 国产成人毛片 | 国产欧美日韩一区 | 免费在线观看一级毛片 | 午夜激情免费在线观看 | 欧美一区在线视频 | 91一区二区三区久久国产乱 | 美女福利视频 | 五月天婷婷丁香 | 中文字幕日韩一区二区三区 | 成人看片在线观看 | 国产免费网址 | 日韩在线一区二区三区 | 久久免费看| 国产综合久久 | 亚洲欧美91| 久久久久久久久久久亚洲 | 久久日本视频 | 成人欧美一区二区三区白人 | 国产精品一区av | 久久青草av | 成人欧美亚洲 | 亚洲美女在线视频 | www一区二区 | 国产一区二区三区四区视频 | 美女操网站 | 亚洲欧洲精品一区二区 | 亚洲 成人 av| 六月丁香av| 日韩精品一区在线 | 久久青草国产 | 色av色av色av | 一区在线视频 | 欧美2区 | 天天爱天天草 | 91精品国产91久久久久久久久久久久 | 成人免费视频视频在线观看 免费 | 91精品国产乱码久久蜜臀 | 欧美黑人巨大xxx极品 | 中文字幕第18页 | 91视视频在线观看入口直接观看 | 国产精品毛片久久久久久久 | 欧美一级片免费在线观看 | 日本韩国欧美一区 | 91精品国产91久久久久久蜜臀 | 奇米亚洲午夜久久精品 | 日韩精品 电影一区 亚洲 | 三级网站在线播放 | 国产精品亚洲视频 | 日韩不卡一区二区 | 在线观看一区二区三区四区 | 欧美日韩一区二区中文字幕 | 久久久极品 | 成人国产精品免费网站 | 一区二区中文字幕 | 日韩美一级 | 国产精品一品二区三区的使用体验 | 日韩高清在线 | 在线观看国产一区 | 国产一区二区在线播放 | 欧美成人精品一区二区 | 国产丝袜视频 | 精品久久久久久久久久久久久久 | 国产精品毛片一区二区三区 | 干干干操操操 | 男女视频在线观看 | jizz中国日本 | 国产视频精品在线观看 | 中文字幕91 | 国产精品1区2区3区 欧美 中文字幕 | 午夜精品福利一区二区三区蜜桃 | 91精品久久久久久久久久 | 欧美精品成人一区二区在线 | 日韩欧美国产一区二区三区 | 日韩欧美国产成人一区二区 | 伊人网综合在线 | 大香萑 | 精品一区二区国产 | 久久国产精品久久久久久 | 91亚洲成人 | 香蕉成人啪国产精品视频综合网 | 久久精品久久久久久 | 日本精品一区二区在线观看 | 日本三级欧美三级 | 欧美日韩精品区 | 麻豆高清免费国产一区 | 亚洲 欧美 日韩在线 | 亚洲一区二区三 | 国内精品一级毛片国产99 | 欧美free性丝袜xxxxhd | 亚洲福利影院 | 91在线看片 | 国产有码 | 天天天操 | 日本福利网站 | 日韩国产在线观看 | 美女主播精品视频一二三四 | 国产一区二区三区色淫影院 | 亚洲tv久久爽久久爽 | 久久综合九色综合欧美狠狠 | 国产精品丝袜一区二区 | 久久青青| 日本亚洲欧美 | 精品中文久久 | 一区二区视频在线 | 日韩国产在线观看 | 黄色片免费看. | 视频1区2区 | 国产亚洲欧美一区 | 日韩欧美大片在线观看 | 国产视频亚洲精品 | 国产精品综合 | 日本视频一区二区三区 | 国产精品一区在线观看 | 精品2区| av网站免费 | 欧洲一区二区在线观看 | 日日干天天操 | 国产一级在线观看 | 成人在线播放 | 日精品| 国产欧美日韩综合精品一区二区 | 久久久亚洲一区 | 久久视频在线看 | 日韩电影a | 日韩精品一区二区三区在线观看 | 国产精品一区二区三区四区 | 亚洲天堂一区 | 欧美xxxⅹ性欧美大片 | 一区二区三区视频播放 | 欧美精品一区二区视频 | 国产女人和拘做受视频 | 一区二区国产精品 | 免费av大全| 亚洲欧美日韩精品久久亚洲区 | 每日更新亚洲 | 国产成人亚洲综合 | 精品国产福利 |