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

談?wù)凧ava中自定義注解及使用場(chǎng)景

開(kāi)發(fā) 后端
本文將先從自定義注解的基礎(chǔ)概念說(shuō)起,然后開(kāi)始實(shí)戰(zhàn),寫(xiě)小段代碼實(shí)現(xiàn)自定義注解+攔截器,自定義注解+AOP。

Java自定義注解一般使用場(chǎng)景為:自定義注解+攔截器或者AOP,使用自定義注解來(lái)自己設(shè)計(jì)框架,使得代碼看起來(lái)非常優(yōu)雅。本文將先從自定義注解的基礎(chǔ)概念說(shuō)起,然后開(kāi)始實(shí)戰(zhàn),寫(xiě)小段代碼實(shí)現(xiàn)自定義注解+攔截器,自定義注解+AOP。

一. 什么是注解(Annotation)

Java注解是什么,以下是引用自維基百科的內(nèi)容

Java注解又稱(chēng)Java標(biāo)注,是JDK5.0版本開(kāi)始支持加入源代碼的特殊語(yǔ)法元數(shù)據(jù)。

Java語(yǔ)言中的類(lèi)、方法、變量、參數(shù)和包等都可以被標(biāo)注。和Javadoc不同,Java標(biāo)注可以通過(guò)反射獲取標(biāo)注內(nèi)容。在編譯器生成類(lèi)文件時(shí),標(biāo)注可以被嵌入到字節(jié)碼中。Java虛擬機(jī)可以保留標(biāo)注內(nèi)容,在運(yùn)行時(shí)可以獲取到標(biāo)注內(nèi)容。當(dāng)然它也支持自定義Java標(biāo)注。

二. 注解體系圖

元注解:java.lang.annotation中提供了元注解,可以使用這些注解來(lái)定義自己的注解。主要使用的是Target和Retention注解

注解處理類(lèi):既然上面定義了注解,那得有辦法拿到我們定義的注解啊。java.lang.reflect.AnnotationElement接口則提供了該功能。注解的處理是通過(guò)java反射來(lái)處理的。

如下,反射相關(guān)的類(lèi)Class, Method, Field都實(shí)現(xiàn)了AnnotationElement接口。

因此,只要我們通過(guò)反射拿到Class, Method, Field類(lèi),就能夠通過(guò)getAnnotation(Class<T>)拿到我們想要的注解并取值。

搜索Java知音公眾號(hào),回復(fù)“后端面試”,送你一份Java面試題寶典

三. 常用元注解

Target:描述了注解修飾的對(duì)象范圍,取值在java.lang.annotation.ElementType定義,常用的包括:

  •  METHOD:用于描述方法
  •  PACKAGE:用于描述包
  •  PARAMETER:用于描述方法變量
  •  TYPE:用于描述類(lèi)、接口或enum類(lèi)型

Retention: 表示注解保留時(shí)間長(zhǎng)短。取值在java.lang.annotation.RetentionPolicy中,取值為:

  •  SOURCE:在源文件中有效,編譯過(guò)程中會(huì)被忽略
  •  CLASS:隨源文件一起編譯在class文件中,運(yùn)行時(shí)忽略
  •  RUNTIME:在運(yùn)行時(shí)有效

只有定義為RetentionPolicy.RUNTIME時(shí),我們才能通過(guò)注解反射獲取到注解。

