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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java jax-rs_在Java EE 7和WildFly中使用Bean验证来验证JAX-RS资源数据

發布時間:2023/12/3 java 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java jax-rs_在Java EE 7和WildFly中使用Bean验证来验证JAX-RS资源数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java jax-rs

我過去已經兩次接觸過這個主題。 首先,在我的文章《 在Java EE 6中將Bean驗證與JAX-RS集成》中 ,描述了甚至在Java EE平臺規范中尚未定義之前,如何在JBoss AS 7中將Bean驗證與JAX-RS結合使用。 后來,在一篇為《 JAX Magazine 》撰寫并隨后發表在《 JAXenter 》上的文章中,使用了帶有Glassfish 4服務器(第一臺經過Java EE 7認證的服務器)的Java EE 7中定義的新標準方式。
現在,以前稱為JBoss Application Server的WildFly 8終于達到了最終版本,并加入了Java EE 7認證的服務器俱樂部,現在該發表新文章了,重點介紹了這兩個應用服務器GlassFish 4和WildFly之間的特殊性和差異。 8。

規格和API

Java EE 7是期待已久的Java EE 6的重大改進。隨著Java EE的每個發行版,都添加了新功能并增強了現有規范。 Java EE 7以Java EE 6的成功為基礎,并且繼續致力于提高開發人員的生產力。

JAX-RS是RESTful Web服務的Java API,是Java EE領域中發展最快的API之一。 當然,這是由于基于REST的Web服務的大量采用以及使用這些服務的應用程序數量的增加。

這篇文章將介紹配置REST端點以支持JavaScript客戶端并處理驗證異常以將本地化錯誤消息發送到客戶端的必要步驟,以及HTTP錯誤狀態代碼。

源代碼

本文隨附的源代碼可在GitHub上找到 。

Bean驗證簡介

JavaBeans Validation( Bean驗證 )是一種新的驗證模型,可作為Java EE 6平臺的一部分使用。 約束通過以JavaBeans組件(例如托管Bean)的字段,方法或類上的注釋形式的約束來支持Bean驗證模型。

javax.validation.constraints包中提供了幾個內置約束。 Java EE 7教程包含具有所有這些約束的列表。

Bean驗證中的約束通過Java注釋表示:

public class Person {@NotNull@Size(min = 2, max = 50)private String name;// ... }

Bean驗證和RESTful Web服務

JAX-RS為提取請求值并將其綁定到Java字段,屬性和參數(使用@HeaderParam , @QueryParam等注釋)提供了強大的支持。它還支持通過非注釋參數(即,將請求實體主體綁定到Java對象中) ,未使用任何JAX-RS批注進行批注的參數)。 但是,在JAX-RS 2.0之前,必須以編程方式對資源類中的這些值進行任何其他驗證。

最新版本的JAX-RS 2.0提供了一種解決方案,使驗證批注可以與JAX-RS批注結合使用。
以下示例顯示了如何使用@Pattern驗證批注來驗證路徑參數:

@GET @Path("{id}") public Person getPerson(@PathParam("id")@Pattern(regexp = "[0-9]+", message = "The id must be a valid number")String id) {return persons.get(id); }

除了驗證單個字段外,您還可以使用@Valid批注驗證整個實體。
例如,下面的方法接收一個Person對象并對其進行驗證:

