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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring 异常处理三种方式

發(fā)布時間:2025/3/12 javascript 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 异常处理三种方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Spring 異常處理三種方式

  • 異常處理方式一. @ExceptionHandler
  • 異常處理方式二. 實現(xiàn)HandlerExceptionResolver接口
  • 異常處理方式三. @ControllerAdvice+@ExceptionHandler
  • 三種方式比較說明(強烈推薦各位看一下,我覺得自己總結的比較多,嘿嘿,不對之處請指出)
  • 文章目錄

    • Spring 異常處理三種方式
      • 問題描述: 假如對異常不進行處理?
    • 異常處理的方式有三種:
      • 一. Controller層面上異常處理 @ExceptionHandler
        • 原理說明:
      • 二. 全局級別異常處理器 實現(xiàn)HandlerExceptionResolver接口
        • 原理分析:
      • 三.全局級別異常處理器 @ControllerAdvice+@ExceptionHandler
      • 四.比較說明.

    問題描述: 假如對異常不進行處理?

    假如SpringMvc我們不對異常進行任何處理, 界面上顯示的是這樣的.

    異常處理的方式有三種:

    一. Controller層面上異常處理 @ExceptionHandler

    說明:針對可能出問題的Controller,新增注解方法@ExceptionHandler.

    @Controller @RequestMapping("/testController") public class TestController {@RequestMapping("/demo1")@ResponseBodypublic Object demo1(){int i = 1 / 0;return new Date();}@ExceptionHandler({RuntimeException.class})public ModelAndView fix(Exception ex){System.out.println("do This");return new ModelAndView("error",new ModelMap("ex",ex.getMessage()));} }

    注意事項:

  • 一個Controller下多個@ExceptionHandler上的異常類型不能出現(xiàn)一樣的,否則運行時拋異常.
    Ambiguous @ExceptionHandler method mapped for;
  • @ExceptionHandler下方法返回值類型支持多種,常見的ModelAndView,@ResponseBody注解標注,ResponseEntity等類型都OK.
  • 原理說明:

    代碼片段位于:org.springframework.web.servlet.DispatcherServlet#doDispatch

    執(zhí)行@RequestMapping方法拋出異常后,Spring框架 try-catch的方法捕獲異常, 正常邏輯發(fā)不發(fā)生異常都會走processDispatchResult流程 ,區(qū)別在于異常的參數(shù)是否為null .

    HandlerExecutionChain mappedHandler = null;Exception dispatchException = null;ModelAndView mv = null;try{mappedHandler=getHandler(request); //根據(jù)請求查找handlerMapping找到controllerHandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());//找到處理器適配器HandlerAdapterif(!mappedHandler.applyPreHandle(request,response)){ //攔截器preHandlereturn ;} mv=ha.handle(request,response); //調(diào)用處理器適配器執(zhí)行@RequestMapping方法mappedHandler.applyPostHandle(request,response,mv); //攔截器postHandle}catch(Exception ex){dispatchException=ex;}processDispatchResult(request,response,mappedHandler,mv,dispatchException) //將異常信息傳入了

    代碼片段位于:org.springframework.web.servlet.DispatcherServlet#processDispatchResult

    如果@RequestMapping方法拋出異常,攔截器的postHandle方法不執(zhí)行,進入 processDispatchResult,判斷入?yún)?dispatchException,不為null , 代表發(fā)生異常,調(diào)用processHandlerException處理,

    代碼片段位于:org.springframework.web.servlet.DispatcherServlet#processHandlerException

    this當前對象指dispatchServlet,handlerExceptionResolvers可以看到有三個HandlerExceptionResolver, 這三個是<mvc:annotation-driven />幫我們注冊的. 遍歷有序集合handlerExceptionResolvers,調(diào)用接口的resolveException方法.

    記錄mvc:annotation-driven/注冊的第一個 HandlerExceptionResolver : ExceptionHandlerExceptionResolver, 繼承關系如下面所示.

    代碼片段位于:org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver#resolveException

    AbstractHandlerExceptionResolver 和 AbstractHandlerMethodExceptionResolver名字看起來非常相似. 這里AbstractHandlerExceptionResolver 的shouldApplyTo都返回 true, logException用來記錄日志、prepareResponse方法用來設置response的Cache-Control. 異常處理方法就位于doResolveException.

    代碼片段位于:org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver#shouldApplyTo

    接口方法實現(xiàn)是AbstractHandlerExceptionResolver的resolveException,先判斷 shouldApplyTo, AbstractHandlerExceptionResolver 和子類AbstractHandlerMethodExceptionResolver都實現(xiàn)了shouldApplyTo方法,子類的shouldApplyTo都調(diào)用父類AbstractHandlerExceptionResolver的shouldApplyTo.

    查看父類AbstractHandlerExceptionResolver的shouldApplyTo方法.

    代碼片段位于:org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver#shouldApplyTo

    Spring初始化的時候并沒有額外配置 , 所以mappedHandlers和mappedHandlerClasses都為null, 可以在這塊擴展進行篩選 ,AbstractHandlerExceptionResolver提供了 setMappedHandlerClasses 、setMappedHandlers用于擴展.

    代碼片段位于:org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver#doResolveException

    代碼片段位于:org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#doResolveHandlerMethodException

    似曾相識的ServletInvocableHandlerMethod,getExceptionHandlerMethod目的就是獲取 針對異常的處理方法,沒找到的話這里就直接返回了,找到了執(zhí)行異常處理方法;

    之后同Spring請求方法執(zhí)行一樣的處理方式,設置argumentResolvers、returnValueHandlers,之后進行調(diào)用異常處理方法,

    @ExceptionHandler的方法入?yún)⒅С?#xff1a;Exception ;SessionAttribute 、 RequestAttribute注解 ; HttpServletRequest 、HttpServletResponse、HttpSession.

    @ExceptionHandler方法返回值常見的可以是: ModelAndView 、@ResponseBody注解、ResponseEntity;

    getExceptionHandlerMethod說明: 獲取對應的@ExceptionHandler方法,封裝成ServletInvocableHandlerMethod返回.

    代碼片段位于:org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#getExceptionHandlerMethod

    exceptionHandlerCache是針對Controller層面的@ExceptionHandler的處理方式,而exceptionHandlerAdviceCache是針對@ControllerAdvice的處理方式. 這兩個屬性都位于ExceptionHandlerExceptionResolver中.

    handlerType指代Controller的class屬性,嘗試從緩存A exceptionHandlerCache 中根據(jù)controller的class 查找ExceptionHandlerMethodResolver; 緩存A之前沒存儲過Controller的class ,所以新建一個ExceptionHandlerMethodResolver 加入緩存中. ExceptionHandlerMethodResolver 的初始化工作一定做了某些工作!

    resolveMethod方法:根據(jù)異常對象讓 ExceptionHandlerMethodResolver 解析得到 method , 匹配到異常處理方法 就直接封裝成對象 ServletInvocableHandlerMethod ; 就不會再去走@ControllerAdvice里的異常處理器了. 這里說明了,ExceptionHandlerMethodResolver 初始化的時候完成存儲 @ExceptionHandler.

    查看ExceptionHandlerMethodResolver 初始化工作內(nèi)容:

    代碼片段位于:org.springframework.web.method.annotation.ExceptionHandlerMethodResolver#ExceptionHandlerMethodResolver

    handlerType為傳入的Controller的class屬性,通過EXCEPTION_HANDLER_METHODS選出 class 中標注@ExceptionHandler的方法,解析@Exception注解的value值(class類型的數(shù)組),并加入到當前ExceptionHandlerMethodResolver的mappedMethods集合中,key為 異常類型 ,value為 method.

    如果@ExceptionHandler的 value屬性為空,就會將方法入?yún)⒅械腡hrowable的子類作為異常類型. @ExceptionHandler的value屬性和方法入?yún)⒉荒芡瑫r都為空,否則會拋出異常.

    ExceptionHandlerMethodResolver完成了初始化工作,如何根據(jù)當前發(fā)生異常類型查找到對應方法?

    代碼片段位于:org.springframework.web.method.annotation.ExceptionHandlerMethodResolver#resolveMethod

    resolveMethodByExceptionType根據(jù)當前拋出異常尋找 匹配的方法,并且做了緩存,以后遇到同樣的異常可以直接走緩存取出method,

    代碼片段位于:org.springframework.web.method.annotation.ExceptionHandlerMethodResolver#resolveMethodByExceptionType

    resolveMethodByExceptionType方法,嘗試從緩存A:exceptionLookupCache中根據(jù) 異常class類型獲取Method ,初始時候肯定緩存為空 ,就去 遍歷ExceptionHandlerMethodResolver的mappedMethods(上面提及了key為異常類型,value為method), exceptionType為當前@RequestMapping方法拋出的異常,判斷當前異常類型是不是@ExceptionHandler中value聲明的子類或本身,滿足條件就代表匹配上了;可能存在多個匹配的方法,使用ExceptionDepthComparator排序,排序規(guī)則是按照繼承順序來(繼承關系越靠近數(shù)值越小,當前類最小為0,頂級父類Throwable為int最大值),排序之后選取繼承關系最靠近的那個,并且存入ExceptionHandlerMethodResolver的exceptionLookupCache中,key為當前拋出的異常,value為解析出來的匹配method.

    至此 @ExceptionHandler Spring讀取到并解析出來完畢了,后續(xù)流程和Spring正常請求流程一樣,包括@ExceptionHandler的方法入?yún)ⅰ⒎椒ǚ祷刂?

    @ExceptionHandler的方法入?yún)⒅С?#xff1a;Exception ;SessionAttribute 、 RequestAttribute注解 ; HttpServletRequest 、HttpServletResponse、HttpSession.

    @ExceptionHandler方法返回值常見的可以是: ModelAndView 、@ResponseBody注解、ResponseEntity;

    二. 全局級別異常處理器 實現(xiàn)HandlerExceptionResolver接口

    public class MyHandlerExceptionResolver implements HandlerExceptionResolver {@Overridepublic ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {System.out.println("發(fā)生全局異常!");ModelMap mmp=new ModelMap();mmp.addAttribute("ex",ex.getMessage());return new ModelAndView("error",mmp);}}

    使用方式: 只需要將該Bean加入到Spring容器,可以通過Xml配置,也可以通過注解方式加入容器;

    ? 方法返回值不為null才有意義,如果方法返回值為null,可能異常就沒有被捕獲.

    缺點分析:比如這種方式全局異常處理返回JSP、velocity等視圖比較方便,返回json或者xml等格式的響應就需要自己實現(xiàn)了.如下是我實現(xiàn)的發(fā)生全局異常返回JSON的簡單例子.

    public class MyHandlerExceptionResolver implements HandlerExceptionResolver {@Overridepublic ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {System.out.println("發(fā)生全局異常!");ModelMap mmp=new ModelMap();mmp.addAttribute("ex",ex.getMessage());response.addHeader("Content-Type","application/json;charset=UTF-8");try {new ObjectMapper().writeValue(response.getWriter(),ex.getMessage());response.getWriter().flush();} catch (IOException e) {e.printStackTrace();}return new ModelAndView();}}

    原理分析:

    記得之前介紹了 DispatcherServlet的HandlerExceptionResolver集合,這種方式的HandlerExceptionResolver就是從DispatcherServlet的HandlerExceptionResolver集合入手的.

    代碼片段位于:org.springframework.web.servlet.DispatcherServlet#processHandlerException

    this對象指代DispatcherServlet,和上面方式對比,發(fā)現(xiàn)我們只是將MyHandlerExceptionResolver 加入到Spring容器,dispatchServlet 的 handlerExceptionResolvers屬性就多了我們自己定義的全局異常解析器;

    ExceptionHandlerMethodResolver是用來解析@Controller層面的@ExceptionHandler注解,當前Controller沒有找到@ExceptionHandler來處理自己拋出的異常,才遍歷下一個HandlerExceptionResolver;

    HandlerExceptionResolver是個有序集合,Spring注冊的HandlerExceptionResolver調(diào)用resolveException都失敗之后,才輪到我們自定義的MyHandlerExceptionResolver ;而且我們自定義的MyHandlerExceptionResolver 就沒法使用SpringMvc的注解等等.

    我們只是將HandlerExceptionResolver加入到Spring容器中,Spring是如何通知給DispatcherServlet呢?

    代碼片段位于:org.springframework.web.servlet.DispatcherServlet#initHandlerExceptionResolvers

    initHandlerExceptionResolvers只是DispatcherServlet初始化策略方法initStrategies中的一小步,可以看到只要是SpringMvc父子容器中注冊的HandlerExceptionResolver類型實例,DispatcherServlet都會自動將其加入到DispatcherServlet的handlerExceptionResolvers中. 所以我們需要做的只是實現(xiàn)HandlerExceptionResolver接口,并且納入Spring容器管理即可.

    三.全局級別異常處理器 @ControllerAdvice+@ExceptionHandler

    簡單使用方法:

    @ControllerAdvice public class GlobalController {@ExceptionHandler(RuntimeException.class)public ModelAndView fix1(Exception e){System.out.println("全局的異常處理器");ModelMap mmp=new ModelMap();mmp.addAttribute("ex",e);return new ModelAndView("error",mmp);} } package com.abc.admin;import com.github.pagehelper.Page; import com.viready.scpms.pojo.bean.ResponseResult; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;@ControllerAdvice public class ControllerAdviceHandler implements ResponseBodyAdvice<Object> {@ResponseBody@ExceptionHandler(value = Throwable.class)public ResponseResult catchAllError(HttpServletRequest request, HttpServletResponse response, Throwable error) {return ResponseResult.exception(error);}@Overridepublic boolean supports(MethodParameter method, Class<? extends HttpMessageConverter<?>> clazz) {return method.getContainingClass().getPackage().getName().startsWith("com.abc") &&(method.getContainingClass().getAnnotation(RestController.class) != null ||(method.getMethod() != null && method.getMethod().getAnnotation(ResponseBody.class) != null));}@Overridepublic Object beforeBodyWrite(Object result, MethodParameter methodParameter, MediaType mediaType,Class<? extends HttpMessageConverter<?>> aClass,ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {return result instanceof ResponseResult ? result :result instanceof Page ? ResponseResult.page((Page<?>) result) :ResponseResult.successData(result);} }

    用法說明: 這種情況下 @ExceptionHandler 與第一種方式用法相同,返回值支持ModelAndView,@ResponseBody等多種形式.

    方式一提到ExceptionHandlerExceptionResolver不僅維護@Controller級別的@ExceptionHandler,同時還維護的@ControllerAdvice級別的@ExceptionHandler.

    代碼片段位于:org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#getExceptionHandlerMethod

    isApplicableToBeanType方法是用來做條件判斷的,@ControllerAdvice注解有很多屬性用來設置條件,basePackageClasses、assignableTypes、annotations等,比如我限定了annotations為注解X, 那標注了@X 的ControllerA就可以走這個異常處理器,ControllerB就不能走這個異常處理器.

    現(xiàn)在問題的關鍵就只剩下了exceptionHandlerAdviceCache是什么時候掃描@ControllerAdvice的,下面的邏輯和@ExceptionHandler的邏輯一樣了.

    exceptionHandlerAdviceCache初始化邏輯:

    代碼片段位于:org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#afterPropertiesSet

    afterPropertiesSet是Spring bean創(chuàng)建過程中一個重要環(huán)節(jié).

    代碼片段位于:org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#initExceptionHandlerAdviceCache

    ControllerAdviceBean.findAnnotatedBeans方法查找了SpringMvc父子容器中標注 @ControllerAdvice 的bean, new ExceptionHandlerMethodResolver初始化時候解析了當前的@ControllerAdvice的bean的@ExceptionHandler,加入到ExceptionHandlerExceptionResolverexceptionHandlerAdviceCache中,key為ControllerAdviceBean,value為ExceptionHandlerMethodResolver . 到這里exceptionHandlerAdviceCache就初始化完畢.

    查找SpringMvc父子容器中所有@ControllerAdivce的bean的方法

    代碼片段位于:org.springframework.web.method.ControllerAdviceBean#findAnnotatedBeans

    遍歷了SpringMVC父子容器中所有的bean,標注ControllerAdvice注解的bean加入集合返回.

    四.比較說明.

    @Controller+@ExceptionHandler、HandlerExceptionResolver接口形式、@ControllerAdvice+@ExceptionHandler優(yōu)缺點說明:

    在Spring4.3.0版本下,

    1.優(yōu)先級來說,@Controller+@ExceptionHandler優(yōu)先級最高,其次是@ControllerAdvice+@ExceptionHandler,最后才是HandlerExceptionResolver,說明假設三種方式并存的情況 優(yōu)先級越高的越先選擇,而且被一個捕獲處理了就不去執(zhí)行其他的.

    ? 2. 三種方式都支持多種返回類型,@Controller+@ExceptionHandler、@ControllerAdvice+@ExceptionHandler可以使用Spring支持的@ResponseBody、ResponseEntity,而HandlerExceptionResolver方法聲明返回值類型只能是 ModelAndView,如果需要返回JSON、xml等需要自己實現(xiàn).

    ? 3.緩存利用,@Controller+@ExceptionHandler的緩存信息在ExceptionHandlerExceptionResolver的exceptionHandlerCache,@ControllerAdvice+@ExceptionHandler的緩存信息在ExceptionHandlerExceptionResolver的exceptionHandlerAdviceCache中, 而HandlerExceptionResolver接口是不做緩存的,在前面兩種方式都fail的情況下才會走自己的HandlerExceptionResolver實現(xiàn)類,多少有點性能損耗.

    EOF

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結

    以上是生活随笔為你收集整理的Spring 异常处理三种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    69国产盗摄一区二区三区五区 | 国产精品视频大全 | 中文字幕日韩在线播放 | 久久国产经典 | 欧美日韩不卡一区 | 爱爱av网| 天天看天天干 | av免费观看网址 | 狠狠色丁香婷婷综合欧美 | 国产亚洲精品久久久久久网站 | 最近中文字幕大全中文字幕免费 | 日韩三级视频在线看 | 永久免费毛片 | 国产香蕉视频在线播放 | 成人h动漫在线看 | 国产亚洲在线视频 | 热久久国产精品 | 国产成人久久av977小说 | 久草男人天堂 | 久久精品视频免费观看 | 91亚洲影院 | 国产日韩欧美在线免费观看 | 精品国产自| 国产一级视屏 | 亚洲精品www | 成人黄大片视频在线观看 | 久久久影片 | 成人久久18免费网站 | 一区二区三区四区五区在线视频 | 日韩va在线观看 | 99国产精品一区二区 | 99久久超碰中文字幕伊人 | 毛片精品免费在线观看 | av性在线| 中文字幕在线观看视频免费 | 91香蕉视频污在线 | 国产精品久久久久毛片大屁完整版 | 国产中文字幕视频在线观看 | 国产欧美精品一区二区三区四区 | 国产午夜激情视频 | 国产一级特黄毛片在线毛片 | 日韩精品一区二区三区三炮视频 | 国产精品久久久久四虎 | 日韩在线视频在线观看 | 国产精品 999 | 久久久久亚洲精品成人网小说 | 岛国片在线 | 婷婷久久亚洲 | 精品国产一区二区三区久久久蜜月 | 免费观看不卡av | 中文字幕在线观看的网站 | 国产无限资源在线观看 | 国产精品欧美久久久久无广告 | 色香天天| 日本一区二区三区免费观看 | 又黄又爽又湿又无遮挡的在线视频 | 亚洲精品欧洲精品 | 91麻豆产精品久久久久久 | 久久久免费精品视频 | 国产美女无遮挡永久免费 | 国产一区播放 | 国产小视频免费在线观看 | 免费看成人a | 久热香蕉视频 | 日韩欧美视频一区二区 | 亚洲视频观看 | 久久调教视频 | 欧美在线视频精品 | 人人草在线观看 | 伊人久久国产精品 | 亚洲精品电影在线 | 亚洲精品国产电影 | 天天操天天添 | 久久黄色片子 | 久久电影国产免费久久电影 | 狠狠色噜噜狠狠狠狠2021天天 | 国产白浆在线观看 | 亚洲特级片 | 日韩av在线一区二区 | 美女av免费看 | 黄色91免费观看 | 免费一级片视频 | 欧美嫩草影院 | 国产一级做a爱片久久毛片a | 国产a视频免费观看 | 91在线视频免费观看 | 视频成人免费 | 91精彩视频在线观看 | 深爱五月激情五月 | 久久久久亚洲天堂 | 在线观看中文字幕一区二区 | 国产97色| av免费看在线 | 欧美在线视频一区二区三区 | 精品一区二区三区久久 | 91av在线免费播放 | 中文理论片 | 久久福利精品 | 国产又粗又长又硬免费视频 | 欧美成人精品三级在线观看播放 | 99成人精品 | 最近日韩中文字幕中文 | 久久香蕉国产 | 久草在线免费资源站 | 在线观看国产 | 国语精品视频 | 免费观看黄色12片一级视频 | 免费三级影片 | 日日夜夜噜噜噜 | 色婷婷av一区二 | 国产不卡视频在线播放 | 福利视频午夜 | 亚洲传媒在线 | 在线观看av中文字幕 | 九九在线高清精品视频 | 黄色软件在线观看 | 亚洲精品一区二区在线观看 | 亚洲视频一区二区三区在线观看 | 久久精品99国产精品亚洲最刺激 | 91最新网址 | 午夜视频欧美 | www.国产在线| 亚洲精品网页 | 毛片网站观看 | 在线韩国电影免费观影完整版 | 国产激情电影综合在线看 | 在线观看免费成人av | 最新一区二区三区 | 九九久久久久99精品 | 91视视频在线直接观看在线看网页在线看 | 国产人免费人成免费视频 | 国内精品在线观看视频 | 亚洲美女精品区人人人人 | 水蜜桃亚洲一二三四在线 | 国产色婷婷 | 欧美 亚洲 另类 激情 另类 | 成人小视频免费在线观看 | 中文字幕高清av | 成人av在线直播 | 国产精品亚洲成人 | 精品 激情 | 免费在线观看av电影 | 国产精品综合在线观看 | 日日婷婷夜日日天干 | 中文在线免费观看 | 亚洲国产精久久久久久久 | 黄色片网站免费 | 成人黄色一级视频 | 日韩在线视频一区 | 婷婷.com| 日韩免费中文 | 91精品国产乱码在线观看 | 国产又黄又硬又爽 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 97人人艹 | 久久精品综合视频 | 色狠狠久久av五月综合 | 99精品视频免费观看视频 | 在线不卡的av | 国产成人精品一区二区在线 | 日本一区二区免费在线观看 | 久久av不卡 | 欧美日韩精品影院 | 婷婷在线观看视频 | 国产日韩精品在线 | 成人免费大片黄在线播放 | 毛片a级片 | 在线国产高清 | 中文字幕.av.在线 | 91亚洲精品乱码久久久久久蜜桃 | 久久中文网 | 欧美精品久久久久久久亚洲调教 | 久久久久网址 | 丝袜制服综合网 | 91综合视频在线观看 | 亚洲高清视频在线播放 | 天天插天天狠天天透 | 91精品视频播放 | 日日夜夜天天干 | 麻豆91小视频 | 欧美性直播| 日韩久久久久久 | 911精品美国片911久久久 | 亚洲高清免费在线 | 一级a毛片高清视频 | 精品国产乱码久久 | 成人av影视在线 | 欧美精品久久人人躁人人爽 | 99热九九这里只有精品10 | 在线有码中文字幕 | 九九激情视频 | 激情婷婷久久 | 国产精品6 | 极品美女被弄高潮视频网站 | 欧美成人亚洲 | 亚洲午夜激情网 | 精品一区精品二区高清 | 在线播放一区 | 欧美在线视频日韩 | 成人教育av | 亚洲视频在线观看网站 | 日韩在线 一区二区 | 欧美激情精品久久久久久免费 | 亚洲一区天堂 | 狠狠色伊人亚洲综合网站野外 | 免费婷婷| 日韩成人中文字幕 | 精品黄色视 | av黄色成人 | 五月天九九 | 97国产在线观看 | 欧美极品裸体 | 国产精品av免费在线观看 | 国产亚州精品视频 | 波多野结衣一区三区 | ,午夜性刺激免费看视频 | 天天色成人网 | 日日夜夜人人天天 | 玖玖视频网 | 国产原创在线 | 999久久久久| 在线日韩一区 | 久久超碰97 | 在线观看 亚洲 | 国内精品中文字幕 | www.av在线.com | 日韩精品国产一区 | 伊人成人精品 | 日韩在线观看一区二区三区 | 欧洲精品视频一区 | 狠狠躁夜夜av | 国产精品人人做人人爽人人添 | 国产精品久久久久免费观看 | 亚洲成人黄色av | 国产精品久久视频 | 日韩手机视频 | 亚洲天堂网在线播放 | 成人国产精品久久久久久亚洲 | 欧美在线一二区 | av 一区二区三区 | 91精品视频免费看 | 99在线精品视频在线观看 | 九九日韩 | 奇米影视在线99精品 | 婷婷丁香六月 | 国产一级二级三级在线观看 | 久久免费影院 | 中文一二区 | 天天弄天天操 | 国产成人一二片 | 久久露脸国产精品 | 中文字幕在线观看第三页 | 久久精品国产亚洲aⅴ | 国产精品久久久视频 | 叶爱av在线 | 久久久久免费精品视频 | 三级视频日韩 | 狠狠狠狠狠狠 | 亚洲成av人影片在线观看 | 免费不卡中文字幕视频 | 欧美午夜精品久久久久 | 亚洲在线激情 | 亚洲精欧美一区二区精品 | 久草在线一免费新视频 | 97在线免费视频观看 | 日本久热| 久久久男人的天堂 | 国产视频一区二区在线 | 高潮久久久 | 中文在线字幕免费观看 | 国产成人一区二 | 免费在线观看日韩欧美 | 天天干天天搞天天射 | 久久视频免费观看 | av中文字幕在线免费观看 | 成人一级片免费看 | 免费中文字幕在线观看 | 97碰碰精品嫩模在线播放 | 国产精品成人av在线 | 亚洲精品午夜一区人人爽 | 绯色av一区 | 国产高清专区 | 日韩va在线观看 | 狠狠狠色丁香综合久久天下网 | 婷婷国产在线 | 99久久精品费精品 | 日韩大片在线 | 欧日韩在线 | 九月婷婷人人澡人人添人人爽 | 四虎在线免费观看 | 香蕉视频在线播放 | 欧美成人一区二区 | 免费在线观看a v | 国产精品免费观看视频 | 久久免费在线视频 | 波多野结衣在线观看视频 | 午夜精品久久久久久久99 | 西西人体4444www高清视频 | 久久精品视频在线观看免费 | 免费高清在线视频一区· | 日韩一三区 | 国产精品黄色在线观看 | 日韩av区 | 国产精品精品久久久久久 | 欧美国产日韩一区二区 | 久久伦理影院 | 亚洲片在线观看 | 国产精品永久免费视频 | 国产一区二区高清 | 一本到在线 | 亚洲精品国产日韩 | av理论电影| 国产精品久久久久久爽爽爽 | 精品在线视频一区二区三区 | 三级av在线| 特级毛片在线免费观看 | 国产高清免费视频 | 在线日韩中文字幕 | 黄色一级大片免费看 | 天天综合网在线观看 | 超碰在线色 | 91看片淫黄大片一级在线观看 | www久久国产 | 色av色av色av| 久久成人人人人精品欧 | 婷婷干五月 | 二区三区精品 | 97在线观看免费高清完整版在线观看 | 波多野结衣资源 | 色停停五月天 | 人人要人人澡人人爽人人dvd | 久久精久久精 | 色婷在线| 日本在线观看黄色 | 伊甸园av在线 | 在线观看免费成人av | 日韩特级片 | 成人h视频 | 日本久久精| 国产免费观看久久 | 国产精品12 | 中文字幕制服丝袜av久久 | 亚洲午夜久久久综合37日本 | 日韩成人免费在线 | 高潮久久久久久久久 | av夜夜操| 国产精品免费小视频 | 国产精品999久久久 久产久精国产品 | 国产一级h | 色综合久久88色综合天天免费 | 亚洲天天在线日亚洲洲精 | 99亚洲国产 | 国产在线一区二区 | 亚洲精品视频在线观看视频 | 91高清免费 | 91高清视频在线 | 婷婷六月色 | 免费网站看v片在线a | 久草视频99 | 国产精品久久久久四虎 | 在线观看中文字幕一区二区 | 国产精品美女在线 | 国产一区二区久久久久 | 婷色| 亚洲免费成人 | av在线免费观看网站 | 亚洲三级av | 久久毛片网站 | 在线观看视频一区二区三区 | av不卡中文 | 日本黄网站| 国产一级片免费视频 | 一区二区激情 | 久久a级片| 国产精品99久久久久的智能播放 | 午夜aaaa | 久久久免费精品 | 久色 网 | 成年人在线看视频 | 在线免费视频你懂的 | 久久久亚洲影院 | 国产最新在线观看 | 九九九热精品免费视频观看网站 | 大型av综合网站 | 国产精品一区二区三区电影 | 亚洲综合视频在线 | 伊色综合久久之综合久久 | 精品久久久久久久久久久久久久久久 | 成人黄色免费观看 | www.超碰 | 久久免费视频1 | 国产呻吟在线 | 在线中文字幕电影 | 黄免费网站 | 国产中文字幕网 | 亚洲男模gay裸体gay | 日韩精品电影在线播放 | 深爱婷婷激情 | 日韩欧美网址 | 亚洲另类视频 | 夜夜躁日日躁狠狠躁 | 美女视频a美女大全免费下载蜜臀 | 亚洲春色综合另类校园电影 | www久久com| 精品国产片 | 天天在线操 | 91麻豆精品国产 | 精品久久久久久亚洲综合网 | 国产免费亚洲高清 | 久久99精品久久久久久清纯直播 | 色中文字幕在线观看 | 天天爱天天操天天爽 | 在线观看视频福利 | 久久激情视频免费观看 | 在线观看视频你懂 | 中文字幕一区二区三区在线视频 | 久久99网站 | 国产系列在线观看 | 亚洲一级片在线看 | 亚洲精品18日本一区app | 国产手机在线观看视频 | 国产视频精品久久 | 天天插天天色 | 在线观看中文 | 99久久久免费视频 | 国产精品成人免费精品自在线观看 | 在线观看国产区 | 久草在线资源观看 | 91精品久久久久久综合乱菊 | 亚洲欧美精品在线 | 国产一级二级av | 人人干免费 | 久久精品79国产精品 | 欧美色婷 | 欧美另类高清 videos | 欧美精品久久久久 | 成人午夜电影久久影院 | 国产美女精品视频 | 国产伦精品一区二区三区照片91 | 亚洲成人av电影在线 | 一级黄色片在线免费观看 | 美女在线免费观看视频 | 欧美经典久久 | 国产一区高清在线 | 久久精品这里热有精品 | 又黄又爽又湿又无遮挡的在线视频 | 亚洲六月丁香色婷婷综合久久 | 美女网站在线观看 | 免费进去里的视频 | 日韩视频在线观看视频 | 日本在线观看黄色 | 正在播放亚洲精品 | 日韩欧美一区二区在线 | 免费成人在线视频网站 | 综合国产视频 | 国产精品18久久久久久久网站 | 99久久精品费精品 | 欧美日韩视频在线观看一区二区 | 久久久网页 | 国产永久网站 | 中文av不卡 | 伊人五月婷 | 精品亚洲免费视频 | 国产91亚洲| 韩国一区二区三区在线观看 | 亚洲人成精品久久久久 | 午夜视频日本 | 国产美女久久久 | 西西大胆啪啪 | 成人黄色电影在线播放 | 久久99国产精品自在自在app | 国产免费专区 | 99久久一区| 色婷婷综合久久久久中文字幕1 | 日韩中文字幕免费视频 | 操少妇视频 | 97国产精品视频 | 在线小视频你懂得 | 午夜精品导航 | 午夜av免费在线观看 | 奇人奇案qvod | 视频一区二区三区视频 | 久久久久电影网站 | 婷婷综合成人 | 久草精品视频在线看网站免费 | 欧美日本在线观看视频 | 美女网站在线观看 | 日韩一区二区三免费高清在线观看 | 国产在线播放观看 | 99国产在线| 日韩中文字幕亚洲一区二区va在线 | 激情黄色一级片 | 在线观看日韩专区 | 操操操日日日干干干 | 夜夜骑天天操 | 一区二区三区在线视频111 | www.天天综合 | 精品一区二区在线免费观看 | 99国产在线观看 | 天天操夜夜摸 | 伊人宗合网 | 欧美激情在线看 | 色婷五月天 | 超碰人人在 | 中文字幕在线观看国产 | 91黄色免费看 | 精品视频久久久久久 | 久久精品亚洲 | 在线激情av电影 | 日韩高清免费在线 | 亚洲免费在线播放视频 | 久日精品| av网站大全免费 | 国内久久精品视频 | 久久视频在线免费观看 | 日韩高清 一区 | 黄色福利网站 | 国产91免费观看 | 亚洲国产成人久久 | 欧美成人视 | 国产午夜剧场 | 激情五月综合 | 亚洲精品国产欧美在线观看 | 天堂网在线视频 | 午夜丁香视频在线观看 | 91视频88av | 久久视频在线视频 | 精品九九九九 | 狠狠的日日 | 奇米影视在线99精品 | 97电影手机| 免费观看性生交大片3 | 久久99深爱久久99精品 | 亚洲另类视频 | www.久草视频 | 91黄色免费看 | 中文区中文字幕免费看 | 人人爽人人爽人人爽人人爽 | 国产精品麻豆免费版 | 日韩理论片在线 | 免费看国产一级片 | 亚洲精品高清一区二区三区四区 | 黄色毛片视频免费 | 91九色网站| 在线不卡的av | 在线影视 一区 二区 三区 | 久久亚洲欧美日韩精品专区 | 操操操操网 | 四虎成人精品永久免费av九九 | 精品久久久久久国产91 | 久久久久久国产一区二区三区 | 亚洲成人欧美 | 免费精品视频 | av高清在线观看 | 午夜国产福利在线 | 欧美激情综合色 | 国产精品久久一卡二卡 | 天天综合网 天天综合色 | 蜜臀91丨九色丨蝌蚪老版 | www.av中文字幕.com | 欧美视频一区二 | 国产精品毛片久久 | 日韩网站视频 | 久久精品中文字幕免费mv | 在线免费av网站 | 91在线影视| 国产亚洲成人网 | 超碰在线97观看 | 亚洲女人av | 欧美精品免费在线观看 | 欧美精品一区二区免费 | 国产免费又爽又刺激在线观看 | 亚洲最新视频在线 | 亚洲黑丝少妇 | 国产毛片在线 | 亚洲成人国产 | 日韩一级理论片 | 99国产一区| 国产成人av福利 | 色999精品 | 久热爱 | 精品国精品自拍自在线 | 黄色视屏av | 国产一区二区在线免费 | 天堂资源在线观看视频 | 91久久人澡人人添人人爽欧美 | 国产一级二级三级在线观看 | 久久精品香蕉 | 久久国内视频 | 国产淫片免费看 | 99久久激情 | 天天综合天天做天天综合 | 中文永久免费观看 | 欧美aa一级片 | 九九在线视频 | av电影在线不卡 | 国产午夜在线观看视频 | 在线视频观看国产 | 国产在线色 | 国产理论在线 | av中文在线播放 | 黄色成人av网址 | 国产我不卡 | 国产视频观看 | 久久久久久欧美二区电影网 | 国产1级视频 | 久久婷婷精品视频 | 天天综合网国产 | 日本高清免费中文字幕 | 国产一区在线免费 | 精品国产成人av在线免 | 国产精品综合久久久久久 | 成人久久久久久久久久 | 在线观看视频你懂的 | 国产玖玖精品视频 | 超碰97国产| 欧美午夜a | 久久夜色精品国产欧美乱极品 | 国产爽视频 | 美女激情影院 | 91精品国产三级a在线观看 | 在线播放 日韩专区 | 亚洲精品网站在线 | 91色一区二区三区 | 91免费观看网站 | 午夜精品婷婷 | 在线草| 人人澡视频 | 尤物九九久久国产精品的分类 | 久久超| 91精品国产九九九久久久亚洲 | 国产69久久久欧美一级 | 免费男女羞羞的视频网站中文字幕 | 亚洲手机天堂 | 国产小视频在线免费观看视频 | 国产成人精品亚洲a | 国产精品久久久久久一区二区 | av免费播放 | 亚洲免费精品一区二区 | 国产美女网 | 91在线视频观看 | 91精品入口 | 国产精品麻豆视频 | 国内精品久久久久影院男同志 | 国产久草在线观看 | 亚洲免费精彩视频 | 午夜国产影院 | 亚洲国产成人精品电影在线观看 | 一区二区三区四区久久 | 美女黄视频免费 | av在线免费观看不卡 | 激情五月婷婷综合 | 色婷婷电影 | 99久久99视频 | 久久99久久精品 | 欧美在线一二区 | 亚洲精品国产精品久久99热 | 国产做爰视频 | 在线观看亚洲视频 | 亚洲午夜精品一区 | 国产h在线播放 | 最新av免费在线 | 国产精品中文字幕在线观看 | 国产高清视频在线观看 | 高清av中文在线字幕观看1 | 久草免费在线视频观看 | 国产高清无av久久 | 久要激情网 | 天天色天天爱天天射综合 | 国产免费影院 | 在线观看国产日韩 | av成人动漫| 91毛片视频 | 91在线观看高清 | 久久久久免费网站 | 亚洲日本色| 色婷婷亚洲婷婷 | 西西4444www大胆视频 | 人人超在线公开视频 | 国产小视频福利在线 | av在线在线 | 成人免费视频网 | 一区三区在线欧 | 亚洲手机天堂 | 中文字幕中文字幕 | 九九九热精品免费视频观看网站 | 韩国av一区二区三区在线观看 | 国产 欧美 在线 | 成人国产精品久久久久久亚洲 | 国产精品大片免费观看 | 亚洲一级黄色 | 婷婷精品国产欧美精品亚洲人人爽 | 在线观看日本韩国电影 | 激情久久伊人 | 99精品在线观看 | 欧美精品久久久久久久亚洲调教 | 免费精品在线观看 | 99久久久久国产精品免费 | 最近2019中文免费高清视频观看www99 | 国产丝袜一区二区三区 | a天堂一码二码专区 | 国产最顶级的黄色片在线免费观看 | 天天操天天艹 | 国产精品av久久久久久无 | 日本中文字幕网站 | 中文字幕一区二区三区视频 | 五月天久久久久久 | 国产精品久久久久久久久久久久午夜 | 91精品国产成人观看 | 91福利在线观看 | 国产精品一区二区在线免费观看 | 日韩欧三级| 开心激情五月网 | 午夜久久视频 | 亚洲综合在线视频 | 免费观看黄色12片一级视频 | 玖玖999| 全黄色一级片 | 成年人在线免费看片 | 人人澡人人舔 | 欧美日韩调教 | 久久久影视 | 国产精品自产拍在线观看桃花 | 99热在线免费观看 | 日韩成人欧美 | 欧美性生活小视频 | 一区二区 不卡 | 正在播放国产91 | 亚洲精品在线视频播放 | 99久久精品国产一区二区成人 | 伊人婷婷在线 | avhd高清在线谜片 | 亚洲久草在线视频 | 伊人亚洲综合 | 99久久精品费精品 | 最近中文字幕在线 | 日p视频 | 麻豆视频免费在线播放 | 又黄又刺激视频 | 中文字幕色播 | 精品国产欧美一区二区 | 国产在线视频一区二区 | 欧美精品一区二区在线观看 | 日韩免费看片 | 国产精品99久久久久久宅男 | av手机在线播放 | 人人添人人澡人人澡人人人爽 | 视频在线观看国产 | 精品久久五月天 | 日日夜夜网 | 成人网中文字幕 | www.久久免费视频 | 精品国产免费观看 | 美女网站在线看 | 成人国产精品一区二区 | 亚洲国产电影在线观看 | 国产成人久久 | 欧美成人黄 | 色综合狠狠干 | 久久久久亚洲精品成人网小说 | 日韩在线观看视频免费 | 91免费试看| 国产美女精品久久久 | 日批视频在线观看免费 | 国产打女人屁股调教97 | 成 人 黄 色 视频 免费观看 | 岛国av在线不卡 | av爱干 | 亚洲精品网页 | 五月天激情婷婷 | 亚洲日本中文字幕在线观看 | 日本韩国精品一区二区在线观看 | 美女久久久久久 | 欧美国产一区在线 | 欧美一级爽 | 伊人干综合 | 国产日韩在线看 | 欧美性做爰猛烈叫床潮 | 国色天香在线观看 | 国产精品99免视看9 国产精品毛片一区视频 | 国产自产高清不卡 | 国产精品一区二区三区四 | 久久艹在线观看 | 成人高清av在线 | 伊人手机在线 | 国产麻豆精品传媒av国产下载 | 日韩在线视频网站 | 日韩毛片在线一区二区毛片 | 亚在线播放中文视频 | 亚洲欧洲精品视频 | 国产精品美女在线 | 欧美三级免费 | 国产精品久久久久久模特 | 免费国产黄线在线观看视频 | 精品国产乱码久久久久 | 国产亚洲成av人片在线观看桃 | 亚洲免费av片 | 欧美狠狠操 | 久艹视频在线观看 | 五月激情av | av电影一区二区三区 | 亚洲综合成人在线 | 欧美片一区二区三区 | 欧美日韩免费观看一区=区三区 | 婷婷av资源 | 亚洲视频 视频在线 | 色婷婷亚洲婷婷 | 一二区电影 | 久久婷婷色 | 亚洲成人黄色网址 | 亚洲 综合 专区 | 精品视频www | 久久久精品国产一区二区电影四季 | 国产黄色理论片 | 精品久久一二三区 | 色综合小说| 五月天综合色激情 | 中文字幕有码在线观看 | 99热最新精品 | 久久综合色一综合色88 | 久久99欧美 | 黄色一级动作片 | a黄色片| 天天干天天碰 | 91网在线看 | 黄色三级av | 98超碰在线观看 | 国产精品久久久久久久久久直播 | 97网在线观看 | 伊甸园永久入口www 99热 精品在线 | 久久精品男人的天堂 | 亚洲永久精品在线观看 | 午夜免费在线观看 | 国产伦理剧 | 日本久久综合视频 | 成人av高清在线观看 | 免费高清在线一区 | 999久久a精品合区久久久 | 色婷婷激情网 | 国产色视频一区二区三区qq号 | 最近中文字幕久久 | 91色国产在线 | 97超碰.com | 天天鲁天天干天天射 | 国产成人一区二区三区 | 天天射天天射天天射 | www.91成人| 中文字幕资源网 | 色狠狠一区二区 | 久久看片| 亚洲 欧美 综合 在线 精品 | 国产一区二区三区免费观看视频 | 国产做爰视频 | 黄色网址中文字幕 | 日韩在线观看三区 | 精品在线观看一区二区 | 在线免费三级 | 国内外成人在线视频 | 日韩美女高潮 | www.五月天婷婷 | 新版资源中文在线观看 | 国产一二区视频 | 成年人免费在线播放 | 免费av网站在线看 | 超碰人人在线 | 久久久精品一区二区 | 欧美在线1区| 麻豆 videos| 综合天天色 | 国产精品成人品 | 免费a视频在线观看 | 在线免费看黄色 | 国产视频久 | 成人午夜在线电影 | 99视频网站 | 日韩美在线 | 日本福利视频在线 | 久久97精品 | 2021国产在线 | 亚州国产精品久久久 | 一区二区三区电影大全 | 国产伦理一区二区 | 色午夜影院 | 国产亚洲在线 | 久久不卡电影 | 国产一区在线免费观看视频 | 国产视频中文字幕在线观看 | 91精品国产成人观看 | 免费观看久久 | 欧美精品乱码99久久影院 | 久艹在线播放 | 在线欧美a | 在线免费观看麻豆 | 97国产情侣爱久久免费观看 | 97超碰免费在线观看 | 大片网站久久 | 黄色福利视频网站 | 欧美日韩一级视频 | 99视频这里有精品 | 狠狠狠狠狠操 | 国产精品99久久久久的智能播放 | 毛片888 | 免费在线观看污网站 | 亚洲国产成人精品在线观看 | 五月婷婷丁香 | 国产精品成久久久久三级 | 免费看黄色毛片 | 99久在线精品99re8热视频 | 亚洲精品视频免费在线 | 国产美腿白丝袜足在线av | 一级一片免费视频 | 草久在线视频 | 亚洲天天在线日亚洲洲精 | 99综合影院在线 | 午夜精品久久久久久久久久久久久久 | 91精品国产成 | 五月天婷婷免费视频 | 99精品久久精品一区二区 | av网站有哪些 | 99久久综合国产精品二区 | 亚洲精品久久在线 | 国产视频精品视频 | 在线激情影院一区 | 亚洲 中文 欧美 日韩vr 在线 | 青青河边草免费直播 | www在线观看视频 | av7777777| 久久久久久久久久久精 | 九九电影在线 | 日本久久影视 | 蜜臀av性久久久久蜜臀av | 亚洲精品国产精品国自产观看 | 久久国产精品99久久久久久丝袜 | 黄色国产成人 | 久久久久久欧美二区电影网 | 久久久久久久久综合 | 久久午夜网 | 丁香资源影视免费观看 | 日韩精品一区二区不卡 | 日韩一二区在线 | 在线观看亚洲成人 | 日韩视频在线播放 | 久久视频在线免费观看 | 国产 成人 久久 | 色婷婷综合久久久 | 国产视频日韩视频欧美视频 | 97成人免费视频 | 日韩免费福利 | 夜夜骑首页 | 在线观看免费视频你懂的 | www.狠狠操.com | 免费看特级毛片 | 波多在线视频 | 免费91在线 | 在线观看国产福利片 | 成人免费91 | 国产一区二区精品91 | 五月婷婷久久丁香 | 久久久久9999亚洲精品 | 亚洲视频播放 | 国产精品第一 | 天天视频色版 | 亚洲午夜av电影 | 国产精久久久久久久 | 日本久久久久 | 亚洲午夜av电影 | 最近中文字幕第一页 | 欧美一级黄色网 | 亚洲精品2区 | 亚洲综合少妇 | 午夜av片 | 97色在线观看免费视频 | 8x8x在线观看视频 | 夜夜操夜夜干 | 精品国产乱码久久久久 | 奇米777777| 在线91精品 | 又黄又爽的免费高潮视频 | 国产69精品久久99不卡的观看体验 | 国产精品高潮呻吟久久久久 | 久久久久久久久毛片精品 | 91最新在线 | 91麻豆产精品久久久久久 | 五月天伊人 | 婷婷综合五月 | 精品国产免费久久 | 久久综合九色九九 | 国产日韩视频在线播放 | 在线观看视频黄 | 亚洲高清色综合 | 免费观看视频的网站 | 中文资源在线观看 | 激情亚洲综合在线 | 成人h视频 | 久久精品96| 国产成人一二三 | 亚洲美女免费视频 | 天堂在线成人 |