所以,假設(shè)我們要自定義一個(gè)注解,它用在字段上,并且可以通過(guò)反射獲取到,功能是用來(lái)描述字段的長(zhǎng)度和作用。 

  1. @Target(ElementType.FIELD)  //  注解用于字段上  
  2. @Retention(RetentionPolicy.RUNTIME)  // 保留到運(yùn)行時(shí),可通過(guò)注解獲取  
  3. public @interface MyField {  
  4.     String description();  
  5.     int length();  

四. 示例-反射獲取注解

先定義一個(gè)注解: 

  1. @Target(ElementType.FIELD)  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. public @interface MyField {  
  4.     String description();  
  5.     int length();  

通過(guò)反射獲取注解 

  1. public class MyFieldTest {  
  2.     //使用我們的自定義注解  
  3.     @MyField(description = "用戶(hù)名"length = 12 
  4.     private String username;  
  5.     @Test  
  6.     public void testMyField(){  
  7.         // 獲取類(lèi)模板  
  8.         Class c = MyFieldTest.class;  
  9.         // 獲取所有字段  
  10.         for(Field f : c.getDeclaredFields()){  
  11.             // 判斷這個(gè)字段是否有MyField注解  
  12.             if(f.isAnnotationPresent(MyField.class)){  
  13.                 MyField annotation = f.getAnnotation(MyField.class);  
  14.                 System.out.println("字段:[" + f.getName() + "], 描述:[" + annotation.description() + "], 長(zhǎng)度:[" + annotation.length() +"]");  
  15.             }  
  16.         }  
  17.     }  

運(yùn)行結(jié)果

應(yīng)用場(chǎng)景一:自定義注解+攔截器 實(shí)現(xiàn)登錄校驗(yàn)

接下來(lái),我們使用springboot攔截器實(shí)現(xiàn)這樣一個(gè)功能,如果方法上加了@LoginRequired,則提示用戶(hù)該接口需要登錄才能訪問(wèn),否則不需要登錄。

首先定義一個(gè)LoginRequired注解 

  1. @Target(ElementType.METHOD)  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. public @interface LoginRequired {  

然后寫(xiě)兩個(gè)簡(jiǎn)單的接口,訪問(wèn)sourceA,sourceB資源 

  1. @RestController  
  2. public class IndexController {  
  3.     @GetMapping("/sourceA")  
  4.     public String sourceA(){  
  5.         return "你正在訪問(wèn)sourceA資源";  
  6.     } 
  7.     @GetMapping("/sourceB")  
  8.     public String sourceB(){  
  9.         return "你正在訪問(wèn)sourceB資源";  
  10.     }  

沒(méi)添加攔截器之前成功訪問(wèn)

實(shí)現(xiàn)spring的HandlerInterceptor 類(lèi)先實(shí)現(xiàn)攔截器,但不攔截,只是簡(jiǎn)單打印日志,如下: 

  1. public class SourceAccessInterceptor implements HandlerInterceptor {  
  2.     @Override  
  3.     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
  4.         System.out.println("進(jìn)入攔截器了");  
  5.         return true; 
  6.      }  
  7.     @Override  
  8.     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {  
  9.     }  
  10.     @Override  
  11.     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {  
  12.     }  

實(shí)現(xiàn)spring類(lèi)WebMvcConfigurer,創(chuàng)建配置類(lèi)把攔截器添加到攔截器鏈中 

  1. @Configuration  
  2. public class InterceptorTrainConfigurer implements WebMvcConfigurer {  
  3.     @Override  
  4.     public void addInterceptors(InterceptorRegistry registry) {  
  5.         registry.addInterceptor(new SourceAccessInterceptor()).addPathPatterns("/**");  
  6.     }  

攔截成功如下

在sourceB方法上添加我們的登錄注解@LoginRequired 

  1. @RestController  
  2. public class IndexController {  
  3.     @GetMapping("/sourceA")  
  4.     public String sourceA(){  
  5.         return "你正在訪問(wèn)sourceA資源";  
  6.     }  
  7.     @LoginRequired  
  8.     @GetMapping("/sourceB")  
  9.     public String sourceB(){  
  10.         return "你正在訪問(wèn)sourceB資源";  
  11.     }  

簡(jiǎn)單實(shí)現(xiàn)登錄攔截邏輯 

  1. @Override  
  2.     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
  3.         System.out.println("進(jìn)入攔截器了");  
  4.         // 反射獲取方法上的LoginRequred注解  
  5.         HandlerMethod handlerMethod = (HandlerMethod)handler;  
  6.         LoginRequired loginRequired = handlerMethod.getMethod().getAnnotation(LoginRequired.class);  
  7.         if(loginRequired == null){  
  8.             return true;  
  9.         } 
  10.         // 有LoginRequired注解說(shuō)明需要登錄,提示用戶(hù)登錄  
  11.         response.setContentType("application/json; charset=utf-8");  
  12.         response.getWriter().print("你訪問(wèn)的資源需要登錄");  
  13.         return false;  
  14.     } 

運(yùn)行成功,訪問(wèn)sourceB時(shí)需要登錄了,訪問(wèn)sourceA則不用登錄

應(yīng)用場(chǎng)景二:自定義注解+AOP 實(shí)現(xiàn)日志打印

先導(dǎo)入切面需要的依賴(lài)包 

  1. <dependency>  
  2.       <groupId>org.springframework.boot</groupId>  
  3.      <artifactId>spring-boot-starter-aop</artifactId>  
  4. </dependency> 

定義一個(gè)注解@MyLog 

  1. @Target(ElementType.METHOD)  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. public @interface MyLog {   

定義一個(gè)切面類(lèi),見(jiàn)如下代碼注釋理解: 

  1. @Aspect // 1.表明這是一個(gè)切面類(lèi)  
  2. @Component  
  3. public class MyLogAspect {  
  4.     // 2. PointCut表示這是一個(gè)切點(diǎn),@annotation表示這個(gè)切點(diǎn)切到一個(gè)注解上,后面帶該注解的全類(lèi)名  
  5.     // 切面最主要的就是切點(diǎn),所有的故事都圍繞切點(diǎn)發(fā)生  
  6.     // logPointCut()代表切點(diǎn)名稱(chēng)  
  7.     @Pointcut("@annotation(me.zebin.demo.annotationdemo.aoplog.MyLog)")  
  8.     public void logPointCut(){};  
  9.     // 3. 環(huán)繞通知  
  10.     @Around("logPointCut()")  
  11.     public void logAround(ProceedingJoinPoint joinPoint){  
  12.         // 獲取方法名稱(chēng)  
  13.         String methodName = joinPoint.getSignature().getName();  
  14.         // 獲取入?yún)?nbsp; 
  15.         Object[] param = joinPoint.getArgs();  
  16.         StringBuilder sb = new StringBuilder();  
  17.         for(Object o : param){  
  18.            &nbsp;sb.append(o + "; ");  
  19.         }  
  20.         System.out.println("進(jìn)入[" + methodName + "]方法,參數(shù)為:" +&nbsp;sb.toString());  
  21.         // 繼續(xù)執(zhí)行方法  
  22.         try {  
  23.             joinPoint.proceed();  
  24.         } catch (Throwable throwable) {  
  25.             throwable.printStackTrace();  
  26.         }  
  27.         System.out.println(methodName + "方法執(zhí)行結(jié)束"); 
  28.     }  

在步驟二中的IndexController寫(xiě)一個(gè)sourceC進(jìn)行測(cè)試,加上我們的自定義注解: 

  1. @MyLog  
  2. @GetMapping("/sourceC/{source_name}")  
  3. public String sourceC(@PathVariable("source_name") String sourceName){  
  4.     return "你正在訪問(wèn)sourceC資源";  

啟動(dòng)springboot web項(xiàng)目,輸入訪問(wèn)地址

 

 

責(zé)任編輯:龐桂玉 來(lái)源: Java知音
相關(guān)推薦

2024-12-27 15:37:23

2023-03-30 16:16:00

Java自定義注解開(kāi)發(fā)

2017-08-03 17:00:54

Springmvc任務(wù)執(zhí)行器

2024-10-14 17:18:27

2021-12-30 12:30:01

Java注解編譯器

2025-04-24 10:40:46

CatalogFlink SQL元數(shù)據(jù)

2022-07-29 07:48:15

HTTP常用狀態(tài)碼

2023-10-11 07:57:23

springboot微服務(wù)

2023-10-24 13:48:50

自定義注解舉值驗(yàn)證

2020-02-14 13:50:32

JavaScript前端技術(shù)

2011-05-16 15:49:58

JAVA

2009-05-18 13:07:44

類(lèi)隱藏Java關(guān)鍵字

2015-06-10 10:54:24

自定義路PHP

2024-01-30 09:43:43

Java緩存技術(shù)

2021-11-23 15:06:42

Kubernetes 運(yùn)維開(kāi)源

2025-07-24 06:34:46

SpringBoot代碼開(kāi)發(fā)

2023-10-09 07:37:01

2023-06-28 08:05:46

場(chǎng)景vue3自定義

2022-02-17 07:10:39

Nest自定義注解

2020-11-25 11:20:44

Spring注解Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

妖精视频一区二区三区| 激情影院在线观看| 国产一区白浆| 亚洲图片制服诱惑| 一级淫片在线观看| 美足av综合网| 国产亚洲人成网站| 亚洲自拍偷拍色图| 中文字幕精品三级久久久| 精品国产欧美日韩| 日韩欧美国产一区在线观看| 欧美三级在线观看视频| 1769在线观看| heyzo一本久久综合| 国产精品男女猛烈高潮激情| 黄色一级视频免费观看| 蜜桃精品wwwmitaows| 51久久夜色精品国产麻豆| 奇米精品一区二区三区| 免费观看在线黄色网| 波波电影院一区二区三区| 国产精品高潮呻吟视频| 久久久久久久蜜桃| 日韩欧美精品一区| 日韩精品免费观看| 小早川怜子一区二区三区| 色是在线视频| 亚洲激情综合网| 日韩影院一区| 午夜影院免费视频| 国产成人在线免费观看| 国产精品欧美亚洲777777| 国产手机在线视频| 欧美日韩亚洲一区| 最新国产精品亚洲| 性少妇bbw张开| 午夜精品久久久久久毛片| 日韩欧美福利视频| 亚洲熟妇无码另类久久久| 很黄的网站在线观看| 欧美激情一区二区三区在线| 精品视频在线观看| www.我爱av| 狠狠色狠狠色综合日日91app| 欧美亚洲另类制服自拍| 国产在线观看免费av| 亚洲成人二区| 日韩最新中文字幕电影免费看| 国产精品揄拍100视频| 9l亚洲国产成人精品一区二三 | 婷婷久久伊人| 香蕉视频成人在线| www.亚洲激情.com| 精品不卡一区二区三区| 国模人体一区二区| 福利一区福利二区| 国产99午夜精品一区二区三区| 国产精品一区二区av白丝下载 | 在线免费观看视频黄| 在线视频超级| 日韩人体视频一二区| 高清在线观看免费| 日本免费久久| 欧美亚洲综合在线| 亚洲精品www.| 色综合久久久| 欧美精品视频www在线观看 | 777午夜精品电影免费看| 欧美性猛交xxxx乱大交蜜桃| 国产成人精品视频免费看| 欧美裸体视频| 在线观看日韩精品| 不卡的在线视频| 免费观看亚洲天堂| 精品国产一区二区精华| 国产不卡一二三| 私拍精品福利视频在线一区| 亚洲免费一级电影| 91社区视频在线观看| 91精品一区二区三区综合| 欧美俄罗斯乱妇| 狠狠躁夜夜躁人人爽天天高潮| 99在线热播精品免费99热| 日本a级片电影一区二区| 99re国产在线| 极品少妇xxxx精品少妇| 高清国产在线一区| 三级视频在线| 国产精品久久福利| 中国丰满熟妇xxxx性| 毛片在线网站| 欧美系列在线观看| 麻豆传媒在线看| 亚洲国产最新| x99av成人免费| 国产成年人免费视频| 日本成人在线电影网| 亚洲最大福利视频网| 午夜黄色小视频| 国产精品乱人伦中文| 日韩久久久久久久久久久久| 中文字幕资源网在线观看免费 | wwwav网站| 久久嫩草精品久久久久| 国产福利片一区二区| f2c人成在线观看免费视频| 在线免费观看日本欧美| 黄页网站在线看| 国产精品免费不| 色综合久久精品亚洲国产| 婷婷激情五月综合| 成人美女视频在线观看| 亚洲欧美日韩国产yyy| 91超碰在线免费| 欧美日韩中文一区| 在线天堂www在线国语对白| 久久网站免费观看| 欧美孕妇毛茸茸xxxx| 国产ts变态重口人妖hd| 国产欧美日韩亚州综合| 青青在线免费观看| 国产精选久久| 中文精品99久久国产香蕉| 日韩 欧美 精品| 国产一区二三区好的| 欧洲一区二区日韩在线视频观看免费 | 欧美二区三区| 丁香高清在线观看完整电影视频| 欧美特级限制片免费在线观看| 无码精品一区二区三区在线播放| 亚洲啊v在线观看| 国产精品网站入口| 美州a亚洲一视本频v色道| 亚洲国产乱码最新视频 | 免费日韩成人| 亚洲欧美另类人妖| 日本道在线观看| 丁香激情综合国产| 女人床在线观看| 狂野欧美xxxx韩国少妇| 日韩在线免费视频| 最新在线中文字幕| 国产人久久人人人人爽| 国产熟女高潮视频| 中文有码一区| 45www国产精品网站| 欧美熟妇乱码在线一区| 亚洲韩国精品一区| 国产av一区二区三区传媒| 亚洲天堂一区二区三区四区| 国产精品三级久久久久久电影| 久久精品蜜桃| 一本大道av一区二区在线播放| 一起草在线视频| 99在线|亚洲一区二区| 精品无人区一区二区三区| 黄视频免费在线看| 日韩精品视频在线免费观看| www.毛片.com| 久久精品综合网| 亚洲天堂av线| 久久裸体网站| 亚洲综合在线小说| 麻豆蜜桃在线| 亚洲国产三级网| 啦啦啦免费高清视频在线观看| 久久综合九色综合97婷婷| 农村妇女精品一二区| 黑人操亚洲人| 成人福利在线观看| 久久电影网站| 精品中文视频在线| 欧美三级网站在线观看| 成人欧美一区二区三区小说| 最好看的中文字幕| 中文在线不卡| 日韩欧美亚洲日产国| 黄色成人在线观看网站| 精品自在线视频| 天堂网av在线播放| 欧美影院一区二区| 国产女人18水真多毛片18精品| 国产精品1区2区3区| 亚洲熟妇av一区二区三区漫画| 区一区二视频| 99久久99久久精品国产片| 国产高清中文字幕在线| 国产一区二区日韩| 精品国产999久久久免费| 狠狠操狠狠色综合网| 91社区视频在线观看| 国产成人av资源| 一级黄色香蕉视频| 午夜久久99| 欧美黄色直播| 精品一区二区三区中文字幕视频| 久久免费高清视频| av在线电影院| 亚洲国产成人精品久久| 久草视频在线免费| 亚洲国产欧美在线| 综合 欧美 亚洲日本| 成人18精品视频| 天天综合网久久| 国产日韩一区| 欧美另类videosbestsex日本| 一区二区三区韩国免费中文网站| 成人黄色在线免费| 亚洲天堂导航| 欧美国产日韩在线| 亚洲xxxxxx| 国产视频久久网| a级片在线免费看| 在线精品视频一区二区| 国产真实的和子乱拍在线观看| 中日韩av电影| av网站免费在线播放| 国产二区国产一区在线观看| 黄色成人免费看| 国产精品久久久久久模特 | 疯狂做受xxxx欧美肥白少妇| 一级免费黄色录像| 久久久久久久久久久久久夜| 丰满少妇一区二区三区专区| 久久99精品久久久久久动态图| 国产综合av在线| 国产一区日韩欧美| 亚洲国产精品女人| 日韩久久精品| 天堂精品一区二区三区| 亚洲第一二三区| 精品视频一区二区三区四区| 一区二区三区视频播放| 川上优av一区二区线观看 | 亚洲一区中文字幕在线观看| 日本欧美韩国| 国产ts人妖一区二区三区| 国产777精品精品热热热一区二区| 欧美精品性视频| 3d玉蒲团在线观看| 欧美成人黑人xx视频免费观看| 网友自拍视频在线| 色多多国产成人永久免费网站| 电影在线一区| 亚洲区一区二区| 毛片免费在线| 亚洲图片制服诱惑| 大胆av不用播放器在线播放| 精品偷拍一区二区三区在线看| 神马午夜在线观看| 日韩电影免费观看在线观看| 午夜影院在线视频| 亚洲日本欧美中文幕| 人成在线免费视频| 亚洲精品国产电影| 欧美黄色小说| 尤物99国产成人精品视频| 97电影在线看视频| 色噜噜狠狠色综合网图区 | 久久久久女教师免费一区| 伊人福利在线| 97在线精品国自产拍中文| 九色porny自拍视频在线观看| 97涩涩爰在线观看亚洲| 亚洲v.com| 国产精品高潮粉嫩av| 日本电影久久久| 成人深夜直播免费观看| 一区二区三区免费在线看| 狠狠色噜噜狠狠狠狠色吗综合 | 日韩啊v在线| 精品亚洲成人| ijzzijzzij亚洲大全| 韩日精品在线| 亚洲国产精品久久久久爰色欲| 日韩中文字幕一区二区三区| 亚洲精品自拍网| 国产一区二区不卡老阿姨| 扒开伸进免费视频| 久久久美女毛片| 秋霞欧美一区二区三区视频免费| 亚洲欧美日韩国产另类专区 | 一本色道久久加勒比精品| 中文字幕一区二区三区波野结| 日韩一级片网站| 性感美女一级片| 中文字幕精品视频| 久草在线资源站资源站| 日本欧美一二三区| 精品国产亚洲一区二区三区大结局| 国产精品乱子乱xxxx| 九九久久成人| 8x8x华人在线| 久久综合网络一区二区| 日本中文字幕在线不卡| 久久午夜色播影院免费高清| 国产精品精品软件男同| 婷婷成人激情在线网| 一区二区日韩在线观看| 亚洲成人999| 日韩黄色影院| 91精品国产777在线观看| 欧美videos粗暴| 久草一区二区| 中文字幕日韩一区二区不卡| 97av视频在线观看| 国产成人在线色| 少妇视频一区二区| 色综合久久中文字幕综合网| 国产黄色一区二区| 最近2019中文字幕一页二页| 国产va在线视频| 51国偷自产一区二区三区| 欧美日中文字幕| 国产黄色片免费在线观看| 奇米在线7777在线精品| av网站有哪些| 亚洲无线码一区二区三区| 97精品人妻一区二区三区香蕉| 亚洲免费视频在线观看| av岛国在线| 97中文在线| 久久久久国产精品| 亚洲一区二区三区四区五区xx| zzijzzij亚洲日本少妇熟睡| 国产黄在线免费观看| 欧美日韩不卡在线| 成年在线观看免费人视频| 欧美亚洲午夜视频在线观看| 中文字幕日韩在线| 视频一区二区视频| 久88久久88久久久| 国产精品成人在线视频| 色婷婷av一区二区三区之一色屋| 天堂av手机版| 97超级碰碰碰久久久| 懂色av一区二区| 国产一区 在线播放| 国产精品 日产精品 欧美精品| 女人裸体性做爰全过| 91成人在线精品| 青青青草网站免费视频在线观看| 性欧美亚洲xxxx乳在线观看| jizz久久精品永久免费| 欧美与动交zoz0z| 国产中文字幕精品| 少妇被躁爽到高潮无码文| 在线不卡免费欧美| av网站在线免费看推荐| 91精品视频在线| 欧美极品一区二区三区| 日韩高清在线一区二区| 亚洲精品欧美综合四区| 99久久精品国产一区色| 久久久999精品| 国产一区二区三区国产精品| 最近中文字幕免费mv| 国产一区二区精品在线观看| 欧美精品一级片| 亚洲韩国青草视频| 午夜影院一区| 日本在线一区| 美女视频一区二区| 三级在线观看免费大全| 日韩欧美视频一区| 国产美女精品写真福利视频| 久久久www免费人成黑人精品| 久久国产日本精品| 欧美一级特黄高清视频| 日韩精品一区国产麻豆| 国产一二三在线| 欧洲一区二区在线| 麻豆91在线观看| 久久综合色综合| 日韩成人av在线播放| 搜成人激情视频| 91制片厂免费观看| 成人午夜视频在线| 亚洲 欧美 中文字幕| 日韩中文字幕久久| 澳门成人av| 国产裸体舞一区二区三区| 中文字幕av一区二区三区免费看 | 欧美一卡二卡三卡| 爱看av在线| 日韩久久不卡| 国产精品一品视频| 三级视频在线观看| 久久香蕉频线观| 日韩欧美在线精品| 国产又黄又猛的视频| 亚洲成人你懂的| www黄在线观看| 国产高清精品一区二区| 水野朝阳av一区二区三区| 天堂网avav| 亚洲午夜国产成人av电影男同| 欧美a级大片在线| 麻豆av免费在线| 一区二区三区中文字幕精品精品|