@POST public Response validatePerson(@Valid Person person) {// ... }

國際化

在前面的示例中,我們使用了默認或硬編碼的錯誤消息,但這既是一種不好的做法,又一點也不靈活。 I18n是Bean驗證規范的一部分,它使我們能夠使用資源屬性文件來指定自定義錯誤消息。 默認資源文件名稱為ValidationMessages.properties并且必須包含屬性/值對,例如:

person.id.notnull=The person id must not be null person.id.pattern=The person id must be a valid number person.name.size=The person name must be between {min} and {max} chars long

注意: {min}和{max}是指與消息關聯的約束的屬性。

一旦定義,這些消息就可以注入到驗證約束中,例如:

@POST @Path("create") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public Response createPerson(@FormParam("id")@NotNull(message = "{person.id.notnull}")@Pattern(regexp = "[0-9]+", message = "{person.id.pattern}")String id,@FormParam("name")@Size(min = 2, max = 50, message = "{person.name.size}")String name) {Person person = new Person();person.setId(Integer.valueOf(id));person.setName(name);persons.put(id, person);return Response.status(Response.Status.CREATED).entity(person).build(); }

要提供其他語言的翻譯,必須使用翻譯后的消息創建一個新文件ValidationMessages_XX.properties ,其中XX是所提供語言的代碼。

不幸的是,對于某些應用程序服務器,默認的Validator提供程序不基于特定的HTTP請求支持i18n。 他們不考慮Accept-Language HTTP標頭,并且始終使用Locale.getDefault()提供的默認Locale 。 為了能夠使用Accept-Language HTTP標頭(映射到瀏覽器選項中配置的語言)來更改Locale ,您必須提供一個自定義實現。

自定義驗證器提供程序

盡管WildFly 8正確使用Accept-Language HTTP標頭來選擇正確的資源包,但其他服務器(例如GlassFish 4)卻不使用此標頭。 因此,為了完整性和與GlassFish代碼的比較(在同一個GitHub項目下提供 ),我還為WildFly實現了自定義的Validator提供程序。
如果要查看GlassFish示例,請訪問JAXenter上的Bean驗證與JAX-RS集成。

  • 將RESTEasy依賴項添加到Maven
  • WildFly使用RESTEasy ,即JAX-RS規范的JBoss實現。
    驗證程序提供程序和Exception Mapper所需的RESTEasy依賴關系將在本文后面的內容中進行討論。 讓我們將其添加到Maven:

    <dependencyManagement><dependencies><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-bom</artifactId><version>3.0.6.Final</version><scope>import</scope><type>pom</type></dependency></dependencies> </dependencyManagement><dependencies><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxrs</artifactId><scope>provided</scope></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-validator-provider-11</artifactId><scope>provided</scope></dependency> </dependencies>

  • 創建一個ThreadLocal來存儲Locale從Accept-Language HTTP標頭
  • ThreadLocal變量與普通變量不同,每個訪問線程的線程都有其自己的,獨立初始化的變量副本。

    /*** {@link ThreadLocal} to store the Locale to be used in the message interpolator.*/ public class LocaleThreadLocal {public static final ThreadLocal<Locale> THREAD_LOCAL = new ThreadLocal<Locale>();public static Locale get() {return (THREAD_LOCAL.get() == null) ? Locale.getDefault() : THREAD_LOCAL.get();}public static void set(Locale locale) {THREAD_LOCAL.set(locale);}public static void unset() {THREAD_LOCAL.remove();} }

  • 創建一個請求過濾器以讀取Accept-Language HTTP標頭
  • 請求過濾器負責讀取客戶端在Accept-Language HTTP標頭中發送的第一語言并將Accept-Language Locale存儲在我們的ThreadLocal :

    /*** Checks whether the {@code Accept-Language} HTTP header exists and creates a {@link ThreadLocal} to store the* corresponding Locale.*/ @Provider public class AcceptLanguageRequestFilter implements ContainerRequestFilter {@Contextprivate HttpHeaders headers;@Overridepublic void filter(ContainerRequestContext requestContext) throws IOException {if (!headers.getAcceptableLanguages().isEmpty()) {LocaleThreadLocal.set(headers.getAcceptableLanguages().get(0));}} }

  • 創建自定義消息插值器以強制執行特定的Locale
  • 接下來,創建一個自定義消息插值器,以通過繞過或覆蓋默認的Locale策略來強制執行特定的Locale值:

    /*** Delegates to a MessageInterpolator implementation but enforces a given Locale.*/ public class LocaleSpecificMessageInterpolator implements MessageInterpolator {private final MessageInterpolator defaultInterpolator;public LocaleSpecificMessageInterpolator(MessageInterpolator interpolator) {this.defaultInterpolator = interpolator;}@Overridepublic String interpolate(String message, Context context) {return defaultInterpolator.interpolate(message, context, LocaleThreadLocal.get());}@Overridepublic String interpolate(String message, Context context, Locale locale) {return defaultInterpolator.interpolate(message, context, locale);} }

  • 配置驗證器提供程序
  • RESTEasy通過查找實現ContextResolver<GeneralValidator>的提供程序來獲得Bean驗證實現。
    要配置新的驗證服務提供者以使用我們的自定義消息插值器,請添加以下內容:

    /*** Custom configuration of validation. This configuration can define custom:* <ul>* <li>MessageInterpolator - interpolates a given constraint violation message.</li>* <li>TraversableResolver - determines if a property can be accessed by the Bean Validation provider.</li>* <li>ConstraintValidatorFactory - instantiates a ConstraintValidator instance based off its class.* <li>ParameterNameProvider - provides names for method and constructor parameters.</li> ** </ul>*/ @Provider public class ValidationConfigurationContextResolver implements ContextResolver<GeneralValidator> {/*** Get a context of type {@code GeneralValidator} that is applicable to the supplied type.** @param type the class of object for which a context is desired* @return a context for the supplied type or {@code null} if a context for the supplied type is not available from* this provider.*/@Overridepublic GeneralValidator getContext(Class<?> type) {Configuration<?> config = Validation.byDefaultProvider().configure();BootstrapConfiguration bootstrapConfiguration = config.getBootstrapConfiguration();config.messageInterpolator(new LocaleSpecificMessageInterpolator(Validation.byDefaultProvider().configure().getDefaultMessageInterpolator()));return new GeneralValidatorImpl(config.buildValidatorFactory(),bootstrapConfiguration.isExecutableValidationEnabled(),bootstrapConfiguration.getDefaultValidatedExecutableTypes());} }
  • 映射異常

    默認情況下,當驗證失敗時,容器將引發異常,并將HTTP錯誤返回給客戶端。

    Bean驗證規范定義了一個小的異常層次結構(它們都繼承自ValidationException ),可以在驗證引擎初始化期間或(在我們的情況下更重要)在輸入/輸出值驗證期間拋出異常( ConstraintViolationException )。 如果拋出的異常是除ConstraintViolationException之外的ValidationException的子類,則此異常將映射到狀態碼為500(內部服務器錯誤)的HTTP響應。 另一方面,當拋出ConstraintViolationException時,將返回兩個不同的狀態代碼:

    • 500內部服務器錯誤)
      如果在驗證方法返回類型時引發了異常。
    • 400(錯誤請求)
      除此以外。

    不幸的是,WildFly并沒有拋出ConstraintViolationException異常以獲取無效的輸入值, ResteasyViolationException拋出了一個ResteasyViolationException ,該異常實現了ValidationException接口。
    可以自定義此行為,以允許我們將錯誤消息添加到返回給客戶端的響應中:

    /*** {@link ExceptionMapper} for {@link ValidationException}.* <p>* Send a {@link ViolationReport} in {@link Response} in addition to HTTP 400/500 status code. Supported media types* are: {@code application/json} / {@code application/xml} (if appropriate provider is registered on server).* </p>** @see org.jboss.resteasy.api.validation.ResteasyViolationExceptionMapper The original WildFly class:* {@code org.jboss.resteasy.api.validation.ResteasyViolationExceptionMapper}*/ @Provider public class ValidationExceptionMapper implements ExceptionMapper<ValidationException> {@Overridepublic Response toResponse(ValidationException exception) {if (exception instanceof ConstraintDefinitionException) {return buildResponse(unwrapException(exception), MediaType.TEXT_PLAIN, Status.INTERNAL_SERVER_ERROR);}if (exception instanceof ConstraintDeclarationException) {return buildResponse(unwrapException(exception), MediaType.TEXT_PLAIN, Status.INTERNAL_SERVER_ERROR);}if (exception instanceof GroupDefinitionException) {return buildResponse(unwrapException(exception), MediaType.TEXT_PLAIN, Status.INTERNAL_SERVER_ERROR);}if (exception instanceof ResteasyViolationException) {ResteasyViolationException resteasyViolationException = ResteasyViolationException.class.cast(exception);Exception e = resteasyViolationException.getException();if (e != null) {return buildResponse(unwrapException(e), MediaType.TEXT_PLAIN, Status.INTERNAL_SERVER_ERROR);} else if (resteasyViolationException.getReturnValueViolations().size() == 0) {return buildViolationReportResponse(resteasyViolationException, Status.BAD_REQUEST);} else {return buildViolationReportResponse(resteasyViolationException, Status.INTERNAL_SERVER_ERROR);}}return buildResponse(unwrapException(exception), MediaType.TEXT_PLAIN, Status.INTERNAL_SERVER_ERROR);}protected Response buildResponse(Object entity, String mediaType, Status status) {ResponseBuilder builder = Response.status(status).entity(entity);builder.type(MediaType.TEXT_PLAIN);builder.header(Validation.VALIDATION_HEADER, "true");return builder.build();}protected Response buildViolationReportResponse(ResteasyViolationException exception, Status status) {ResponseBuilder builder = Response.status(status);builder.header(Validation.VALIDATION_HEADER, "true");// Check standard media types.MediaType mediaType = getAcceptMediaType(exception.getAccept());if (mediaType != null) {builder.type(mediaType);builder.entity(new ViolationReport(exception));return builder.build();}// Default media type.builder.type(MediaType.TEXT_PLAIN);builder.entity(exception.toString());return builder.build();}protected String unwrapException(Throwable t) {StringBuffer sb = new StringBuffer();doUnwrapException(sb, t);return sb.toString();}private void doUnwrapException(StringBuffer sb, Throwable t) {if (t == null) {return;}sb.append(t.toString());if (t.getCause() != null && t != t.getCause()) {sb.append('[');doUnwrapException(sb, t.getCause());sb.append(']');}}private MediaType getAcceptMediaType(List<MediaType> accept) {Iterator<MediaType> it = accept.iterator();while (it.hasNext()) {MediaType mt = it.next();/** application/xml media type causes an exception:* org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response* object of type: org.jboss.resteasy.api.validation.ViolationReport of media type: application/xml*//*if (MediaType.APPLICATION_XML_TYPE.getType().equals(mt.getType())&& MediaType.APPLICATION_XML_TYPE.getSubtype().equals(mt.getSubtype())) {return MediaType.APPLICATION_XML_TYPE;}*/if (MediaType.APPLICATION_JSON_TYPE.getType().equals(mt.getType())&& MediaType.APPLICATION_JSON_TYPE.getSubtype().equals(mt.getSubtype())) {return MediaType.APPLICATION_JSON_TYPE;}}return null;} }

    上面的示例是ExceptionMapper接口的實現,該接口映射ValidationException類型的異常。 驗證失敗時,Validator實現將引發此異常。 如果該異常是ResteasyViolationException的實例, ResteasyViolationException除了HTTP 400/500狀態代碼外,我們ResteasyViolationException在響應中發送ViolationReport 。 這樣可以確保客戶端收到格式化的響應,而不僅僅是從資源傳播的異常。

    產生的輸出類似于以下內容(JSON格式):

    {"exception": null,"fieldViolations": [],"propertyViolations": [],"classViolations": [],"parameterViolations": [{"constraintType": "PARAMETER","path": "getPerson.id","message": "The id must be a valid number","value": "test"}],"returnValueViolations": [] }

    運行和測試

    要運行本文使用的應用程序,請使用Maven構建項目,將其部署到WildFly 8應用程序服務器中,然后將瀏覽器指向http:// localhost:8080 / jaxrs-beanvalidation-javaee7 / 。

    另外,您也可以運行在類中的測試PersonsIT其內置的Arquillian和JUnit的 。 Arquillian將自動啟動嵌入式WildFly 8容器,因此請確保您沒有在同一端口上運行其他服務器。

    建議和改進

  • 我們依靠應用程序服務器代碼來實現自定義驗證程序提供程序。 在GlassFish 4上,需要實現ContextResolver ContextResolver<ValidationConfig> ,而在WildFly 8上,我們需要實現ContextResolver<GeneralValidator> 。 為什么不在Java EE 7規范中定義一個ValidationConfig和GeneralValidator必須實現的接口,而不是依賴于應用程序服務器特定的代碼?
  • 使WildFly 8 Embedded易于使用和通過Maven進行配置。 當前,要使Arquillian可以使用它,需要下載WildFly發行版(org.wildfly:wildfly-dist),將其解壓縮到target文件夾中,并在Surefire / Failsafe Maven插件上配置系統屬性: <systemPropertyVariables><java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager><jboss.home>${wildfly.home}</jboss.home><module.path>${wildfly.home}/modules</module.path> </systemPropertyVariables>

    而對于Glassfish,您只需要定義正確的依賴項(org.glassfish.main.extras:glassfish-embedded-all)。

  • 使RESTEasy成為WildFly Embedded的可傳遞依賴項。 僅通過定義provided WildFly Embedded依賴項,在編譯時就可以使用所有WildFly模塊,這將是一個很好的生產力提升。
  • 當前無法在Eclipse上使用選項Run As >> JUnit Test ,因為必須存在名為jbossHome的系統屬性。 Eclipse不會從Surefire / Failsafe配置中讀取此屬性。 有沒有解決方法?
  • 當使用ExceptionMapper<ValidationException> RESTEasy默認實現時,以application/xml媒體類型請求數據并發生驗證錯誤,將引發以下異常: org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure:Could not find MessageBodyWriter for response object of type:org.jboss.resteasy.api.validation.ViolationReport of media type:application/xml

    這是RESTEasy錯誤嗎?

  • 翻譯自: https://www.javacodegeeks.com/2014/04/validating-jax-rs-resource-data-with-bean-validation-in-java-ee-7-and-wildfly.html

    java jax-rs

    總結

    以上是生活随笔為你收集整理的java jax-rs_在Java EE 7和WildFly中使用Bean验证来验证JAX-RS资源数据的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    五月天狠狠操 | 亚洲激情一区二区三区 | 日韩精品播放 | 不卡日韩av| 激情五月伊人 | 91在线观看视频 | 亚洲精品1234区 | 午夜精品久久久久久久99 | 久久久久亚洲a | 久久久久一区 | 国产精品久久久久久久久久三级 | 日韩天天干 | 亚洲天堂首页 | 福利视频午夜 | 久久99国产精品二区护士 | 中文字幕日韩精品有码视频 | 成人试看120秒| 深爱激情五月婷婷 | 欧美做受高潮电影o | 欧美激情综合五月色丁香小说 | 欧美精品二区 | 免费亚洲片| 国产成人精品午夜在线播放 | 日韩视频中文字幕 | 欧美整片sss | 99在线热播精品免费 | 激情开心网站 | 日韩高清在线一区 | 99欧美精品| 一区二区三区av在线 | 亚州精品在线视频 | 日韩精品专区在线影院重磅 | 999视频在线播放 | 日韩 在线a | 麻豆国产精品va在线观看不卡 | 精品国产99国产精品 | 狠狠狠色丁香婷婷综合久久88 | 欧美日韩一区二区视频在线观看 | 国产 在线 日韩 | 亚洲精品啊啊啊 | 免费成人黄色 | 日日干美女 | 在线 日韩 av | 日韩高清精品免费观看 | 永久免费的av电影 | 超碰在线最新网址 | 久久国产午夜精品理论片最新版本 | 国产破处视频在线播放 | 韩日精品视频 | 中文字幕精 | 免费在线观看国产精品 | 国产精品久久久久久久久久久免费看 | 亚洲韩国一区二区三区 | 99久久精品国 | 日韩免费在线观看网站 | 91麻豆产精品久久久久久 | 国产精品免费在线播放 | 在线观看深夜视频 | 视频在线播放国产 | 成人在线小视频 | 亚洲精品白浆高清久久久久久 | 久久av一区二区三区亚洲 | 免费a级黄色毛片 | 亚洲精品自拍 | 免费在线一区二区 | 久久久五月天 | av中文字幕日韩 | 蜜臀久久99精品久久久无需会员 | 免费av观看 | 国产在线观看a | 免费黄在线看 | 国产色久 | 成人毛片在线视频 | 久久久伦理 | 国产精品久久99综合免费观看尤物 | 综合色中色 | 日本三级在线观看中文字 | 在线日韩精品视频 | 国内久久久久久 | av网站地址 | 二区三区在线观看 | 999毛片| 婷婷丁香六月 | 一区三区视频 | 久综合网 | 国产精品亚洲成人 | 视频在线91 | 欧美日产一区 | 国产午夜精品av一区二区 | 欧美在线视频免费 | 国产精品久久久久毛片大屁完整版 | 国产一级大片在线观看 | 天海翼一区二区三区免费 | 五月婷婷婷婷婷 | 日本久久不卡视频 | 免费午夜av | 国产午夜精品免费一区二区三区视频 | 日韩电影中文,亚洲精品乱码 | 中文字幕亚洲高清 | 欧美成人性战久久 | 亚洲高清av在线 | 天天做天天爱夜夜爽 | 亚洲精品美女久久久 | 奇米影视999 | 欧美成人黄色片 | 久久99在线观看 | 成人a免费| av在线电影免费观看 | 天天看天天干 | 丁香视频在线观看 | 久草网站| 成人久久久久久久久久 | 成人av资源在线 | 在线观看日韩 | 日韩有码网站 | 国产一区二区精品久久91 | 五月婷婷六月丁香 | 久久天天躁夜夜躁狠狠躁2022 | 亚洲涩涩网 | 午夜av激情 | 久久大香线蕉app | 91xav| 久久永久免费视频 | 国产精品一区二区久久精品爱微奶 | 免费黄色a级毛片 | 97精品久久人人爽人人爽 | 日本精品一区二区三区在线观看 | 成人免费观看网站 | 麻豆视频在线免费 | 在线观看免费日韩 | 婷婷成人综合 | 欧美日韩国产精品爽爽 | 天天操天天弄 | 免费福利在线 | 国产精品久久久久一区二区三区 | 日本精品视频在线播放 | 一区二区中文字幕在线 | 中文字幕在线观看完整 | 欧美日韩精品免费观看 | 一区二区三区精品在线 | 天天干天天射天天插 | 亚洲一级黄色 | 国产日韩在线看 | 成 人 黄 色 片 在线播放 | 亚洲高清视频一区二区三区 | 日日夜夜狠狠操 | 九九精品视频在线观看 | 黄网站色视频免费观看 | 亚洲精品视频一二三 | 天堂网av 在线 | 日韩欧美一区二区三区在线 | 国产一级久久 | 91资源在线免费观看 | 亚洲国产精品影院 | 亚洲欧洲美洲av | 国产精品久久久一区二区三区网站 | 精品资源在线 | 午夜视频久久久 | 免费福利影院 | 精品91 | 麻豆成人在线观看 | 日本中文字幕网站 | 成人a视频在线观看 | 最新国产精品拍自在线播放 | 99热亚洲精品 | 日日摸日日添日日躁av | 久久精品美女视频网站 | 成人电影毛片 | 久国产在线播放 | 超碰97免费 | 久久精品中文字幕一区二区三区 | 五月婷婷综合激情网 | 91热视频| 亚洲理论在线观看电影 | 狠狠躁日日躁狂躁夜夜躁 | www.69xx | 久久在线一区 | 成人黄色在线 | 亚洲天天摸日日摸天天欢 | 香蕉成人在线视频 | 国产手机免费视频 | www.av在线播放 | 国内精品久久久久影院一蜜桃 | 国产一级电影在线 | 亚洲精品欧美精品 | 啪啪肉肉污av国网站 | 久久成人亚洲欧美电影 | 国产色婷婷精品综合在线手机播放 | 麻豆视频免费入口 | 日本最新高清不卡中文字幕 | 亚洲免费成人 | 特级西西444www大精品视频免费看 | 黄色成年网站 | 2019av在线视频 | 高清不卡一区二区三区 | 国产精品999久久久 久产久精国产品 | 911国产精品 | 9999国产| 99这里只有精品视频 | 国产精品免费不卡 | 麻豆久久久 | 91色一区二区三区 | 91九色视频在线 | 久久综合色综合88 | 一区二区三区精品久久久 | 国产精品孕妇 | 一区二区三区四区在线 | 国产高清在线观看 | 久久avav | 天天操狠狠操夜夜操 | 国产一区二区三区免费在线 | 精品国产_亚洲人成在线 | 韩国av免费 | 婷婷新五月| 91最新在线 | 欧美性天天| 国内精品久久久久久久久久清纯 | 欧美在线1区| 超碰97中文 | 久久男人中文字幕资源站 | 九九热视频在线播放 | 日韩国产在线观看 | 亚洲欧美日韩精品久久奇米一区 | 欧美无极色 | 狠狠色丁香| 欧美少妇xxx| 91在线一区二区 | 中文字幕在线视频免费播放 | 亚洲精品h| 久在线观看视频 | 国产午夜精品视频 | 国产 中文 日韩 欧美 | 免费看片黄色 | 99视频免费| 香蕉手机在线 | 一级成人在线 | 亚洲欧美日韩国产一区二区三区 | 黄色影院在线免费观看 | 日韩四虎| 国产视频在线看 | 婷婷在线观看视频 | 国产精品久久久久aaaa九色 | 欧美精品一区二区性色 | 国精产品一二三线999 | 国产精品视频全国免费观看 | 日韩在线观看中文字幕 | 欧美日韩中文国产一区发布 | 一区二区视频电影在线观看 | 天堂av免费看 | 99久久精品无免国产免费 | 国产视频精品久久 | 亚洲精品玖玖玖av在线看 | 欧美一区影院 | 亚洲影音先锋 | 99久久99久久精品国产片 | 能在线观看的日韩av | a精品视频 | 超碰九九 | 91精品久久久久久久久 | 91久久国产综合精品女同国语 | 国产一区二区三区免费在线 | 亚洲国产视频直播 | 一区二区av| www国产亚洲精品久久麻豆 | 在线观看国产麻豆 | 亚洲精品1234区| 91麻豆精品国产91久久久更新时间 | 欧美激情视频一区二区三区 | 免费欧美 | 天天干天天在线 | 国产午夜精品视频 | av高清一区二区三区 | 中文字幕亚洲精品在线观看 | 久久99国产精品二区护士 | 五月天,com| 国产一二区免费视频 | 国产福利一区在线观看 | 精品在线视频一区二区三区 | 欧美一级久久 | 国产中文视频 | 在线播放日韩av | 麻豆视频一区二区 | 在线观看视频你懂得 | 99热在线国产 | 亚洲乱亚洲乱妇 | 一区二区三区在线影院 | 久久精久久精 | 婷婷六月综合亚洲 | 天天干天天在线 | 免费国产亚洲视频 | 最近日本字幕mv免费观看在线 | 中文字幕av免费观看 | 国产一二三四在线视频 | 国产正在播放 | 欧美久久久久久久久久久久 | 99爱这里只有精品 | 尤物一区二区三区 | 色欧美成人精品a∨在线观看 | 久久公开免费视频 | 日韩精品视频免费 | 久久免费视频3 | 久久欧美精品 | 99超碰在线播放 | 99热在线国产精品 | 一区二区三区在线不卡 | 91精品国产成 | 国产精品免费一区二区三区 | 经典三级一区 | a级国产毛片 | 久久久久北条麻妃免费看 | 国产老太婆免费交性大片 | 国产免费亚洲 | 久久综合之合合综合久久 | 国产精品一区二区三区观看 | 国产小视频在线观看 | 日韩欧美xx | 国产伦理一区 | 97成人精品区在线播放 | 国产黄色在线观看 | 日韩精品欧美精品 | 久久亚洲二区 | 深爱开心激情 | 久久久久网址 | 亚洲在线a| 开心丁香婷婷深爱五月 | 成人黄色毛片 | 麻豆mv在线观看 | 午夜精品久久久久久久99婷婷 | 精品一区二区电影 | 最新av在线网站 | 久久福利影视 | 日韩一级电影在线 | 综合久久精品 | 99亚洲天堂| 99视频在线精品免费观看2 | 天堂av免费观看 | 99久久精品一区二区成人 | 久久久性 | 久久久久久久久久亚洲精品 | 日韩在线观看网址 | 久久久激情网 | 香蕉视频在线免费 | 一级a性色生活片久久毛片波多野 | 97精产国品一二三产区在线 | 欧美91精品久久久久国产性生爱 | 日韩视频一区二区在线 | 成年人在线看视频 | 欧美日韩一区二区在线 | 日韩精品久久久久久久电影99爱 | 久草精品视频在线看网站免费 | 四虎在线免费观看 | 国产成人三级三级三级97 | 久久精品国产精品 | 超碰在线公开免费 | 婷婷电影在线观看 | 亚洲电影自拍 | www.久久色.com | 免费av视屏| 99在线观看视频网站 | 91精品国产一区二区三区 | 国产成人av电影在线观看 | 91久久偷偷做嫩草影院 | 99在线热播精品免费99热 | 亚洲综合小说电影qvod | 久久久精品网 | 国产午夜精品久久 | 国产精品美女久久久久久久网站 | 色综合天天 | 国产91成人在在线播放 | 国产亚洲精品中文字幕 | 五月天六月婷 | 国产精品午夜av | 天天操夜夜操天天射 | 久久成人国产精品一区二区 | 国产精品久久久久久久久久三级 | 狠狠色综合网站久久久久久久 | 亚洲国产高清在线观看视频 | 日本精品视频免费 | 成人午夜免费剧场 | 又黄又爽又湿又无遮挡的在线视频 | 好看av在线 | 午夜国产一区 | 91黄色在线观看 | 色噜噜在线观看视频 | 国产亚洲字幕 | 欧美福利视频 | 欧美日本啪啪无遮挡网站 | 91麻豆精品国产午夜天堂 | 国产精品视频免费观看 | 99久久99| 免费看国产精品 | 亚洲精品xxx | 97av视频| 国产精彩视频一区 | 成人在线观看网址 | 国产成人综合在线观看 | 欧美一级视频一区 | 欧美日韩午夜在线 | 欧美片网站yy | 成人一区二区在线观看 | 久草免费在线视频 | 久久有精品 | .国产精品成人自产拍在线观看6 | 丁香av| 国产麻豆视频 | 国产视频美女 | 波多野结衣视频一区 | 中文字幕视频三区 | 69夜色精品国产69乱 | 国产亚洲精品美女久久 | 美女视频黄色免费 | 国产伦理久久 | 久久久久五月天 | 天天操福利视频 | 伊人狠狠操 | 久久综合狠狠综合 | 色综合综合 | 国产精品久久一区二区无卡 | 国产免费黄视频在线观看 | 2022国产精品视频 | 成年人视频免费在线播放 | 亚洲电影网站 | 日韩专区av| 久久99国产综合精品 | 97成人精品 | 国产涩图| 能在线观看的日韩av | 色综合天天在线 | 狠狠gao| 日韩欧美精品在线 | 久久国产精品影视 | 天天干天天摸天天操 | 99久久爱 | 成人一级片视频 | 天天天干 | 国产99色| 国产精品久久久久影院 | 五月天狠狠操 | 国产精品久久久久久久久久免费 | 国产精品久久久久久69 | 日韩美女一级片 | 久久高清免费视频 | 国产色一区 | 丁香在线视频 | 日韩欧美在线视频一区二区三区 | 午夜精品一区二区三区在线播放 | 91成人精品一区在线播放69 | 成 人 黄 色 视频播放1 | 精品亚洲欧美无人区乱码 | 久久女教师 | 99精品乱码国产在线观看 | 国产精品原创在线 | 在线免费色 | 色婷婷免费视频 | 正在播放久久 | 国外调教视频网站 | 国产日韩欧美在线观看视频 | 香蕉久久久久久久 | 国内精品久久久久影院一蜜桃 | 日韩av综合网站 | 午夜影视一区 | 国产精品手机在线观看 | 中文视频在线 | 久久精品www人人爽人人 | 99亚洲国产精品 | 免费高清在线一区 | 91丨九色丨91啦蝌蚪老版 | 波多野结衣在线视频免费观看 | 免费视频资源 | 日韩在线理论 | 91精品在线免费观看视频 | 综合网成人 | 久久精品国产成人精品 | 97在线观看免费视频 | 国产一线天在线观看 | 日韩av中文在线 | 免费观看性生活大片3 | 国产中文字幕视频在线 | 日本三级久久久 | 久久福利小视频 | 在线视频1卡二卡三卡 | 国产成人精品一区二区三区免费 | 91精品国产欧美一区二区 | 亚洲一级电影在线观看 | 在线婷婷| 久久另类小说 | 色综合网| 九九精品视频在线观看 | 色综合久久久久久久 | 久久视频国产精品免费视频在线 | www.97色.com| 日韩高清三区 | 国产手机免费视频 | 91精品视频免费在线观看 | 亚洲精品玖玖玖av在线看 | 亚洲 欧美 日韩 综合 | 91在线视频免费观看 | 久久精选| 久久久久久在线观看 | av电影在线免费 | 国产精品男女啪啪 | 免费网站看v片在线a | 久精品视频在线观看 | 午夜av一区 | av成人资源| 精品91视频 | 久久成人福利 | 欧美成人免费在线 | 国产在线高清 | 在线 日韩 av | 久久艹影院 | 99免费看片 | 国产原创av在线 | 成人国产在线 | 欧美日韩高清在线 | 亚洲国产一区在线观看 | 国产精品久久久久久久久久尿 | av大全免费在线观看 | 色狠狠综合 | 久久久国产一区 | 超碰97在线资源站 | 婷婷在线免费视频 | 国产成人一区二区精品非洲 | 国产又粗又猛又爽又黄的视频免费 | 91九色视频在线观看 | 久久96国产精品久久99漫画 | 中文字幕欧美三区 | 日韩精品一区二区三区免费视频观看 | 色天天久久 | 色99视频 | 色综合久久66 | 日韩免费电影一区二区三区 | 国产午夜一级毛片 | 国产成人a亚洲精品 | 激情综合网色播五月 | 久久精品看 | 五月婷婷网站 | av不卡网站| 久久精品国产第一区二区三区 | 精品免费观看视频 | 久久国产精品视频观看 | 国产无套精品久久久久久 | 成人小视频在线播放 | 天堂av免费在线 | 久久超碰99| www.av小说| 成人av中文字幕在线观看 | 日本三级不卡 | 正在播放 久久 | 国产黄色大片免费看 | 99热精品视| 91在线免费视频 | 国产精品麻豆果冻传媒在线播放 | 正在播放日韩 | 激情五月五月婷婷 | 久久不卡电影 | 国产精品男女视频 | 国内精品久久久久影院男同志 | 成人在线免费视频 | 人人爽人人乐 | 国产精品一区在线播放 | 久久天天躁夜夜躁狠狠躁2022 | 亚洲欧洲成人 | 国内精品久久久久久久久久清纯 | 91在线看 | 国产精品久久久久久一区二区 | 免费中文字幕视频 | 中文字幕视频一区二区 | 欧美另类xxx | 久久任你操| 成人a免费视频 | 免费看片在线观看 | 婷婷在线色| 97超碰在线人人 | 一区av在线播放 | 亚洲jizzjizz日本少妇 | 久久精品久久99 | 久久婷婷一区二区三区 | 成人黄色av网站 | 日韩电影一区二区在线 | 天天色天天操综合 | 成人国产精品一区二区 | 亚洲成a人片77777kkkk1在线观看 | 超碰人人在线观看 | 91视频高清 | 久草手机视频 | 成人免费一级 | 精品视频一区在线 | 美女久久久久 | av在线网站免费观看 | 久久在线免费观看 | 中国一级片免费看 | 国产精品第 | 国产成人在线网站 | 欧美成人精品三级在线观看播放 | 奇米先锋 | 最近中文字幕在线 | 日韩高清片 | 911在线 | 美女黄濒 | 国产亚洲精品久久久久动 | 久久精品看 | 国产三级午夜理伦三级 | 成人精品一区二区三区电影免费 | 网站免费黄色 | 日日夜夜操操操操 | 高清av免费一区中文字幕 | 婷婷色五 | www.xxxx欧美 | 亚洲三级黄色 | 亚洲乱码久久久 | 99久久99热这里只有精品 | 91人人爽久久涩噜噜噜 | 国产精品18久久久 | 久久天天操 | 黄色官网在线观看 | 午夜av剧场 | 国产传媒中文字幕 | 91人人揉日日捏人人看 | 麻豆传媒视频在线 | 中国美女一级看片 | 中文字幕亚洲精品日韩 | 国产欧美在线一区二区三区 | 国产精品 日韩 欧美 | 狠狠狠色丁香婷婷综合久久五月 | 人人爽久久涩噜噜噜网站 | 日韩黄在线观看 | 国产精品美女免费视频 | 天天色天天操综合 | 免费在线91 | 99久久久国产精品免费99 | 日本激情视频中文字幕 | 日韩中文字幕免费在线观看 | 日本久久久久久久久久久 | 麻豆精品国产传媒 | 超碰999| 日本精品一区二区三区在线观看 | 日韩在线激情 | 免费看片黄色 | 久久久久国产精品一区二区 | 免费观看www视频 | 91成年视频 | 91在线你懂的 | 久久久免费 | 久久超级碰| 日韩69视频 | a黄色 | 五月综合激情 | 99久久久久 | 亚洲日韩欧美一区二区在线 | 91av蜜桃| 久久久综合九色合综国产精品 | 中文字幕观看在线 | 日本黄区免费视频观看 | 国产女人18毛片水真多18精品 | 一区二区三区观看 | 狠狠狠色丁香婷婷综合久久88 | 久久99久久99精品免观看软件 | 免费视频在线观看网站 | 夜夜操天天干, | 亚洲精品乱码久久久一二三 | 黄色一级性片 | 天堂久久电影网 | 少妇bbw撒尿 | 亚洲成人资源在线观看 | 91桃色在线观看视频 | 五月激情姐姐 | 国产成人一级电影 | 国产精品久久久久久电影 | 一区二区中文字幕在线观看 | 91视频最新网址 | 天天摸夜夜操 | 视频福利在线观看 | 亚洲最新av在线 | 久艹视频在线观看 | 日韩在线一区二区免费 | 久久精品艹 | 九九久久影视 | 狠狠做深爱婷婷综合一区 | 欧美一级在线观看视频 | 色婷在线 | 亚洲国内精品视频 | 天天看天天干 | 91九色精品国产 | 国产精品专区在线观看 | 中文字幕永久在线 | 人人澡视频 | 亚洲成色777777在线观看影院 | 国产一区福利在线 | 久久久久久久久亚洲精品 | 在线日韩一区 | 亚洲精品中文字幕视频 | 97精品国产97久久久久久粉红 | 免费看黄色小说的网站 | 久久久久免费精品国产小说色大师 | 国产一性一爱一乱一交 | 91av视频免费在线观看 | 高清不卡一区二区在线 | 色播99| 岛国av在线不卡 | 97超碰在| 天天色综合天天 | 99人成在线观看视频 | 天天色成人网 | 美腿丝袜av| 91精品久久久久 | 久久久网址| 欧美精品少妇xxxxx喷水 | 99在线热播精品免费99热 | 91精品国产电影 | 婷婷色综合 | 欧美精品色 | 中文网丁香综合网 | 国产在线更新 | 欧美人交a欧美精品 | 美女免费黄视频网站 | 久久久av电影 | 免费性网站 | 日韩一二区在线观看 | 亚州国产精品 | 久久国产露脸精品国产 | 欧美日本在线观看视频 | 国产精品一区二区三区四区在线观看 | 亚洲人人av | 国产免费亚洲高清 | 在线韩国电影免费观影完整版 | 992tv又爽又黄的免费视频 | 国产色视频一区 | 日韩极品在线 | 日本少妇高清做爰视频 | 久久久精品一区二区 | 黄色在线观看免费网站 | 在线亚洲天堂网 | 日韩av电影免费观看 | 亚洲精品一区二区三区在线观看 | 欧美日韩99 | 深爱激情婷婷网 | 欧美 日韩 性 | 国产一级黄色片免费看 | 欧美日韩免费一区二区三区 | 麻豆小视频在线观看 | 欧美成人黄色片 | 欧美另类v| 日本性动态图 | 久久九九国产精品 | 久久不射网站 | 久久精品国产第一区二区三区 | 91大片成人网| 天天插日日插 | 亚洲区精品视频 | 久久久久久久久久久久av | 女女av在线| 91久久国产自产拍夜夜嗨 | 亚洲国产精品久久久久久 | www.亚洲视频.com | 美女黄频视频大全 | 在线视频一区二区 | 久久精品99国产精品 | 欧美一级特黄aaaaaa大片在线观看 | 日韩av看片| 天堂av网在线| 色综合中文字幕 | 国产精品一区二区三区在线看 | 波多野结衣视频一区二区 | 国产 日韩 欧美 中文 在线播放 | 国内三级在线观看 | 国产在线欧美日韩 | 国产成人一区在线 | 午夜91视频 | 亚洲四虎| 韩国一区二区三区视频 | 精品美女久久久久 | 亚洲91中文字幕无线码三区 | 99一区二区三区 | 久久精品一区二区三区国产主播 | 人人艹人人 | 永久黄网站色视频免费观看w | 国产一区免费观看 | 亚洲色图激情文学 | 国产一级特黄毛片在线毛片 | 日韩欧美在线一区 | 国产午夜视频在线观看 | 免费精品国产va自在自线 | 91亚洲综合| 日韩欧美精品在线观看视频 | 天天综合区 | 天海冀一区二区三区 | 就要干b| 欧美在线视频a | 激情综合网五月 | 在线视频黄 | 99av在线视频 | 免费三级黄色 | 国产亚洲久一区二区 | 天天操比 | 五月天丁香综合 | 99久久激情 | 国产性天天综合网 | 国产成人精品亚洲 | 日韩电影在线观看中文字幕 | 成人a级免费视频 | 国产黄色片免费观看 | 99色在线 | 婷婷国产一区二区三区 | 97超视频在线观看 | 在线观看免费日韩 | 国产原创在线 | 亚洲综合在线观看视频 | 8x成人免费视频 | 日日操网| 免费看一级片 | 亚洲人人爱 | 亚洲成人免费观看 | 中文字幕欧美日韩va免费视频 | 91在线公开视频 | 精品国产一区二区三区蜜臀 | 色资源在线 | 午夜.dj高清免费观看视频 | 日韩久久一区 | 毛片在线播放网址 | 中文字幕一区二区三区在线播放 | 五月天婷婷综合 | 国产经典 欧美精品 | 免费视频久久 | 久久av影院| 国产精品成人久久久久久久 | 久久一级片 | 成人va天堂| 久久黄页 | 中文字幕在线视频一区二区 | 看国产黄色片 | 国产亚洲婷婷免费 | 欧美在线观看视频一区二区三区 | 成人黄色电影免费观看 | 色多多视频在线观看 | 国产美女精品视频免费观看 | a级国产乱理论片在线观看 伊人宗合网 | 色网站在线 | 97色国产| 狠狠做深爱婷婷综合一区 | 在线观看国产永久免费视频 | 国产一区在线播放 | 亚洲精品乱码久久久久久蜜桃动漫 | 久久国产精品一区二区 | 九九视频在线观看视频6 | 中文免费在线观看 | 久久影院中文字幕 | 亚洲在线国产 | 欧美在一区| av中文字幕在线看 | 江苏妇搡bbbb搡bbbb | 一本到在线| 狠狠狠狠狠狠狠干 | 中国一级片免费看 | 国产精品99久久久久久久久久久久 | 久草在线视频新 | 亚洲精品玖玖玖av在线看 | 久久婷婷精品视频 | 国产成人不卡 | 亚洲性xxxx| 亚洲午夜剧场 | 久久男人影院 | 中文字幕免费国产精品 | 欧美日韩国产一区二区三区 | 玖玖综合网 | 玖玖在线观看视频 | 四虎海外影库www4hu | 在线影院av | 国产视频一 | 成人黄色中文字幕 | 视频 天天草 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 久久综合丁香 | 国产视频1| 国产成人精品女人久久久 | 午夜精品久久久久久久久久久久久久 | 欧美性色19p| 久久综合9988久久爱 | 欧美一级性生活片 | 97超碰在线久草超碰在线观看 | 五月婷在线观看 | 91人网站 | 国产黄色免费观看 | 精品亚洲va在线va天堂资源站 | 西西4444www大胆艺术 | 丁香婷婷激情国产高清秒播 | 欧美性生活免费看 | 国产不卡免费视频 | 日韩精品一区二区三区不卡 | 99色资源 | 日韩免费一区二区在线观看 | 欧美日韩国产精品一区二区三区 | 国产91对白在线播 | 五月激情综合婷婷 | 五月婷婷久久丁香 | 在线观看亚洲视频 | 一级α片| 国产亚洲精品久久久久久无几年桃 | 国产精品一区二区62 | 麻豆国产视频 | 波多野结衣电影一区二区三区 | 黄色免费在线看 | 九九影视理伦片 | 亚洲国产三级在线观看 | 4438全国亚洲精品观看视频 | 91桃色视频 | 中文字幕在线观看第二页 | 亚洲综合视频在线播放 | 久久国产色| 午夜精品福利在线 | 97超碰人人澡人人爱学生 | 手机av在线免费观看 | 久久爽久久爽久久av东京爽 | 日本精品视频在线观看 | 国产精品欧美久久久久天天影视 | 欧美午夜精品久久久久久孕妇 | 最新日韩中文字幕 | 免费 在线 中文 日本 | 久久99电影 | 久久综合色播五月 | 欧美一级片免费 | 国产 中文 日韩 欧美 | 在线观看 国产 | 夜夜夜夜爽 | 国产黄色精品在线 | 亚洲第一区精品 | 国产婷婷一区二区 | 亚洲最大av网 | 在线只有精品 | 99久久9| 亚洲免费一级电影 | 久 久久影院 | 免费69视频 | 激情综合网五月激情 | 黄色不卡av | 黄色影院在线免费观看 | av黄色成人 | 黄网站色 | 人人干人人草 | 免费电影一区二区三区 | 中文字幕中文字幕在线中文字幕三区 | 久久网站av | 伊甸园av在线 | 一区二区丝袜 | 性色av一区二区三区在线观看 | 成人免费共享视频 | 欧美日韩高清一区二区 国产亚洲免费看 | 亚洲高清在线视频 | 国内少妇自拍视频一区 | 欧美日韩国产精品一区二区 | 国产一区二区视频在线播放 | 国产精品久99 | 国产精品videoxxxx | 中文字幕在线观看视频一区 | 日韩在线观看你懂的 | 黄色的视频网站 | 亚洲免费视频观看 | 久久久免费毛片 | 黄色影院在线免费观看 | 中文一区在线 | 日韩欧美在线视频一区二区三区 | 亚洲精品国产精品国产 | 五月婷婷丁香综合 | av手机在线播放 | 欧美日韩在线视频一区 | 久草视频2 | 久久国产精品99久久久久 | 国产精品一区二区久久精品爱微奶 | 激情五月婷婷综合网 | 91丨九色丨91啦蝌蚪老版 | 免费三级网| 在线观看国产一区二区 | 亚洲h在线播放在线观看h | 亚州国产精品久久久 | 中文字幕av全部资源www中文字幕在线观看 | 国产一级片免费视频 | 久久少妇av| 久久精品精品电影网 | 97超碰免费在线观看 | 久久久免费观看 | www.av在线播放 | 久久视频在线观看免费 | 亚洲午夜久久久影院 | 久久国产欧美日韩 | 丁香六月av | 久久久精品二区 | 在线免费国产视频 | 日韩在线高清视频 | 午夜精品久久久久久久久久久久 | 五月婷婷中文网 | 国产精品a久久久久 | 在线观看一级片 | 国产精品3| av片子在线观看 | 欧美日bb| 丁香六月国产 | 美女视频免费精品 | 一本到在线 |