久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

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

javascript

SpringBoot笔记

發布時間:2023/12/9 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • 1?? 簡介
        • 一. 什么是 IoC 容器?
        • 二. AOP面向切面編程
        • 三. SSM整合
        • 四. HttpServletRequest
        • 五. HttpServletResponse
        • 六. Cookie 與 Session
        • 七. Cookie
        • 八. Session
        • 九. 轉發與重定向
        • 十. Spring項目轉SpringBoot
        • 十一. Spring生命周期
        • 十二. 什么是 pom
        • 十三. 為什么會返回JSON格式數據
        • 十四. 跨域請求 CORS
      • 2?? Spring基礎知識
        • 一. 注解開發說明
        • 二. 配置 Bean
        • 三. 配置第三方 Bean
        • 四. 單例與多實例
        • 五. @Autowired說明
        • 六. Bean的生命周期
        • 七. 條件裝配:Bean加載控制
        • 八. 為Bean內的變量賦值
        • 九. Spring事務管理
        • 十. JdbcTemplate解釋
        • 十一. P命名空間
        • 十二. 關閉ApplicationContext
        • 十三. 完全注解開發
        • 十四. 獲取 Bean
        • 十五. 導入其他配置項
        • 十六. Bean的分類
      • 3?? Spring MVC基礎知識
        • 一. MVC簡介
        • 二. 衍生的 Bean注解
        • 三. 路徑疊加
        • 四. RESTful風格
        • 五. @RequestMapping詳解
        • 六. 路徑 ant風格
        • 七. 非 RESTful風格說明
        • 八. 域共享對象
        • 九. ModelAndView
        • 十. 請求響應擴展
        • 十一. MVC工作流程
        • 十二. 文件下載
        • 十三. 文件上傳
        • 十四. 攔截、過濾、分發器總結
        • 十五. @RequestParam、@PathVariable區別
        • 十六. 視圖解析器
        • 十七. SpringMVC執行流程
        • 十八. Thymeleaf說明
      • 4?? SpringBoot小知識點
      • 5?? SpringBoot基礎知識
        • 一. 初始項目結構
        • 二. delete、put請求說明
        • 三. jar包與 war包的區別
        • 四. start 與 parent的區別
        • 五. @SpringBootApplication說明
        • 六. #{ }與 ${ }說明
        • 七. @ControllerAdvice說明
        • 八. 臨時配置說明
        • 九. yml格式說明
        • 十. 松散綁定說明
      • 6?? SpringBoot常用操作
        • 一. 頁面跳轉
        • 二. 注解方式獲取請求頭
        • 三. 注解方式獲取Cookie
        • 四. 編碼格式修改
        • 五. 發送郵件
        • 六. Scheduled定時任務
        • 七. Cron格式編寫指南
        • 八. SpringBootAdmin監控
        • 九. 消息中間件
        • 十. 自定義錯誤頁
        • 十一. Slf4j日志使用
        • 十二. 靜態資源訪問
        • 十三. 路徑映射
        • 十四. 服務器日志
        • 十五. 多環境開發 Profile
        • 十六. 優先執行的代碼
        • 十七. 異常處理器
        • 十八. 配置日志等級
        • 十九. 兼容xml配置文件
        • 二十. 讀取標準 yml配置
        • 二十一. 讀取第三方 yml配置
        • 二十二. 攔截器
        • 二十三. 頁面跳轉
      • 7?? SpringBoot常用技巧
        • 一. 獲取UUID的正確姿勢
        • 二. 全路徑名
        • 三. 頁面重定向
        • 四. 表格的畫法
        • 五. yml中相互引用
        • 六. 隨時獲取 ApplicationContext
        • 七. 網站圖標 favicon
        • 八. 跳過測試模塊
        • 九. 排除自動配置
        • 十. 查看 pom組件版本
        • 十一. 正確的項目創建流程
        • 十二. 離線創建SpringBoot程序
        • 十三. 快速制作程序模板
        • 十四. Tomcat替換成Jetty
        • 十五. 修改Banner
        • 十六. 測試中開啟服務器配置
        • 十七. 測試中開啟事務
        • 十八. 測試中的臨時屬性
        • 十九. @JsonIgnore
        • 二十. 項目打包構建
        • 二十一. IDEA隱藏文件
        • 二十二. jdk8單位類
      • 8?? SpringBoot不常用操作
        • 1. 修改配置文件名
        • 2. maven控制yml環境
        • 3. JDBC使用
        • 4. 熱部署
        • 5. 開啟 Bean校驗
        • 6. 代碼中編寫測試
        • 7. 測試用例中設置隨機數據
      • 9?? 整合第三方
        • 一. 整合Mybatis
        • 二. 整合MybatisPlus
        • 三. 整合Druid
      • 🔟 Spring Security
        • 一. 簡介
        • 二. 使用步驟
        • 三. 自定義登錄頁面與返回值
        • 四. 注銷登錄
        • 五. 加鹽 Salt
        • 六. 使用注解進行配置
        • 七. 持久層存儲:數據庫
        • 八. 令牌技術:token
        • 九. WebSocket
        • 十. Swagger2


1?? 簡介

一. 什么是 IoC 容器?

  • 簡介

    Inversion of Control 控制反轉,

    又稱為依賴注入 DI ——Dependency Injection。

  • 解決痛點

    大型程序之間的高耦合性與冗余性,共享組件、統一銷毀。

  • 底層原理

    XML解析、工廠模式、反射。

    IOC容器底層就是對象工廠

  • 意義

    ? 傳統的應用程序中,控制權在程序本身,程序的控制流程完全由開發者控制。在IoC模式下,控制權發生了反轉,即從應用程序轉移到了IoC容器,所有組件不再由應用程序自己創建和配置,而是由IoC容器負責,這樣,應用程序只需要直接使用已經創建好并且配置好的組件。為了能讓組件在IoC容器中被“裝配”出來,需要某種“注入”機制,其將組件的創建+配置與組件的使用相分離,并且,由IoC容器負責管理組件的生命周期。

    總結:Ioc意味著將你設計好的對象交給容器控制,而不是按照傳統在對象內部直接控制

  • 小點:

    • 在 Spring IoC程序中,我們把所有的組件統稱為 Java Bean。
    • Spring容器是通過讀取XML文件后使用反射完成的,其實所有的配置文件差不多都是這樣,Java的反射機制。
    • Spring容器就是 ApplicationContext,它是一個接口,有很多實現類,這里我們選擇 ClassPathXmlApplicationContext,表示它會自動從classpath中查找指定的XML配置文件。
    • Spring還提供了另外一種IoC容器:懶加載對象 BeanFactory。使用方法和 ApplicationContext一樣,但是懶加載主要是第一次獲取時才會加載指定的 Bean對象,而 ApplicationContext則會在創建時一次性加載所有的 Bean對象。
    // 從 ApplicationContext里面獲取 Bean UserMapper mapper=context.gerBean(UserMapper.class);
  • 二. AOP面向切面編程

  • 簡介:

    ? SpringBoot支持面向切面編程,其可以在不改動原代碼的動態添加代碼、動態刪去代碼。這在日志記錄、安全檢查和事務等方面很有用。AOP技術本質上就是一個動態代理,讓我們可以把一些常用功能如權限檢查、日志、事務從業務方法中剝離出來。

  • 題外話:

    ? Spring的 AOP實現基于 JVM的動態代理,所以我們有時候也會這樣子形容——AOP代理、AOP代理對象,意即AOP代理了本來的類對象。

  • 在 Java平臺上對于AOP的織入,一共有三種方式:

    • 編譯器:由編譯器把切面編譯進字節碼,使用aspect關鍵字。
    • 類加載器:利用一個特殊的類加載器,在目標類被裝載到JVM時,對目標類的字節碼文件進行重新加強。
    • 運行期:目標對象和切面都是普通的Java類,通過JVM的動態代理對象功能或者第三方庫實現運行期間動態織入。(最簡單的方式)
  • 原理解釋:

    ? Spring對接口類型使用JDK動態代理,對普通類使用CGLIB創建子類,在之后使用的也是它的子類,但對于用戶來說是無感的。如果一個Bean的class是final,Spring將無法為其創建子類。

    // 原類為 UserTest,打印出來可以看到被 Spring enhance // 并非原類,為其子類。 class com.thinkstu.test.UserTest$$EnhancerBySpringCGLIB$$217a2220
  • AOP:Aspect-Orinented Programing 面向切面編程。

  • OOP:Object-Oriented Programming面向對象編程,封裝、繼承、多態。

  • 常用術語:

  • AOP的使用:

    • 導包
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>
    • 切入:新定義類,并 @Aspect總開關注解,切入點注解。

      • @Around:環繞通知是所有通知里功能最為強大的注解,可以實現前直通知、后直通知、異常通知以及返回通知的功能。

      • @Pointcut解釋:

        @Pointcut("execution(* com.thinkstu.controller.*.*(..))")

    @Aspect //表示AOP @Component public class UsersAspect {@Pointcut("execution(* com.thinkstu.controller.*.*(..))")public void cut() {}@Before(value = "cut()")public void before(JoinPoint joinPoint) { // 返回方法名String name = joinPoint.getSignature().getName();System.out.println("before開始執行----" + name);}@After(value = "cut()")public void after(JoinPoint joinPoint) {System.out.println("after開始執行----");}@AfterReturning(value = "cut()", returning = "result")public void getResult(JoinPoint joinPoint, Object result) { // 方法返回值System.out.println("after開始執行----" + result);}@AfterThrowing(value = "cut()", throwing = "ex")public void afterThrowing(Exception ex) {System.out.println("發生異常------afterThrowing" + ex);}@Around(value = "cut()")public void around(ProceedingJoinPoint pjp) throws Throwable {System.out.println("around優先執行的語句----------");pjp.proceed();System.out.println("around中方法已執行----------");} }
  • 三. SSM整合

    ? SSM整合指 Spring、SpringMVC、Mybatis的整合。

    四. HttpServletRequest

  • 說明

    ? 原生接口。當客戶端通過HTTP協議訪問服務器時,HTTP請求頭中的所有信息都封裝在這個對象中。

    通過 HttpServletRequest我們可以獲得很多信息。

  • 部分功能

    • headers:必須獲得全部的 key,而后才能遍歷出所有的 value。

    • getRemoteAddr:返回發出請求的客戶機的IP地址。

    • getParameter(“username”):獲取請求參數

  • 提示:

    獲取全部請求信息應該使用 RequestEntity,而不是HttpServletRequest。

    單純簡單獲取請求體應該使用 @RequestHeader注解,而不是HttpServletRequest。

    主要感覺 HttpServletRequest有點難用。

  • 五. HttpServletResponse

    ? 原生方式控制返回,但是一般不這樣。

  • 兩種響應方式
  • 六. Cookie 與 Session

  • Cookie與 Session的區別:Session比Cookie安全

    Cookie是客戶端技術,存儲在客戶端。Session是服務器端技術,存儲在服務端。

  • 使用原因

    ? HTTP 是無狀態協議,它不能以狀態來區分和管理請求和響應,也就是說服務器單從網絡連接上無從知道客戶身份。于是我們可以給客戶端頒發通行證,如此服務端便能識別客戶的身份,這就是 Cookie的工作原理。

  • 七. Cookie

  • 概念
  • ? Cookie是服務器存儲在本地機器上的一小段文本。是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息,并隨著每次請求發送到服務器。

    ? Cookie會根據響應報文里的一個叫做Set-Cookie的首部字段信息,通知客戶端保存Cookie。當下次客戶端再向服務端發起請求時,客戶端會自動在請求報文中加入Cookie值之后發送出去。然后服務器端會根據記錄,得到之前的最后狀態信息。

  • set-cookie字段解釋
    • logcookie = 3qjj:設置 Cookie的 key、value值。
    • Expires:設置 cookie有效期,當省略 expires屬性時,Cookie在本次瀏覽器窗口關閉后失效。如果設置了過期時間,瀏覽器就會把cookie保存到硬盤上,關閉后再次打開瀏覽器,這些cookie依然有效直到超過設定的過期時間。
    • Max-age:如果你創建了一個cookie,并將他發送到瀏覽器,默認情況下它是一個會話級別的cookie:存儲在瀏覽器的內存中,用戶退出瀏覽器之后被刪除。如果 你希望瀏覽器將該cookie存儲在磁盤上,則需要使用maxAge,并給出一個以秒為單位的時間。將最大時效設為0則是命令瀏覽器刪除該 cookie。
    • path:限制指定Cookie 的發送范圍的文件目錄,不過另有辦法可避開這項限制。
    • domain:domain屬性指定一級域名。比如,指定 domain是 thinkstu.com,那么只有從一級域名是 thinkstu.com網址發送過來的請求才有效。
    • secure:設置只有在HTTPS安全連接時,才可以發送Cookie。
    • HttpOnly:使 JavaScript 腳本無法獲得 Cookie。通過上述設置,通常從 Web 頁面內還可以對Cookie 進行讀取操作,但使用 JavaScript 的 document.cookie無法讀取附加 HttpOnly 屬性后的Cookie 的內容。
  • Max-age與 Expires的區別

    Expires和max-age都可以用來指定文檔的過期時間,但是二者有一些細微差別。

    Expires表示絕對時間,HTTP 1.0開始使用。Max-age表示相對時間,HTTP 1.1開始使用。

  • 限制情況

    單個cookie在客戶端的限制是3K,就是說一個站點在客戶端存放的COOKIE不能超過3K。

  • 八. Session

  • 思想

    ? 當用戶第一次訪問網站時,網站會為用戶生成唯一的 Session ID值,而后 Session會自動跟隨響應報文 set-Cookie返回給客戶端,所以可以說 Session的設置在一定程度上依賴于 Cookie。可以把Session ID 想象成一種用以區分不同用戶的唯一Id。

  • 強依賴 Cookie與弱依賴

    ? 當我們完全禁掉瀏覽器的cookie的時候,服務端的session可能不能正常使用。這取決于當前環境中 Session對 Cookie的依賴程度,通過規避寫法可以避免強依賴。比如當禁用 Cookie時,PHP會自動把Session ID附著在URL中,繼續正常使用。

  • 九. 轉發與重定向

  • 轉發:forward,客戶端只發送了一次請求,該請求沿著“轉發鏈”執行,所以可以通過request來共享數據。
  • 重定向:redirect,客戶端發送了兩次請求,相當于客戶端自己重新發送了一次請求,這是兩次不一樣的請求,不能通過request共享數據。
  • 十. Spring項目轉SpringBoot

  • 思想:SpringBoot是為了簡化 Spring項目而生的,其兩者在很大程度上兼容。
  • 大致步驟
    • 直接拷貝業務代碼、pom包(這里刪去Spring的依賴)
    • 按 XML編寫配置類 或者直接導入配置類:@Import、@ImportSource
  • 十一. Spring生命周期

    這是一個大工程。

    ? 在 Spring中,由于其生命周期過于復雜,所以 Spring沒有按慣例為所有階段單獨定義方法。

    ? 其使用事件監聽器,我們只需要監聽被干預的階段即可(繼承接口實現)。

    ? 優點表現:統一了管理事件流程,并用泛型區分階段。

  • 簡單實現
  • 生命周期示意圖

    CSDN鏈接

  • [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3QSKrg0v-1651739102961)(https://tva1.sinaimg.cn/large/e6c9d24egy1h1m6y2cq40j20u00ufq76.jpg)]

    十二. 什么是 pom

  • POM:Project Object Model,項目對象模型
  • 簡介:**pom既是一個XML文件,也是 Maven 工程的基本工作單元。**其包含了項目的基本信息,用于描述項目如何構建、聲明項目依賴等。在運行項目時,Maven會在當前目錄中查找并讀取 POM,然后獲取所需的配置信息、執行目標。
  • POM 中可以指定以下配置:
    • 項目依賴
    • 插件
    • 執行目標
    • 項目構建 profile
    • 項目版本
    • 項目開發者列表
    • 相關郵件列表信息
  • **注意:**所有 POM 文件都需要 project 元素和三個必需字段 groupId、artifactId、version。
  • <project xmlns = "http://maven.apache.org/POM/4.0.0"xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.companyname.project-group</groupId><artifactId>project</artifactId><version>1.0</version></project>
  • pom包細究:

    ? 總體結構(四部分),此為阿里云下載的 SpringBoot程序結構,官方與此稍有不同。

  • 項目的總體信息

  • maven依賴庫

  • maven依賴庫設置

  • 構建插件

  • 十三. 為什么會返回JSON格式數據

  • 原因:
    • 使用了 @ResponseBody注解
    • 導入了 Jackson JSON數據格式解析器
  • 使用其他 JSON數據格式解析器:如:GSON、fastJSON
    • 排除 Jackson依賴并導入其他依賴
    • 配置新環境
  • <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></exclusion></exclusions> </dependency> <!--導入新依賴--> <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.80</version> </dependency>

    (Spring官方對 fastJSON的支持度很低,自行配置編碼格式等內容)

    @Configuration class MyFastJsonConfig {@BeanFastJsonHttpMessageConverter fastJsonHttpMessageConverter(){FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();FastJsonConfig config = new FastJsonConfig();config.setCharset(Charset.forName("UTF-8"));config.setDateFormat("yyyy-MM-dd");config.setSerializerFeatures(SerializerFeature.WriteClassName,SerializerFeature.WriteMapNullValue,SerializerFeature.PrettyFormat,SerializerFeature.WriteNullListAsEmpty,SerializerFeature.WriteNullStringAsEmpty);converter.setFastJsonConfig(config);return converter;} } server:port: 80servlet:encoding:force-response: true

    十四. 跨域請求 CORS

  • 簡介:

    ? CORS,Cross-Origin Resource Sharing,是由 W3C制定的一種跨域資源共享技術標準,其目的是為了解決前端的跨域請求。它允許瀏覽器向跨源服務器,發出 XMLHttpRequest請求,從而克服了 AJAX只能同源使用的限制。

  • 特征:

    • 其特征是瀏覽器在發送請求時會攜帶 Origin標識,因為“ 跨域 ”。
    • 服務器如果支持跨域請求,則會檢查 client所攜帶的 Origin正確性,作出相應回應。如果 oringin指定的域名在許可范圍內,服務器返回的相應數據則會多出幾個頭信息字段。

  • 2?? Spring基礎知識

    Spring全稱: Spring Framework

    一. 注解開發說明

    ? Annotation:基于注解的方式 @Component。當我們給類注解時,默認 Bean的命名空間為小寫開頭的全類名,如 UserMapper則為 userMapper,當然我們也可以指定 Bean命名空間。

    二. 配置 Bean

    ? 其實總的來說,配置 Bean的方式有很多種,在SpringBoot的學習過程中我知道起碼有七種。但是在日常的使用中普遍的也就兩種:@Component注解或者 @Bean注解。

  • 說明

    注解的方式需要事先開啟包掃描 @ComponentScan注解。

  • IDEA使用技巧

    當顯示這個小圖標表示注解已生效,點擊可跳轉至 @Autowired被注入的地方。

  • 注意:

    當 Bean被創建時,會首先默認調用其無參構造方法。

    當為餓漢模式時,運行即調用;當為懶漢模式時,使用時才調用。

  • SpringBoot如何設置在創建時調用有參構造方法?

    @Configuration + @Bean

  • 三. 配置第三方 Bean

    ? 采用配置類 @Configuration + @Bean的方式。第三個類可以指在所導入的 jar包中的類,它原來不是 Bean或者我們需要去配置它,但是我們并不能直接的去改寫它,因為繼承太過于麻煩、而且有時 jar中的類會被定義為 final無法繼承。

    @Configuration public class CustomConfig {@BeanRedisTemplate getRedisTemplate(){return new RedisTemplate();} }

    四. 單例與多實例

    ? 當我們創建 Bean時,默認會為我們創建單例 Singleton的實例:即容器初始化時創建 Bean,容器關閉前銷毀 Bean。

    ? Spring默認類型是 singleton,幾乎90%以上的業務使用單實例就可以。

    ? Singleton的優點是效率高;缺點是可能會引發單線程下的線程安全問題。

    ? Prototype的優點是不會觸發單線程安全問題;缺點是每次連接請求都會創建 bean實例,請求數越多性能越低。而且因為創建的實例導致頻繁垃圾回收,GC的時長也相應增加。(garbage cycle)

    多實例的創建:

  • @Scope: 硬編碼格式。
  • @Scope(value = "prototype") @Scope(value = "singleton") @Scope(value = "request") //一次http請求內有效 @Scope(value = "session") //一個用戶會話內有效 @Scope(value = "globalSession") //全局會話內有效

    五. @Autowired說明

    ? 自動注入本身屬性: require = true

    ? 實現功能:在注入時忽略報錯,有則加載、無則使用默認值。

    // 此處并不一定會加載 222,而是該 Bean不存在時才會加載 222,注意這種寫法。 @Autowired(required = false) User user = new User(222); 屬性說明
    @Autowired根據屬性類型自動裝配
    @Qualifier結合@ Autowired根據屬性名稱自動裝配
    @Resource可以根據屬性類型或屬性名稱進行注入
    @Value普通類型屬性注入

    (但是 Spring官方不推薦使用 @Resource,因為注解并非 Spring官方開發,而是屬于 Javax——Java擴展包之中的內容)

    簡單使用:

    ? 配置同類型不同名的 Bean對象。

    @Configuration public class CustomConfig {@Bean@Primary // 默認 BeanUserService get_01() {return new UserServiceImpl();}@Bean("other") // 需指定名稱才能導入UserService get_02() {return new UserServiceImpl();} }

    ? 利用 @Autowired + @Qualifier 進行指定Bean的注入。

    @Autowired @Qualifier("other") UserService service;

    六. Bean的生命周期

    ? Bean也含有生命周期,利用注解(于方法上)我們可以對其進行控制,分別在其創建后、銷毀前。

    ? @PostConstruct@PreDestroy

    @PostConstructvoid initial(){System.out.println("創建后"); }@PreDestroy void destroy(){System.out.println("銷毀前"); }

    七. 條件裝配:Bean加載控制

    ? 即 @Conditional(OnSmtpEnvCondition.class)的形式。

    ? 使用條件注解,使我們能夠更加靈活的裝載 Bean。

  • 簡介:
    • @Conditional注解可以放在方法和類上。
    • 放在方法上和 @Bean一起使用,表示如果 @Conditional注解的參數類 matches方法為true這創建這個 Bean實例,否則不創建。
    • 放在類上結合 @Configuration、@ComponentScan判斷被注解的類是否需要創建
    • 可以同時擁有多個 @Conditional,變式多樣。
  • 簡單使用
  • // 如果Spring中不存在 UsersController Bean,就加載配置 @Configuration @ConditionalOnMissingBean(Cat.class) public class Test {@Beanpublic Dog getMsg(){return new Dog();} } @ConditionalOnBean(name = "com.test.controller.UsersController") @Component("jerry") public class Cat { }

    ( 比如 @ConditionalOnMissingClass(com.pojo.yyoo) ,當不存在此類時,條件為真。)

    八. 為Bean內的變量賦值

    ? Spring在注入一對象時,對象里的變量是如何被賦值的呢?

    ? Spring會調用這些變量的 set___ ( ) 方法從而為這些變量賦值,我們可以控制此流程。

    九. Spring事務管理

  • 四大特性:原子性、隔離性、一致性、持久性
  • 底層原理:AOP面向切面編程
  • 未完待續。
  • 十. JdbcTemplate解釋

  • JDBC是Java操作數據庫的一套規范。
  • JdbcTemplate:**JDBC的模板 **,Spring封裝的 JDBC對象。
  • MyBatis是一個基于 Java的、封裝了 JDBC的持久層框架。
  • 十一. P命名空間

    ? 即存在于 XML配置文件中的擴展寫法(了解即可)。

    實現步驟:

  • 復制標準格式,改成名稱 P。

  • 直接使用

  • 十二. 關閉ApplicationContext

    ? 利用ApplicationContext獲取的對象,最后需要手動的去關閉它。

    兩種方法:

  • try-catch語句
  • 強轉 + close( ):原生的ApplicationContext中無close方法,所以這里需要強轉再 close。
  • 十三. 完全注解開發

  • 要求:創建配置類Configuration,代替XML配置文件
  • 舉個不太恰當的例子
  • 十四. 獲取 Bean

    ? Spring中擁有兩種方式(并非方法)。

  • 按 ID名字獲取

    在SpringBoot中,根據 @Autowired + @Qulifier 獲取

  • 按類型獲取

  • app.getBean("ByID"); app.getBean(___.class);

    十五. 導入其他配置項

    ? 兩種注解。

  • @Import:導入其他配置類。
  • @Import(ConfigUser.class)
  • @ImportResource:導入 XML文件。
  • 十六. Bean的分類

    JavaBean分為兩類:

    • 一類稱為實體類 Bean:專門存儲業務數據的,如 Student、User 等
    • 一類稱為業務類 Bean:指 Service 或 Dao 對象,專門用于處理業務邏輯和數據訪問。

    3?? Spring MVC基礎知識

    一. MVC簡介

  • 全稱:Model View Controller
  • 說明:MVC是模型(model) - 視圖(view) - 控制器(controller)的縮寫,其是一種軟件設計規范,是一種業務邏輯、數據、界面顯示,三者相互分離的方法。
  • 優點:數據層、邏輯層、界面層相互分離,其中邏輯層來負責整體的調用,降低了程序整體的耦合性,從而可以三個人同時開發互不沖突。同時由于擁有清晰的結構性,也便于后期的維護。
  • 二. 衍生的 Bean注解

    ? 這些衍生出來的注解都是同一種東西的不同表現形式,作用完全一樣、只是為了給程序員作區分使用。

    注解@標識為
    Component一般組件
    Controller控制器
    Service事件處理器
    Repository持久層處理器

    三. 路徑疊加

  • 其實說的是 @RequestMapping疊加的情況,此時路徑也會直接進行疊加。
  • @RequestMapping是 SpringMVC提供的注解,其包括 @GetMapping、@PostMapping等。
  • 以下訪問路徑實為:/role/get
  • 四. RESTful風格

  • 全稱:Representational State Transfer,表現形態轉換。

  • 分類(Spring共支持8種)

    GET(查詢)、POST(新增、保存)、PUT(修改)、DELETE(刪除)

  • 說明:

    • 當使用 RESTful風格時,就無路徑參數符號 ? 拼接參數。
    • 當然,RESTful風格只是一種規范,流行于前后端分離開發。
  • 路徑占位符

  • @GetMapping("/{name}/{pass}") void login(@PathVariable("name") String name){System.out.println("login"); }
  • 功能清單范例
  • 功能URL 地址請求方式
    訪問首頁/GET
    查詢全部數據/employeeGET
    刪除/employee/2DELETE
    跳轉到添加數據頁面/toAddGET
    執行保存/employeePOST
    跳轉到更新數據頁面/employee/2GET
    執行更新/employeePUT

    五. @RequestMapping詳解

    ? 該注解屬性有六種,分別為 value、method、produces、consumes、header、params。

    ? 其中注意 headers作用的是請求頭,而 params作用的則是請求參數。

  • value

    指定請求的實際地址。

  • method

    指定請求的method類型, GET、POST、PUT、DELETE等。

  • produces

    指定返回內容的類型,只有當 request請求頭中 Accept屬性包含該 produces指定的類型才能返回數據成功,例如:accept:text/xml。

  • cousumes

    指定request請求提交的內容類型(Content-Type),例如application/json, text/html等。

  • headers

    指定request請求中必須包含某些指定的請求頭header的值,才能讓該方法處理請求。

    例如:Host=127.0.0.1

    “header”:要求請求映射所匹配的請求必須攜帶header請求頭信息

    “!header”:要求請求映射所匹配的請求必須不能攜帶header請求頭信息

    “header=value”:要求請求映射所匹配的請求必須攜帶header請求頭信息且header=value

    “header!=value”:要求請求映射所匹配的請求必須攜帶header請求頭信息且header!=value

  • params

    指定request請求地址中必須包含某些參數值,方法才處理,否則拒絕處理。

    ----params = “key1”==:表示請求必須包含名為key1的請求參數;
    ----params = “!key1”:表示請求不能包含名為key1的請求參數;
    ----params = “key1 != value1”:表示請求必須包含名為key1的請求參數,但是其值不能是value1;
    ----params = {“key1 = value1”, “key2”}:==表示請求必須包含名為key1和key2兩個請求參數,且key1的值必須為value1;

  • params = {"username","password!=123456"}

    六. 路徑 ant風格

    ? SpringMVC支持 ant風格的路徑,即支持 ant風格的通配符,三種

    符號表意
    單個字符
    *0個或多個字符
    **一層或者多層目錄

    七. 非 RESTful風格說明

    ? 本節將展示當我們不采用 RESTful風格時的情況。

  • 一般使用(參數同名時)

    形參參數名應與瀏覽器傳過來的參數名一樣,并不使用 @PathVariable路徑參數注解。

    在該例中,瀏覽器會跳轉至 /static/uuu.html頁面(MVC自動解析跳轉)。

  • 可變長參數

    最后環節,使用數組接收可變長參數。

  • @RequestParam參數

    當形參參數名與瀏覽器傳過來的參數不一致時,使用注解來指定。

    required:是否必須

    name:名字

    defaultValue:當不存在時,則使用默認值。(結合 required = false 使用)

  • 八. 域共享對象

  • 實例:在 url的跳轉中實現數據的共享。

  • 要求:既要實現完整功能,又要范圍最小。

  • 5種方式

    • 原生 Servlet:request.setAttribute( key , value ) + EL表達式。
    • ModelAndView
    • ModelMap
    • HttpSession對象
    • Application對象

  • 九. ModelAndView

  • 說明

    ModelAndView 統一實現了 Model對象和 View對象的功能。

    Model 主要用于向請求域共享數據,其本身是 Map的子類,擁有相應功能。

    View 主要用于設置視圖實現頁面跳轉。

  • 注意

    ? 當未配置其他解析器或者為使用 @ResponseBody注解時,默認使用的是SpringMVC解析器,而SpringMVC解析器會返回 ModelAndView對象。

  • 實現原理

    ? 當控制器處理完請求后,通常控制器會將包含視圖名稱以及一些模型屬性的 ModelAndView對象返回給 DispatcherServlet。因此,在控制器中會構造一個 ModelAndView對象

  • 數據共享:直接使用方法。

  • addObject(String attributeName, Object attributeValue)
  • 頁面跳轉
  • @GetMapping ModelAndView get() {ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("uuu.html");return modelAndView; }

    十. 請求響應擴展

  • 簡介

    正式名稱:HttpMessageConverter 報文信息轉換器

    將請求報文轉換為Java對象,或將Java對象轉換為響應報文。

  • 四種類型:

  • @RequestBody

    ? 該注解加在Controller 的處理方法的形參上,作用是將json格式的數據轉為java對象

    ? 作用于 Post請求,獲取請求體。

    @RequestBody String requestBody @RequestBody User user_date
  • RequestEntity對象

    ? 獲取的是整個請求頭+請求體,getBody( ) 獲取請求體,getHeaders( )獲取請求頭。

    ? **需要理解的是,HttpServletRequest是 Servlet技術,而 RequestEntity是 SpringMVC技術。**使用 RequestEntity而不使用 HttpServletRequest。

    用法:只要控制器方法的形參中設置該類型,其就會自動賦值。

    public String test(RequestEntity reqEntity){// }
  • @ResponseBody

    ? 該注解使用在Controller 方法上的 。將方法的返回值通過適當的轉換器(如 Jackson)轉換為指定的格式之后,寫入到 response 對象的 body 區,通常用來給客戶端返回 JSON 數據或者是 XML 數據。

    ? 當方法上面沒有寫 ResponseBody 時,底層會將方法的返回值封裝為 ModelAndView 對象(原此);需要注意的是,在使用此注解之后不會再走試圖處理器,而是直接將數據寫入到輸入流中,他的效果等同于通過 response 對象輸出指定格式的數據。

  • ResponseEntity對象

    ? 可以定義返回的 HttpStatus(狀態碼)和 HttpHeaders(響應頭) 和響應體 body,當形參出現此時,ModelAndView失效、@ResponseBody注解也失效。

    @RequestMapping("/downExcel") @ResponseBody public String downExcel(HttpServletResponse response) {// response邏輯操作OutputStream os = response.getOutputStream();return "" }
  • 十一. MVC工作流程

    ? 用戶通過視圖層發送請求到服務器,在服務器中請求被Controller接收,Controller調用相應的Model層處理請求,處理完畢將結果返回到Controller,Controller再根據請求處理的結果找到相應的View視圖,渲染數據后最終響應給瀏覽器。

    十二. 文件下載

  • 本質:文件復制。
  • SpringMVC文件下載流程:
    • 先通過輸入流( 例如InputStream )將文件讀取到Java程序中。
    • 建立 byte[ ] 數組,將輸入流讀取到的所有數據都存儲到byte [ ] 數組。
    • 向客戶端響應byte[ ]數組或者類似 **ResponseEntity<byte[ ]>**的響應類型。
  • 文件下載必須要設置的請求頭(設置類型)
  • headers.add("Content-Disposition", "attachment;filename=1.jpg");
  • 使用 ResponseEntity實現下載文件的功能(未跑通)
  • @RequestMapping("/testDown") public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException {ServletContext servletContext = session.getServletContext();//獲取服務器中文件的真實路徑String realPath = servletContext.getRealPath("/static/img/1.jpg");InputStream is = new FileInputStream(realPath);byte[] bytes = new byte[is.available()];//將流讀到字節數組中is.read(bytes);//創建HttpHeaders對象設置響應頭信息MultiValueMap<String, String> headers = new HttpHeaders();//設置要下載方式以及下載文件的名字headers.add("Content-Disposition", "attachment;filename=1.jpg");HttpStatus statusCode = HttpStatus.OK;ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes, headers, statusCode);//關閉輸入流is.close();return responseEntity; }
  • 實踐:

    ? 以上代碼我在 IDEA與服務器上并未跑通,于是我嘗試了別的方法。

    ? 需要說明的是:所有資源都放在/resource/static/里。

    • IDEA跑通,服務器跑通。
    @RestController @RequestMapping("/download") public class DownloadController {@GetMapping("{fileName}")ResponseEntity down(@PathVariable("fileName") String fileName) throws Exception {InputStream file = ClassUtils.getDefaultClassLoader().getResourceAsStream("static/" + fileName);byte[] data = new byte[file.available()];file.read(data);HttpHeaders headers = new HttpHeaders();headers.add("Content-Disposition", "attachment;filename=" + fileName);ResponseEntity responseEntity = new ResponseEntity<>(data, headers, HttpStatus.OK);return responseEntity; }}
    • IDEA跑通,服務器未跑通。

      在路徑兩處多了感嘆號 ! ,暫時不明白原因是什么。

    String realPath =ResourceUtils.getURL("classpath:static/").getPath()+ fileName;

    十三. 文件上傳

  • 本質:文件復制。

  • 上傳功能必需請求頭:

    multipart/form-data,即標明為以二進制方式上傳數據,而不是key-value。

  • <form method="post" enctype="multipart/form-data" action="/upload">圖片:<input type="file"><input type="submit"> </form>
  • 上傳操作要導入額外的依賴包 Apache Commons FileUpload
  • <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version> </dependency>
  • 范例代碼
  • @RequestMapping("/testUp") public String testUp(MultipartFile photo, HttpSession session) throws IOException {//獲取上傳的文件的文件名String fileName = photo.getOriginalFilename();//處理文件重名問題,UUIDString hzName = fileName.substring(fileName.lastIndexOf("."));fileName = UUID.randomUUID().toString() + hzName;//獲取服務器中photo目錄的路徑ServletContext servletContext = session.getServletContext();String photoPath = servletContext.getRealPath("photo");File file = new File(photoPath);if(!file.exists()){file.mkdir();}String finalPath = photoPath + File.separator + fileName;//實現上傳功能photo.transferTo(new File(finalPath));return "success"; }
  • 簡單實踐

    該案例會將文件上傳至與當前項目總文件夾 平齊的文件夾。

  • @RestController @RequestMapping("/upload") public class UploadController {@PostMappingString upload(MultipartFile file, HttpSession session) throws IOException {String filename = file.getOriginalFilename(); String fileType = filename.substring(filename.lastIndexOf(".")); filename = filename.substring(0,filename.indexOf("."))+ "-" + UUID.randomUUID().toString()+fileType;String realPath = ResourceUtils.getURL("images").getPath(); File io_file=new File(realPath); if (!io_file.exists()){io_file.mkdirs(); }file.transferTo(new File(finalPath));return "success"; }}

    十四. 攔截、過濾、分發器總結

  • 英文名稱

    • 攔截器 interceptor:攔截Controller,分為前后攔截器。
    • 過濾器 Filter
    • 分發器 DispatcherServlet
  • 示意圖:

  • 十五. @RequestParam、@PathVariable區別

    ? @RequestParam,@PathVariable 之間的區別。

    ? @RequestParam 和 @PathVariable 注解都是用于從 request中接收請求,兩個都可以接收參數。關鍵點不同的是 @RequestParam 是從request里面拿取值,而 @PathVariable 是從一個 URI模板里面來填充。

    • 用@RequestParam:/login?name=uu&pass=123
      • defaultValue 如果本次請求沒有攜帶這個參數,或者參數為空,那么就會啟用默認值
      • name 綁定本次參數的名稱,要跟URL上面的一樣
      • required 這個參數是不是必須的
      • value 跟name一樣的作用,是name屬性的一個別名**(震驚)**
    • 用@PathVariable:/login/uu/123
      • name-要綁定到的路徑變量的名稱
      • required-指示路徑變量是否為必需
      • value 跟name一樣的作用,是name屬性的一個別名

    十六. 視圖解析器

  • 簡介:

    SpringMVC視圖的種類很多,默認有轉發視圖和重定向視圖。

    但這必須不能存在@ResponseBody注解。

    存在@ResponseBody注解時,就關乎SpringBoot下頁面的跳轉問題,具體使用 ModelAndView。

  • 關注點:Themleaf好像已經很少使用。

  • 轉發視圖

    ? SpringMVC中默認的轉發視圖是 InternalResourceView

    ? 當控制器方法中所設置的視圖名稱以"forward:"為前綴時,會創建InternalResourceView視圖,此時的視圖名稱不會被SpringMVC配置文件中所配置的視圖解析器解析,而是會將前綴"forward:"去掉,剩余部分作為最終路徑通過轉發的方式實現跳轉

  • @RequestMapping("/testForward") public String testForward(){return "forward:/testHello"; }
  • 重定向視圖

    ? SpringMVC中默認的重定向視圖是 RedirectView

    ? 當控制器方法中所設置的視圖名稱以"redirect:"為前綴時,創建RedirectView視圖,此時的視圖名稱不會被SpringMVC配置文件中所配置的視圖解析器解析,而是會將前綴"redirect:"去掉,剩余部分作為最終路徑通過重定向的方式實現跳轉

  • @RequestMapping("/testRedirect") public String testRedirect(){return "redirect:/testHello"; }

    十七. SpringMVC執行流程

    **前置知識:**SpringMVC常用組件

    • DispatcherServlet:前端控制器,不需要工程師開發,由框架提供

    作用:統一處理請求和響應,整個流程控制的中心,由它調用其它組件處理用戶的請求

    • HandlerMapping:處理器映射器,不需要工程師開發,由框架提供

    作用:根據請求的url、method等信息查找Handler,即控制器方法

    • Handler:處理器,需要工程師開發

    作用:在DispatcherServlet的控制下Handler對具體的用戶請求進行處理

    • HandlerAdapter:處理器適配器,不需要工程師開發,由框架提供

    作用:通過HandlerAdapter對處理器(控制器方法)進行執行

    • ViewResolver:視圖解析器,不需要工程師開發,由框架提供

    作用:進行視圖解析,得到相應的視圖,例如:ThymeleafView、InternalResourceView、RedirectView

    • View:視圖

    作用:將模型數據通過頁面展示給用戶

    SpringMVC的執行流程

  • 用戶向服務器發送請求,請求經過Filter后被 SpringMVC 前端控制器 DispatcherServlet捕獲。
  • DispatcherServlet對請求 URL進行解析,得到請求資源標識符 URI,判斷請求 URI對應的映射:

    不存在

    • 判斷是否配置了mvc:default-servlet-handler

      沒配置:則控制臺報映射查找不到,客戶端展示404錯誤

      有配置:則訪問目標資源(一般為靜態資源,如:JS,CSS,HTML),找不到客戶端也會展示404錯誤

    存在(此處的 Handler為 Controller的同一對象不同說法)

    • 根據該URI,調用HandlerMapping獲得該Handler配置的所有相關的對象(包括Handler對象以及Handler對象對應的攔截器),最后以 HandlerExecutionChain執行鏈對象的形式返回。

    • DispatcherServlet 根據獲得的 Handler,選擇一個合適的 HandlerAdapter。

    • 如果成功獲得 HandlerAdapter,此時將開始執行攔截器的 preHandler(…)方法【正向】

    • 提取 Request中的模型數據,填充Handler入參,開始執行 Handler方法,處理請求。在填充 Handler的入參過程中,根據你的配置,Spring將幫你做一些額外的工作:

      a) HttpMessageConveter: 將請求消息(如Json、xml等數據)轉換成一個對象,將對象轉換為指定的響應信息

      b) 數據轉換:對請求消息進行數據轉換。如String轉換成Integer、Double等

      c) 數據格式化:對請求消息進行數據格式化。 如將字符串轉換成格式化數字或格式化日期等

      d) 數據驗證: 驗證數據的有效性(長度、格式等),驗證結果存儲到BindingResult或Error中

  • Handler執行完成后,向DispatcherServlet 返回一個ModelAndView對象。

  • 此時將開始執行攔截器的postHandle(…)方法【逆向】。

  • 根據返回的ModelAndView(此時會判斷是否存在異常:如果存在異常,則執行HandlerExceptionResolver進行異常處理)選擇一個適合的ViewResolver進行視圖解析,根據Model和View,來渲染視圖。

  • 渲染視圖完畢執行攔截器的afterCompletion(…)方法【逆向】。

  • 將渲染結果返回給客戶端。

  • 十八. Thymeleaf說明

  • 簡介:

    • 在目前的企級應用開發中前后端分離是趨勢,但視圖層技術仍有一席之地。
    • Spring Boot 官方推薦使用的模板引擎是 Thymeleaf,Spring Boot 提供了 Thymeleaf自動配置解決方案,因而Spring Boot 中使用 Thymeleaf非常方便。
    • 如果開發者使用的是前后端分離技術,那么開發過程不需要整合視圖層技術。
  • 默認配置說明

    路徑:classpath/template/____,后綴 html。

  • 實現步驟:

    • 導pom start包
    • yml配置屬性
    • controller中使用
  • <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> spring:thymeleaf:prefix: classpath:/template/encoding: UTF-8suffix: .html
  • 實現說明:

    在 cotroller中使用后,會默認返回 ModelAndView對象。

    SpringMVC返回的也是 ModelAndView對象,兩者同為視圖解析器。


  • 4?? SpringBoot小知識點

  • **static與 template目錄:**static中的資源不受保護,可以直接通過 url定位來訪問,而templates中的資源是受保護的。

  • SpringBoot工程在IDEA下需要聯網進行。

  • SpringBoot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化Spring應用的初始搭建以及開發過程。

  • SpringBoot只是簡化Spring與SpringMVC的簡化開發,MybatisPlus也是在簡化Mybatis,本質還是SSM框架。

  • Spring Boot 不支持同時在配置中啟動 HTTP HTTPS 。

  • 一些專業名詞

    • 數據源:DruidDataSource
    • 持久化技術:Mybatis、MybatisPlus
    • 數據庫:MySQL
  • 三種內嵌的數據源

    數據源默認存在的,并不一定需要 Druid。

  • HikariCP(SpringBoot默認數據源)
  • Tomcat的 DataSource
  • Common的 DBCP
  • 三種內嵌數據庫(了解)

    不過到真正上線的時候還是要切換到正式數據庫,而且體驗并不是很好,棄用。

  • H2
  • HSQL
  • Derby
  • MyBatis是一個基于 Java的、封裝了 JDBC的持久層框架,其底層使用 JDBC來編寫。

  • JS等前端庫可通過 pom導入。

    <dependency><groupId>org.webjars</groupId><artifactId>vue</artifactId><version>2.6.14</version> </dependency>
  • Controller路徑命名規則:

    常用復數形式表示,如 users、employees等。

  • 配置文件放在哪?

    在Maven的結構下,配置文件均放在resource目錄里。

  • yml配置信息如何記?

  • 只需要你記得其中幾個關鍵字,然后在 IDEA中敲一敲就能知道個大概。
  • 未知編程思想

    當遇到陌生方法調用時,只需觀察其形參與返回值,在大多數情況下便可了解其用法。

  • html表單說明

    html中的 form表單只能發送 Get或者 Post請求,并不能發送其他請求。

  • Tomcat思想:萬物皆對象。

  • JSON數據格式說明:一共只有兩種格式。

  • - 對象:{ } - 數組:[ ]
  • 寶塔小坑

    • 阿里云與寶塔均存在端口攔截機制,需要在兩邊都打開才能訪問。
    • 即使我在寶塔里部署 SpringBoot項目時設置了隨機端口映射,寶塔也不會默認開啟端口。
  • 關于 long類型

  • **long類型**本身描述的時間單位為**毫秒ms**,熟記。

    5?? SpringBoot基礎知識

    一. 初始項目結構

    ├── HELP.md ├── README.md ├── catcat.iml ├── mvnw ├── mvnw.cmd ├── pom.xml └── src├── main│ ├── java│ │ └── com│ │ └── thinkstu│ │ └── catcat│ │ └── CatcatApplication.java│ └── resources│ ├── application.properties│ ├── static│ └── templates└── test└── java└── com└── thinkstu└── catcat└── CatcatApplicationTests.java

    二. delete、put請求說明

    ? 部分瀏覽器只支持發送 get和 post請求,那么在 SpringBoot中該如何發送 put和 delete請求呢?

    ? SpringMVC 提供了 HiddenHttpMethodFilter 幫助我們將 POST 請求轉換為 DELETE 或 PUT 請求,SpringBoot中默認存在此配置類。

    使用要求:

    • 瀏覽器的請求方式必須為post
    • 瀏覽器必須傳輸請求參數_method

    ? 滿足以上條件,HiddenHttpMethodFilter 過濾器就會將當前請求的請求方式轉換為請求參數_method的值,因此請求參數_method的值才是最終的請求方式。

    三. jar包與 war包的區別

  • 簡介:

    ? jar包和war包都可以看成壓縮文件,都可以用解壓軟件打開,jar包和war包都是為了項目的部署和發布,通常在打包部署的時候,會在里面加上部署的相關信息。

  • 簡單區別:

    • JAR(Java Archive,Java 歸檔文件),是一個完整的項目結構,以流行的 ZIP 文件格式為基礎,jar包本質上就是 zip包,只是額外附加了一些固定的描述文件。
    • war包不是一個完整的項目結構,需要按照傳統的方式去進行部署。war包是 Sun提出的一種 web應用程序格式,與 jar類似,是很多文件的壓縮包。
  • 根本區別:

    ? JAR文件的目的是把類和相關的資源封裝到壓縮的歸檔文件中,而對于WAR文件來說,一個WAR文件代表了一個Web應用程序,它可以包含 Servlet、HTML頁面、Java類、圖像文件,以及組成Web應用程序的其他資源,而不僅僅是類的歸檔文件。

  • 四. start 與 parent的區別

  • 說明:Start與 parent均在 pom文件中。
  • Start指定對應包。
  • parent指定具體版本。
  • <!-- Start示例 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId> </dependency><!-- 對應parent --> <jetty.version>9.4.35.v20201120</jetty.version>

    五. @SpringBootApplication說明

  • 簡介:

    位于主啟動程序上,負責配置主程序

    其實是一個 SpringBoot Configuration( SpringBoot Configuration下面是 @Configuration)。

  • @SpringBootApplication public class Test01Application {public static void main(String[] args) {SpringApplication.run(Test01Application.class, args);}}

    六. #{ }與 ${ }說明

  • 簡介:

    • #{ }用來獲取 Bean類的變量值。
    • ${ }用來獲取 yml文件中的變量值。
  • 范例:

    加載名為users的這個Bean的cycle屬性值

  • @Scheduled(cron = "0/#{users.cycle} * * * * ?") @Data @Component("users") public class Users{Integer cycle=10; }

    七. @ControllerAdvice說明

    ? @ControllerAdvice :全局數據處理,是@Controller 的加強版。

    ? @ControllerAdvice 主要用來處理全局數據,一般搭配@ExceptionHandler、@ModelAttribute 及@InitBinder 使用。而RESTControllerAdvice就是Restful風格的ControllerAdvice;

    八. 臨時配置說明

  • 臨時配置既可以在命令行中修改,也可以在代碼中提前寫好。
  • java -jar xxx.java --server.port 8080

  • 禁止臨時配置
  • 有時我們會為了安全,禁止其他人在運行我們的程序時添加臨時屬性。

    方式:阻止main主程序中的args參數傳到SpringApplication。

    九. yml格式說明

  • 說明:重數據、輕格式。
  • 基本語法格式:
    • 屬性 與 屬性值之間用冒號 : 分隔,屬性值之前要加空格

    • 大小寫敏感,禁止同名,#表注釋。

    • 多屬性值(數組)之間用**小橫桿-**分隔

    • 使用縮進表示層級關系,同層級左側對齊,只允許使用空格。

    • 屬性值支持轉義字符,但必須用雙引號括起來。如:name: "/t name /n"

  • 簡單書寫實例
  • #表示對象,多實例(數組)用 - 符號分隔 users:- name: zhangsanage: 22city: 北京- name: wangwuage: 23city: 海南 #或者 users:- name: zhangsanage: 22city: 北京- name: wangwuage: 23city: 海南#或者 (注:外層中括號表數組,里層大括號表具體對象) users: users2: [{name: zhangsan,age: 22},{name: wangwu,age: 23}]
  • yml格式中互相引用
  • name: duck users: ${name}
  • 特殊寫法
  • version: @project.version@

    表示獲取該程序的version屬性,@ @包裹、輸入會有提示。

    十. 松散綁定說明

  • 簡介:

    松散綁定是 Spring為了兼容各種編程愛好者而制定的規則。

    我們并不需要使用,但是要了解、知道它的存在,其有時會導致程序出現 error。

  • 注意點:

    • 部分支持、部分不支持,使用駝峰命名法永遠沒有錯。
    • @ConfigurationProperties支持松散綁定,@Value不支持。
  • 范例:

  • ? yml中寫的是 dataSource,但是在代碼中以下形式都能綁定上數據。

    @ConfigurationProperties(prefix = "datasource") @ConfigurationProperties(prefix = "Data_Source") @ConfigurationProperties(prefix = "Data-Source") // 羊肉串模式 //等等

    6?? SpringBoot常用操作

    一. 頁面跳轉

    ? 在 SpringBoot條件下,利用 ModelAndView實現。

    二. 注解方式獲取請求頭

    @RequestHeader,Spring中常用方式,非原生的方式。

    經過觀察,其注解的參數與 @RequestParam一樣。

    三. 注解方式獲取Cookie

    @CookieValue,Spring中常用方式,非原生的方式。

    @CookieValue注解一共有三個屬性:value、required、defaultValue,用法同@RequestParam

    四. 編碼格式修改

    ? SpringBoot默認的編碼格式是 UTF-8 (寫在底層源碼中)。

    有三種方式可以定制編碼格式。

  • yml配置

    直接查找 endoding就可以顯現所有的內容。

  • server:servlet:encoding:charset: UTF-8
  • Filter 過濾器配置

    原理:Filter是瀏覽器發送的請求接觸到的第一層服務器端應用。 (代碼省略)

  • 配置類 配置
  • 五. 發送郵件

  • 三個郵件協議

    • SMTP:simple mail transfer protocol 簡單郵件傳輸協議,發送郵件
    • POP3:post office protocol -Version 3 第3代郵局協議,接受郵件
    • IMAP:Internet mail access protocol 互聯網消息協議,用來替代IMAP,接受郵件

    POP3與IMAP的不同點:**首先要得知,**我在這里所說的采用郵件協議為,全部在第三方軟件中采用。采用POP3時,郵件刪除等操作不會同步,即使你在第三方郵件系統刪除了某封郵件,但是在原郵件系統中并不會執行刪除操作。而采用IMAP就是為了改進這一點,實現了同步的操作。

  • 簡單實現三步走:

    • 導包:spring-boot-starter-mail。
    • 配置信息(服務器host、賬號、授權碼等)
    • 代碼實現(自動注入JavaMailSender類)
  • 范例:

    發送簡單郵件

  • <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependency> spring:mail:host: smtp.qq.comusername: you_email@qq.compassword: "Authorized code"default-encoding: UTF-8 @Autowired JavaMailSender sender;@Test void sendEmail(){SimpleMailMessage msg = new SimpleMailMessage();String from="Your email@qq.com";msg.setFrom(from+"(自定義發送昵稱)"); //小括號里有內容~msg.setTo("To email@qq.com");msg.setSubject("標題");msg.setText("內容");sender.send(msg); }

    ? **發送復雜郵件:**html格式、附件等

    • 將 SimpleMailMessage替換成 MimeMessage
    • 借助于 MimeMessageHelper創建郵件內容
    @Autowired JavaMailSender sender; @org.junit.jupiter.api.Test void sendEmail() throws MessagingException {MimeMessage msg= sender.createMimeMessage();MimeMessageHelper msgHelper=new MimeMessageHelper(msg,true);msgHelper.setFrom("Your email@qq.com(哇哇哇)");msgHelper.setTo("To email@qq.com");msgHelper.setText("<a href='http://baidu.com'>鏈接</a>",true);String file="src/main/resources/application.yml";msgHelper.addAttachment("application.yml", new File(file));sender.send(msg);}
  • 郵件中的SSL加密

    ? 發送郵件或者接受郵件時我們可以配置SSL加密,具體要去郵件提供商那邊獲取。

    ? 例如對于騰訊,SSL端口為465或者587,首先開啟 SSL然后再配置端口。

  • 六. Scheduled定時任務

  • 簡介:Spring注解整合的方式只適用于較簡單的情況,復雜業務使用 Quartz
  • 實現步驟:
    • 啟動類上開啟
    • 方法上調用
  • @EnableScheduling @Component public class Test {@Scheduled(cron = "0/5 * * * * ?")void print(){System.out.println("+----+--------+");} }
  • yml額外配置:task擁有兩組配置,我們選擇 sheduling
  • task:scheduling:pool:size: 10 #線程池數量,默認只為1。shutdown:await-termination: false #關閉時是否等待所有完成await-termination-period: 10s #最大等待時間
  • @Scheduled 注解可以利用 @Value形式從 yml中取值
  • @Scheduled(cron = "0/${a.b.c:10} * * * * ?")

    七. Cron格式編寫指南

  • 簡介:

    • 邏輯反人類
    • 在線驗證網站:鏈接
  • 簡單編寫思想

    調整的時間順序,思維應該順著從小到大

  • 編寫規則

    秒數:

    • 范圍 0~59 ,不允許為空值,若值不合法,調度器將拋出 SchedulerException異常
    • ***** 表每隔1秒鐘觸發;
    • , 表在指定的秒數觸發,比如"0,15,45"代表0秒、15秒和45秒時觸發任務
    • - 表在指定范圍內觸發,比如"25-45"代表從25秒開始觸發到45秒結束觸發,每隔1秒觸發1次
    • / 表觸發步進(step),**"/“前面的值代表初始值(”“等同"0”),后面的值代表偏移量。**比如"0/20"或者"/20"代表從0秒鐘開始,每隔20秒鐘觸發1次,即0秒觸發1次,20秒觸發1次,40秒觸發1次;"5/20"代表5秒觸發1次,25秒觸發1次,45秒觸發1次;"10-45/20"代表在[10,45]內步進20秒命中的時間點觸發,即10秒觸發1次,30秒觸發1次。

    純數字系列:

    基于系統時間,比如 5即代表當系統時間走到某分鐘05秒時觸發。

    每分鐘0秒觸發格式為 0 * * * * ? 或者 0 0/1 * * * ? 。

    最后的問號代表什么:

    其實最后一位代表星期幾。為避免與前面沖突,故使用 ? 來表示任意。

  • 八. SpringBootAdmin監控

  • 簡介:

    分布式監控程序,非 SpringBoot官方開發,使用時需導入與之對應的官方版本號,否則報錯。

  • 注意事項:

    子節點要開放什么內容全部由子節點規定,Server無權干涉。(安全性)

  • 實現流程:

    • 導包 admin + SpringBoot Web

    • yml配置主從客戶端

      配置Server,主程序上開啟 @EnableAdminServer注解, yml中配置端口。

      配置Client,yml中配置主服務器即可。

  • 簡單實現

    配置 Server:

  • 創建 SpringBoot程序時選擇 ops中的 Server與 SpringBoot Web項目
  • 配置 yml端口,這里我設置為80
  • 主程序上配置開啟Server
  • server: port: 80 @EnableAdminServer

    配置 Client:

  • 創建SpringBoot程序時選擇 ops中的Server與 SpringBoot Web項目(此處勾選 web純粹是為了能使 SpringBoot項目持續運行,實際生產中可以勾選別的,達到效果就可以)
  • 配置 yml:Server地址、開放的數據內容等
  • server:port: 8080spring:boot:admin:client:url: http://localhost #server路徑地址 management:endpoints:web:exposure:include: "*" #開放所有,即13個端點endpoint:health:show-details: always #展示細節,true。默認false
  • 界面預覽

    打開 Server主頁地址,可以看到許多的數據

  • info信息配置

    • info端點:在 Server中展示 client業務信息的端點,比如程序名、作者,初始值為空。
    # yml文件中添加以下配置 management:info:env:enabled: true #使能夠info info:author: ThinkStudes: "good program" #具體信息,純手工編寫yml
    • 上述配置的另一種實現方案:創建 Bean并繼承 InfoContributor 后編寫配置。
    @Component public class AppinfoContributor implements InfoContributor {@Overridepublic void contribute(Info.Builder builder) {builder.withDetail("msg","good");} }
  • 自定義Health健康狀況

    ? 比如 client程序中存在 Redis,那么就會顯示redis的健康狀況。

    四種狀態:

    ? up在線、down離線、unkown未知、outofservice失去服務。

    ? 我們可以利用四種狀態在編碼中寫一些自定義程序,然后為這些程序添加 health監控。

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yX3TLkw1-1651739102964)(https://tva1.sinaimg.cn/large/e6c9d24egy1h1o6xhkv8sj21xs0u0tcc.jpg)]

    @Component public class HealthConfig extends AbstractHealthIndicator {@Overrideprotected void doHealthCheck(Health.Builder builder){boolean check=true;if (check){builder.withDetail("runtime","xxx");builder.status(Status.UP);}else{builder.withDetail("error","系統運行失敗");builder.status(Status.DOWN);}} }

  • 結合郵件系統:郵件信息報警系統

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MBjnpfJ6-1651739102964)(https://tva1.sinaimg.cn/large/e6c9d24egy1h1o6xhb71xj21cm0man1y.jpg)]

  • 九. 消息中間件

  • 基礎概念:
    • MQ:Message Queue,消息隊列。
    • JMS:Java Message Service;一個規范,等同于JDBC,提供了與消息服務相關的API接口
    • AMQP: advanced message queue protocal,高級消息傳輸協議,一種協議,不一定要遵守。其解決了JMS中的數據格式不唯一的缺點,統一使用byte[ ]。
    • Kafka:大數據技術,可以用作消息中間件,但是主要功能不是此。其是一種高吞吐量的分布式發布訂閱消息系統,提供實時消息功能。
  • JMS規范簡介
    • JMS消息模型

      • Peer-to-peer:P2P,點對點模型,一對一。
      • publish-subscribe:發布訂閱模型,消息可以被多個消費者消費,生產者與消費者完全獨立,不需要告知對方自身的存在。
    • JMS消息種類

      TextMessage、MapMessage、ByteMessage、StreamMessage、ObjectMessage、Message

    • 實現JMS的技術

      ActiveMQ、Redis、RabbitMQ、RocketMQ(沒有完全實現)

  • AMQP協議簡介
    • 優點:

      具有跨平臺性,服務器、供應商、生產者消費者可以使用不同的語言來實現。

    • AMQP消息模型:

      direct exchange、fanout exchange、topic exchange、headers exchange、system exchange

    • AMQP消息種類:byte[ ]

    • AMQP實現:

      RabbitMQ、RockerMQ、StormMQ等

  • 四種消息中間件簡介

    ActiveMQ:Apache產品,社區已經不活躍。

    RabbitMQ:使用頻率較高,速度中等,數據直接寫在磁盤中,不易丟失。

    RocketMQ:阿里巴巴開源的消息中間件,Java語言開發,各方面也表現的比較優越,幾乎同時解決了Kafka和RabbitMQ它們兩個的缺點,速度介于兩者之間,數據不易丟失。

    Kafka:速度快,但數據寫在內存中、易丟失。

  • 實現暫略。

  • 十. 自定義錯誤頁

  • 簡介:

    • Spring Boot 中的錯誤默認由 BasicErrorController 類來處理
    • 如果開發者不需要向用戶展示詳細的錯誤信息,那么可以把錯誤信息定義成靜態頁面
    • 在resources/static 中創建 error目錄,然后導入錯誤展示頁面。
  • 原理:

    ? 當觸發錯誤頁面時,BasicErrorController類被調用。(其將會返回 JSON或 html格式的錯誤數據,具體由用戶請求方式而定)

    • JSON格式的 error得到解決,html格式的 error傳到下一步。
    • 觸發 DefaultErrorViewResolver類,開始在 error目錄查找 4__ 、5__格式的錯誤頁面。
    • **(還是找不到時觸發)**回到 errorHtml ( )方法,使用 error 作為默認的錯誤頁面視圖名,如果名 error的視圖也找不到,就會展示默認錯誤頁面。
  • 簡單實現
  • 獲取錯誤的靜態頁面,置于 /resource/static/error 目錄中。

    • 兩種形式:

      xx形式 與 具體的數字形式。4xx.html、5xx.html的優先級低于具體的數字權限,如404、503等,所以它們是可以同時的存在的。

  • 復雜實現(自由度很高)
  • @Component public class MyException extends DefaultErrorAttributes {@Overridepublic Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions options) {Map<String ,Object> map=super.getErrorAttributes(webRequest, options);map.remove("error");map.put("msg","錯誤請求");return map;} }

    十一. Slf4j日志使用

  • 簡介:

    • Lombok包中提供的注解。
    • 針對類使用、打印類的日志。
    • 在開發中,應該盡量使用日志而不是打印 Print。
  • 簡單實現:

    • 注解實現
    @Slf4j @RestController @RequestMapping("/users") public class UsersController {@GetMapping()String getById(HttpServletResponse response) throws IOException {log.error("fashion");return "啊啊啊啊";} }
    • 原生創建
    Logger log= LoggerFactory.getLogger(UsersController.class);
  • 效果:
  • **從左至右:**日志記錄時間、級別、PID、所屬線程、類對象、信息。

    十二. 靜態資源訪問

  • 簡介

    • 在SpringMVC 中,對于所有的靜態資源都需要開發者手動配置資源過濾
    • Spring Boot簡化了靜態資源過濾配置
    • SpringBoot靜態資源自動化配置類: WebMvcAuto Configuration。
  • 位置說明

    SpringBoot默認會過濾所有的靜態資源,一共有5個位置

    開發者可以將靜態資源放在這5個位置中的任意一個,優先級依次降低

  • classpath:/META-INF/resource/ classpath:/resource/ classpath:/static/ classpath:/public/ /
  • 沖突說明
  • ? 如果將文件夾中存在同名文件,則只有第一個會生效。

    十三. 路徑映射

  • 簡介

    ? 正常情況,如果我們有靜態網頁會放在/static里,然后訪問的時候需要添加 .html后綴。如果不想添加.html后綴,則需要在 Controller中加一層轉發的操作。

    ? 但是我們有更簡單的方法,而且節省資源。

  • 效果:

    訪問 http://localhost/aaa

    相當于 http://localhost/aaa.html

  • 簡單實現:

    首先將文件置于/static下。

  • ? 然后編寫 @Configuration、配置 WebMvcConfigurer接口,實現跳轉。

    @Configuration public class WebMvcConfig implements WebMvcConfigurer {@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/uuu").setViewName("/uuu.html");registry.addViewController("/ooo").setViewName("/ooo.html");} }

    十四. 服務器日志

  • 簡介:

    在服務器中使用日志。

    在正式業務上線后不能使用開發工具進行調試,我們需要日志系統。

  • 說明:

    保存到服務器上的日志數據,我們可以使用 IDEA打開(擁有格式)。

  • 簡單使用

  • logging:file:max-history: 10max-size: 10MBname: server.logpattern:rolling-file-name: server.%d{yyyy-MM-dd}.%i.log

    十五. 多環境開發 Profile

  • 簡介:

    SpringBoot約定在不同環境下配置文件的名稱規則為

    • application-{profile} .properties
    • application-{profile}.yml

    profile占位符表示當前環境的名稱。

  • 作用:

    解決在多環境開發下配置文件混亂的問題。

  • 版本限制說明:

    • SpringBoot 2.4之include
    • SpringBoot 2.4之group
    • 阿里云現在的是2.3.7版本
  • 簡單實現

    • 在主 yml配置文件以外,編寫多份 yml文件
      • application-dev
      • application-devDB
      • application-MVC
    • 在主 yml配置文件中選擇性的引入其他配置文件。

    十六. 優先執行的代碼

  • 簡介:

    ? 有一些特殊任務需要在系統啟動時執行(例如配置文件加載、數據庫初始化等),SpringBoot對此提供了兩種基本一樣的方案:CommandLineRunner類、ApplicationRunner類。

  • 兩種簡單實現:

    ? CommandLineRunner:Spring Boot 項目在啟動時會遍歷所有 CommandLineRunner的實現類,并調用其中的 run 方法,如果整個系統中有多個 CommandLineRunner 的實現類,那么可以使用 @Order注解對這些實現類的調用順序進行排序。Order值越小越優先執行,可為負數,負數最小。

  • @Component @Order(-100) public class StartPrint implements CommandLineRunner {@Overridepublic void run(String... args) throws Exception {System.out.println("優先啟動~");} }

    ? ApplicationRunner:幾乎同上。兩者 Order通用,計算執行順序的時候需要同時參考兩者。

    @Component @Order(-1000) public class Start03 implements ApplicationRunner {@Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println("33333");} }

    十七. 異常處理器

  • 簡介:

    異常,指的是當正常訪問時服務器時發生的異常,并非指 404之類的異常。

  • 簡單實現

    ( utils包下的異常處理類)

  • // 攔截所有異常 @RestControllerAdvice public class ProjectExceptionAdvice {@ExceptionHandler(Exception.class)R allException(Exception ex) {ex.printStackTrace();return new R("服務器發生未知故障,請稍后重試...");} }

    十八. 配置日志等級

  • 簡介:

    在 yml中配置當前日志的打印等級,一共有兩種形式。

    • 按包名劃分
    • 按分組劃分
  • 簡單實現:

  • 按包名劃分

    logging:level:root: error # root是根路徑 / 的正式寫法com.test.controller: info

    分組劃分,先分組再劃定等級。

    logging:group:ebank_name: com.test.controller,com.test.mapperlevel:root: errorebank: info

    十九. 兼容xml配置文件

  • 簡介:

    ? 有時候我們需要改寫一些比較老的程序,或者作 xml文件配置。

    ? 雖然 SpringBoot不推薦使用 xml進行配置,但是如果開發者需要使用 xml配置,那么只需在 resources目錄下提供配置文件、然后在主程序上導入即可。

  • 說明:

    • @ImportResource:導入 XML配置文件。
    • @Import:導入其他配置類。
  • [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yWRboVy5-1651739102965)(https://tva1.sinaimg.cn/large/e6c9d24egy1h1sq40ejyaj214a0aoabn.jpg)]

    二十. 讀取標準 yml配置

  • 簡介:

    ? yml 中編寫了眾多屬性,那么該入伙獲取呢?

  • 獲取方式分類:

    • 單個讀取
    • 全部讀取
    • 選擇讀取
  • 單個讀取:@Value注解

  • @Value("${users[0].name}") String name;@Value("${a.b.c:10}") // 讀取不到則加載默認值 String num;
  • 全部讀取:利用被 Spring封裝的 Enviroment對象,該對象中包含了所有的 yml文件屬性。
  • @Autowired Environment env;@Test void contextLoads() {env.getProperty("users[0].name"); }
  • 選擇讀取:既可以為 Spring原生 Bean注入屬性,也可以為第三方 Bean注入屬性。

    實現步驟:

    • yml存在數據

    • 創建屬性獲取 Bean( @Component + @Data + @ConfigurationProperties 注解)。

      在這一步 Spring可能會提示缺少相應包,按提示導入即可。

    • 注入該 Bean并使用

  • @Data @Component @ConfigurationProperties("users2") public class UsersConfiguration {String name;String age; } // 使用 @Autowired UsersConfiguration userConfig;

    二十一. 讀取第三方 yml配置

  • 簡介:

    ? 我懷疑此種方式存在Bug,單級可以識別,一旦遇到多級就不能識別我的文件。還應該注意的是,方法不止這一種,但這種比較直接。

  • 簡單實現:

    @PropertySource屬性引入第三方文件(得加上類全路徑名)

  • @Data @Configuration @PropertySource(value = "classpath:users.yml") public class CustomConfig {@Value("${users}")Object name; }

    二十二. 攔截器

    ? 所有的攔截器都必須實現 HandlerInterceptor接口。

    ? **攔截器( Interceptor)**同 Filter 過濾器一樣,都是面向切面編程 AOP 的具體實現。

  • 必須實現的三個方法。

    • preHandle:控制器方法執行之前執行 preHandle(),其 boolean類型的返回值表示是否攔截或放行,返回 true為放行,即調用控制器方法;返回 false表示攔截,即不調用控制器方法。當它返回 false 時,表示請求結束,
    • postHandle: 方法在當前請求處理完成之后,也就是 Controller 方法調用之后執行。但是它會在 DispatcherServlet 進行視圖返回渲染之前被調用,我們可以在這個方法中對 Controller 處理之后的 ModelAndView 對象進行操作。
    • afterComplation:該方法在整個請求結束之后,也就是在 DispatcherServlet 渲染了對應的視圖之后執行,主要用來進行資源清理。
    • 執行順序:preHandle ----> Controller ----> postHandle ----> afterComplation
  • 多個攔截器的執行順序

    • 攔截器的執行順序為鏈條
    • ==注意:==當某個攔截器方法返回值為 false時,后續的 Interceptor和 Controller都不會再執行,所以一般需要手寫為 true。
  • 實現步驟:

    • 繼承自 HandlerInterceptor,重寫方法
    • @Configuration中 注冊攔截器:將攔截器 Bean交由 SpringMVC攔截器類 WebMvcConfigurer管理。
  • 在這一步才能配置攔截的路徑,還可以配置排除的路徑 excludePathPatterns。

    二十三. 頁面跳轉

    原理:利用 ModelAndView對象。

    @GetMapping ModelAndView get() {ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("/uuu.html");return modelAndView; }

    7?? SpringBoot常用技巧

    一. 獲取UUID的正確姿勢

    二. 全路徑名

    ? 在 xml或者 yml文件中進行配置時,可以使用全路徑名縮寫形式:classpath:

    classpath:UserMapper.class # 相當于全路徑+UserMapper.class

    三. 頁面重定向

    ? 簡單的頁面重定向,頁面跳轉與重定向并不一樣。

    @GetMapping() String getById(HttpServletResponse response) throws IOException {response.sendRedirect("/cancel.html");return null; }

    四. 表格的畫法

    我是實在想不到,竟然還會有表格畫法這種教程。

    節點用+號碼表示,線條用-號表示,空格表示表中的待填項。

    System.out.println("+----+--------+"); System.out.println("+ | |"); System.out.println("+ | |"); System.out.println("+----+--------+");

    五. yml中相互引用

    ? dollar + 大括號

    username: kkyour_name: ${username}

    六. 隨時獲取 ApplicationContext

  • 為什么能夠實現?

    ? 理解 SpringBoot底層工作源碼,采取官方接口 ___Aware。

  • 簡單實現:

    只要繼承 ApplicationContextAware并實現 set方法即可。

    public class Demo01 implements ApplicationContextAware {ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext=applicationContext;} }

  • 七. 網站圖標 favicon

  • 簡介

    favicon,網站圖標。

    雖然在 html代碼中也可以添加,不過在此添加較為方便。

  • 簡單實現

    • 將普通圖片轉為 ico圖標文件,鏈接
    • 重命名為 favicon.ico ,置于 /resource/static/ 下。
  • 八. 跳過測試模塊

  • 問題簡介

    SpringBoot程序在打包的時候會默認先執行測試類 Test里面的方法。

    這是因為存在 Maven生命周期,后執行的必須先執行前面的所有內容。

  • 解決:maven設置跳過測試

    九. 排除自動配置

  • 簡介:

    手動排除 SpringBoot的自動配置。

  • 兩種實現方法:

    • 主程序上配置

    • yml中配置

    十. 查看 pom組件版本

  • 簡介:

    查看在 pom文件中導入的具體軟件版本(全部)。

    可以分為兩種,Spring官方 與 阿里云鏡像 所創建的 SpringBoot程序并不一樣。

  • Spring官方

    兩層點擊:spring-boot-starter-parentspring-boot-dependencies

  • 阿里云

    dependencyManagement下的與中,點擊查看。

  • 十一. 正確的項目創建流程

  • 簡介:

    有利于項目與項目之間的解耦合,促進開發。

  • 操作流程:

    • 創建空項目工程
    • 在空的項目工程中 添加 所需要的其他組件 module。
  • 十二. 離線創建SpringBoot程序

  • 簡介:

    在沒有網絡的計算機上創建 SpringBoot程序,過程離線。

    但事先需要在官網上把相應文件創建并下載。

  • 步驟:

    • 官網創建、下載
    • 將項目導入離線設備
  • 十三. 快速制作程序模板

  • 簡介:

    制作模板程序,可以在學習的過程中大量復制某份程序。

  • 制作模板步驟:

    • 選擇模板

    • 刪除項目結構的無用文件

    • 刪除pom文件兩行、一行(結束)

      [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-bh5Q4N9S-1651739102967)(https://tva1.sinaimg.cn/large/e6c9d24egy1h1p9wf9t2xj2144092q53.jpg)]

    使用步驟:

    通常都是在項目中直接將上面的模板當成組件module導入。

    • 再復制出一份模板。
    • 在pom文件中把改成新組件名。
    • IDEA中導入,注意此次選擇的是import module而不是new module
    • 設置使用的JDK版本。(結束)

    十四. Tomcat替換成Jetty

  • 簡介:

    排除 Tomcat依賴,可以換成其他任意服務器程序。

  • 步驟:

    • pom中排除 Tomcat依賴
    • pom中新增 Jetty依賴
  • <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions> </dependency> <!-------------分割線--------------> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId> </dependency>

    十五. 修改Banner

  • 簡介:

    修改控制臺打印出來的 Banner廣告位。

  • 兩種方法:

    • 純文字:/resource 中編寫 banner.txt文件,Banner在線生成網站

    • 文字或者圖片:yml中配置

  • #關閉banner spring:main:banner-mode: off#修改banner為指定圖片 spring:banner:image:location: WechatIMG96.jpeg

    十六. 測試中開啟服務器配置

  • 簡介:

    ? 我們在執行測試的時候,SpringBoot默認不開啟服務器、節省資源。但是現在由于業務需求,需要對其測試,采用 WebEnvironment Web環境。

  • @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) public class Test03 {@Testvoid test03(){} }

    webEnviroment參數說明:

  • SpringBootTest.WebEnvironment.NONE:默認值,不啟動服務器
  • SpringBootTest.WebEnvironment.DEFINED_PORT:使用定義的端口
  • SpringBootTest.WebEnvironment.RANDOM_PORT:使用隨機的端口
  • SpringBootTest.WebEnvironment.MOCK:欺騙idea
  • 十七. 測試中開啟事務

  • 簡介:

    ? 在測試中經常會有寫入數據庫操作,但我只想知道是否執行成功,不想污染數據庫。

  • 步驟:

    • SpringBoot程序中已經導入 mysql + mybatis的包,沒有則無法開啟事務
    • 開啟 @Transational 注解
  • @SpringBootTest @Transactional public class Test04 {@Testvoid test04(){} }

    十八. 測試中的臨時屬性

  • 簡介:

    ? 想要在測試用例中添加一些臨時屬性,在 @SpringBootTest 中使用參數屬性注入即可。

  • @SpringBootTest(properties = {"a=b","server.port=99999"}) public class Test02 {@Value("${a}")String msg1;@Value("${server.port}")String msg2;@Testvoid test02( ){System.out.println(msg1);System.out.println(msg2);} }

    十九. @JsonIgnore

  • 簡介:

    ? 使用 Jackson作為項目的序列化工具時,可以作用在屬性、方法或者類上面,用來規避不想要的序列化功能。

  • @JsonIgnore private String username;

    二十. 項目打包構建

  • 簡介:

    ? 我們在 SpringBoot項目中能夠打包是因為配置了 maven插件,該插件由 SpringBoot parent 中提供。但是其他公司可能不采用 SpringBoot parent 作為parent,此時就需要配置。

  • 示意圖:避免重復打包

  • 二十一. IDEA隱藏文件

  • 簡介:

    隱藏不想看見的文件,避免冗余。

    set up — Edit — File Type.

  • 注意事項

    在 IDEA 2022.01版本中,我遭遇了隱藏文件時產生的 Bug,需注意。

  • 二十二. jdk8單位類

  • 簡介:

    ? JDK8 提供了兩個單位類,用來規范單位的表達形式。

    分別為:

    • 時間單位:Duration
    • 容量大小單位:DataSize
  • //使用 1. Duration duration1=Duration.of(3, ChronoUnit.HOURS); 2. Duration duration2=Duration.ofHours(3);3. @DurationUnit(ChronoUnit.HOURS)Duration duration3;//DataSize同理,例如: DataSize dataSize=DataSize.ofGigabytes(2);

    8?? SpringBoot不常用操作

    1. 修改配置文件名

    修改配置文件名,然后在程序運行時再指定配置文件名

    雖然感覺這種方式比較愚蠢,但是暫時收錄

    2. maven控制yml環境

    maven是比 Spring更底層的存在,Spring建立在 maven的基礎之上。

    我們可以使用 maven來控制并改變 Spring運行的時的 yml文件配置。

    3. JDBC使用

    優勢闡述:

    ? Mybatis之類是基于JDBC開發的,可以說 jdbc是更加底層的存在。

    ? 安全性與底層效率要較其他框架高,銀行相關行業比較熱衷此。

    步驟:

  • 導pom包
  • 自動注入,直接使用
  • <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId> </dependency> @Autowired JdbcTemplate jdbcTemplate;

    4. 熱部署

    說明:

    • 只能夠在開發環境中使用,并不是生產環境,也就是只能在 IDEA中使用
    • 部署比直接運行run速度要快,因為部署是 restart而不是 reload整個工程。
    • 消耗的資源很多,不實用,謹慎開啟

    開啟流程:到pom包、idea設置中開啟。

    5. 開啟 Bean校驗

  • 利用validation(接口)與hibernate(實現類)結合實現。
  • **具體功能:**可對自定義的 Bean在運行時進行數據的校驗,比如最大值 max、最小值 min、范圍 range等的校驗,通過了才能繼續編譯。
  • **具體使用:**對于我,暫時還未想到。
  • <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version> </dependency><dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>8.0.0.Alpha3</version> </dependency>

    6. 代碼中編寫測試

    有時候我們需要在代碼中編寫測試用例,而不使用 postman這類工具。

  • 簡單測試:
  • ? get請求訪問頁面,先開啟webEnviroment、AutoConfigureMockMVC,然后注入MOckMVC,最后執行操作

  • 后續放棄。
  • 7. 測試用例中設置隨機數據

    只是想在測試的時候加載一些隨機數據,應該把以下內容用Profile思想來編寫:即多份yml文件。

  • 編寫yml數據,里面是dollar大括號加上隨機函數random
  • testData:name: ${random.uuid}age: ${random.int(6,100)}id: ${random.value} #MD5加密,32位
  • 代碼中配置(注入即可,之前使用過)
  • @Data @Component @ConfigurationProperties( "testdata") public class TestDataConfig {String name;Integer age;String id; }
  • 使用:直接 @Autowired 即可使用

  • 9?? 整合第三方

    此章節需要日積月累。

    一. 整合Mybatis

  • 導包或者勾選包
  • 配置 yml
  • 編寫 Mapper接口
  • spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/adult?serverTimezone=UTCusername: rootpassword: "$Now2022" @Mapper public interface UsersMapper {@Select("select * from users where id = #{id}")List<Users> getById(Integer id); } @Autowired UsersMapper mapper;
  • 開啟 Mybatis運行日志
  • mybatis:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

    二. 整合MybatisPlus

  • 將Mybatis包換成MybatisPlus包
  • Mapper接口繼承BaseMapper< T >
  • 修改ID自增長策略,逐漸增長而不是雪花算法增長
  • 整合業務層 Iservice與 ServiceImpl
  • 開啟 Mybatis運行日志(非 MybatisPlus功能)
  • @Mapper public interface UsersMapper extends BaseMapper<Users> {@Select("select * from users;")List<Users> getAll(); } public class UsersServiceImpl extends ServiceImpl<UsersMapper,Users> implements UsersService , IService<Users> { } mybatis-plus:global-config:db-config:id-type: autoconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

    三. 整合Druid

  • 導 pom包
  • Yml配置文件加上一行
  • spring:datasource:druid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/adult?serverTimezone=UTCusername: rootpassword: "$Now2022"

    🔟 Spring Security

    一門登錄技術, 學會不易。

    一. 簡介

  • Spring Security是基于內存級別的認證,不是數據庫。

  • SpringBoot為 SpringSecurity提供了很好的支持。

  • 導包之后,SpringSecurity為我們提供了一個默認頁面登錄頁面(未登錄時攔截了所有的請求!),默認賬號為user,密碼見控制臺。如果對初始的賬號密碼不滿意,可以在yml中修改。

    spring:security:user:name: adminpassword: adminroles: ADMIN #此處是區分大小寫的,需特別注意
  • 二. 使用步驟

  • 導包

  • yml簡單配置

  • 代碼中正式配置

    配置說明:

    • 訪問/admin/** 需要 ADMIN角色權限

    • 訪問/user/ ** 需要 CAT或者 USER角色權限。

    • 訪問其他任意資源都要先登錄。

    • 默認登錄頁面是 /login。

    • permitAll作用于 /login ,表示和登錄相關的接口都不需要認證即可訪問。

    • csrf( ).disable( )表示關閉 csrf,防止服務器被 csrf攻擊。

      (csrf攻擊:Cross Site Request Forgery,跨站請求偽造。)

  • @Configuration public class MyWebSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN").antMatchers("/user/**").access("hasAnyRole('CAT','USER')").anyRequest().authenticated().and().formLogin().loginProcessingUrl("/login").permitAll().and().csrf().disable();} }
  • Basic認證:添加 Basic認證能夠讓 Postman可訪問。
  • .and().httpBasic()

    三. 自定義登錄頁面與返回值

  • 簡介:

    ? 目前為止我們使用的還都是 Spring Security默認提供的登錄頁面。

    ? 在前后端分離的開發中,我們需要自定義登錄頁面與返回的 JSON格式數據

  • 思想:

    • 雖然新登錄地址是/login_new,但是最終的數據提交地址還是/login。
    • 對于傳輸過程中的參數 usename與 password可以自定義而不必固定。
    • 可以設置登錄成功、失敗返回的數據。
  • 簡單實現(配置):

  • .and() .formLogin() .loginPage("/login_page") .loginProcessingUrl("/login") .usernameParameter("name") .passwordParameter("pass") .successHandler((req, resp, auth) -> {Object principal = auth.getPrincipal();System.out.println(principal + "-------principle"); resp.setContentType("application/json;charset=utf-8");PrintWriter writer = resp.getWriter();Map<String, Object> map = new HashMap<>(16);map.put("status", "200");map.put("msg", principal);ObjectMapper om = new ObjectMapper();writer.write(om.writeValueAsString(map));writer.flush();writer.close(); }) .failureHandler((req, resp, exception) -> { resp.setContentType("application/json;charset=utf-8");PrintWriter writer = resp.getWriter();resp.setStatus(401);Map<String, Object> map = new HashMap<>(16);if (exception instanceof LockedException){map.put("msg","賬戶凍結");}else if (exception instanceof BadCredentialsException){map.put("msg","賬號密碼錯誤,請重新輸入");}else {map.put("msg","登錄失敗");}ObjectMapper om = new ObjectMapper();writer.write(om.writeValueAsString(map));writer.flush();writer.close(); }) .permitAll() .and() .csrf() .disable();

    四. 注銷登錄

  • 簡介:

    ? 默認訪問 /logout即可注銷。

    ? 但是在這里我遇到問題,可能是這種方式已經失效。

  • 簡單實現:
  • .and() .logout() .logoutUrl("/logout") .clearAuthentication(true) .invalidateHttpSession(true) .addLogoutHandler((req, resp, authentication) -> { }) .logoutSuccessHandler((req, resp, authentication) -> {try {resp.sendRedirect("/login_page");} catch (IOException e) {e.printStackTrace();} })

    五. 加鹽 Salt

  • 簡介:

    ? 所謂加鹽就是一種加密形式,其既可以是隨機數、也可以是用戶名。

    ? 加鹽之后原本密碼相同的用戶所生成的最終密碼也不會相同,可以有效防止跑庫破解密碼。

  • 傳統加鹽方式:需要在數據庫中記錄用戶的鹽值。

  • Spring Security加鹽

    ? Spring Security提供了多種加鹽方案。

    ? 官方推薦使用BCryptPasswordEncoder,其使用了 BCrypt 強哈希函數,開發者在使用時可以選擇提供 strength 和 SecureRandom 實例 ,strengh越大,密鑰的迭代次數越多,迭代次數為2的strength次方。(strength 取值在4~31 之間,默認為 10)

    @Configuration public class PasswordEncoderConfig {@BeanPasswordEncoder passwordEncoder(){return new BCryptPasswordEncoder(10);} }
  • 簡單使用:

    • 寫 service
    • 注冊時將 encrypt傳到數據庫(代碼編寫)

  • 六. 使用注解進行配置

  • 簡介:

    ? 上面都是使用 Java類來進行Spring Security配置,現在采用注解的形式。

    ? 配置內容:訪問路徑(或者方法)需要授權。

  • 使用步驟:

    • 開啟注解形式
    • 類或者方法上面使用

  • 七. 持久層存儲:數據庫

  • 簡介:

    ? 將 Spring Security基于內存級別的登錄驗證信息存儲到數據庫。

  • 遺憾:暫時未能成功實現。

  • 實現步驟:

    • 創建數據庫對應表:首先得創建三張數據庫用戶表
    • 代碼中實現注冊與登錄等相關業務
  • 建表語句范例:

  • drop table if exists user; drop table if exists role; drop table if exists user_role; create table user(id int primary key auto_increment,username varchar(32),password varbinary(255),enabled tinyint(1),locker tinyint(1) );create table role(id int,name varchar(32),nameZh varchar(32) );create table user_role(id int(11),uid int(11),rid int(11) )

    八. 令牌技術:token

  • 簡介:

    ? 本節基于 OAuth2框架,該框架的使用與實現賬號密碼登錄不沖突。

  • 遺憾:暫時未能成功實現。

  • 令牌技術說明:

    ? 令牌技術的優勢在于可以只授權部分權限給第三方,從而避免了密碼直接泄露的可能性。第三方拿著令牌可以訪問一些基礎資源,如:頭像、用戶名等。很多第三方也只支持 token而不支持 Cookie(如:微信小程序)。

  • 交互流程(三次):

  • OAuth授權模式說明

    ? OAuth具有多種授權模式,其各有千秋、按需選擇。

  • 九. WebSocket

  • 簡介:一種 HTTP即時通信技術,目前流行。
  • 暫無。
  • 十. Swagger2

  • 簡介:

    ? 一種可以將 代碼編寫 和 需求文檔編寫 融為一體的技術(暫時無該需要)。

  • 簡單實現

  • 總結

    以上是生活随笔為你收集整理的SpringBoot笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    久久无码人妻影院 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲精品国偷拍自产在线麻豆 | 国产午夜亚洲精品不卡下载 | av香港经典三级级 在线 | 麻豆果冻传媒2021精品传媒一区下载 | 人妻天天爽夜夜爽一区二区 | 精品无人国产偷自产在线 | 亚洲中文字幕无码一久久区 | 国产精品久久久久9999小说 | 亚洲精品中文字幕久久久久 | a片在线免费观看 | 熟妇人妻激情偷爽文 | 伊人久久大香线蕉午夜 | 亚洲乱码中文字幕在线 | 99久久婷婷国产综合精品青草免费 | 一本色道久久综合亚洲精品不卡 | 精品厕所偷拍各类美女tp嘘嘘 | yw尤物av无码国产在线观看 | 中国女人内谢69xxxxxa片 | 国产无遮挡吃胸膜奶免费看 | 狠狠噜狠狠狠狠丁香五月 | 色爱情人网站 | 国产明星裸体无码xxxx视频 | 呦交小u女精品视频 | 一本久久a久久精品vr综合 | 久久综合给合久久狠狠狠97色 | 欧洲精品码一区二区三区免费看 | 国产乱人偷精品人妻a片 | 国产成人综合美国十次 | 美女黄网站人色视频免费国产 | 精品国偷自产在线视频 | 正在播放老肥熟妇露脸 | 成人欧美一区二区三区黑人 | 久久 国产 尿 小便 嘘嘘 | 久久综合九色综合欧美狠狠 | aa片在线观看视频在线播放 | 欧美一区二区三区 | 国产69精品久久久久app下载 | 天堂一区人妻无码 | 久久久久人妻一区精品色欧美 | 人妻体内射精一区二区三四 | 国产熟女一区二区三区四区五区 | 中文字幕无码av波多野吉衣 | 国模大胆一区二区三区 | 日韩亚洲欧美中文高清在线 | 一本色道久久综合狠狠躁 | 人人妻人人澡人人爽精品欧美 | 国产午夜福利100集发布 | 露脸叫床粗话东北少妇 | 男女作爱免费网站 | 精品一区二区三区无码免费视频 | 精品亚洲成av人在线观看 | 亚洲日韩一区二区三区 | 亚洲无人区一区二区三区 | 粉嫩少妇内射浓精videos | 天堂无码人妻精品一区二区三区 | 最近免费中文字幕中文高清百度 | 在线亚洲高清揄拍自拍一品区 | 亚洲国产成人av在线观看 | 牲欲强的熟妇农村老妇女视频 | 荫蒂添的好舒服视频囗交 | 国产97在线 | 亚洲 | 亚洲自偷自拍另类第1页 | 日本爽爽爽爽爽爽在线观看免 | 国产亚洲欧美日韩亚洲中文色 | 中文字幕无线码 | 国产无遮挡吃胸膜奶免费看 | 熟女体下毛毛黑森林 | 国产精品igao视频网 | 2019nv天堂香蕉在线观看 | 国产av剧情md精品麻豆 | 一个人看的www免费视频在线观看 | 日本精品久久久久中文字幕 | 国产乱人伦偷精品视频 | 精品无人区无码乱码毛片国产 | 成人亚洲精品久久久久 | 国产乱人伦偷精品视频 | 久久精品人妻少妇一区二区三区 | 久久97精品久久久久久久不卡 | 性欧美牲交在线视频 | 狠狠色色综合网站 | 亚洲欧美色中文字幕在线 | 性啪啪chinese东北女人 | 老司机亚洲精品影院无码 | 成人一在线视频日韩国产 | 国产香蕉97碰碰久久人人 | 天天躁夜夜躁狠狠是什么心态 | 国产特级毛片aaaaaa高潮流水 | 伊人色综合久久天天小片 | 人人超人人超碰超国产 | 天堂无码人妻精品一区二区三区 | 精品国产一区二区三区四区在线看 | 少妇性荡欲午夜性开放视频剧场 | 久久精品国产亚洲精品 | 东京无码熟妇人妻av在线网址 | 中文字幕日产无线码一区 | 无码人妻丰满熟妇区五十路百度 | 青青青爽视频在线观看 | 国产黄在线观看免费观看不卡 | 曰韩无码二三区中文字幕 | 亚洲国产精品无码一区二区三区 | 九九热爱视频精品 | 黑人玩弄人妻中文在线 | 精品无人区无码乱码毛片国产 | 亚洲人成网站色7799 | 人妻无码αv中文字幕久久琪琪布 | 国产性生交xxxxx无码 | 亚洲成色在线综合网站 | 成人欧美一区二区三区黑人 | 天干天干啦夜天干天2017 | 成人免费视频在线观看 | 最新国产麻豆aⅴ精品无码 | 小泽玛莉亚一区二区视频在线 | 国产情侣作爱视频免费观看 | 久久久精品成人免费观看 | 欧美兽交xxxx×视频 | 亚洲精品一区国产 | 国产精品va在线播放 | 国产在线精品一区二区高清不卡 | 亚洲精品无码国产 | 妺妺窝人体色www在线小说 | 日本www一道久久久免费榴莲 | 成人片黄网站色大片免费观看 | 国产福利视频一区二区 | 国产精品久久久久久亚洲毛片 | 少妇被黑人到高潮喷出白浆 | 一本色道久久综合亚洲精品不卡 | 精品久久8x国产免费观看 | 国产va免费精品观看 | 两性色午夜视频免费播放 | 狠狠噜狠狠狠狠丁香五月 | 精品无码成人片一区二区98 | 成在人线av无码免观看麻豆 | 国内揄拍国内精品少妇国语 | 欧美人与牲动交xxxx | 亚洲人成人无码网www国产 | 88国产精品欧美一区二区三区 | 亚洲精品成人av在线 | 娇妻被黑人粗大高潮白浆 | 四十如虎的丰满熟妇啪啪 | 精品无码一区二区三区的天堂 | 亚洲男女内射在线播放 | 无遮挡啪啪摇乳动态图 | 正在播放东北夫妻内射 | 天堂亚洲2017在线观看 | 久久久久久国产精品无码下载 | 在线精品国产一区二区三区 | 在线观看欧美一区二区三区 | 少妇性l交大片欧洲热妇乱xxx | 日韩少妇内射免费播放 | 人妻无码αv中文字幕久久琪琪布 | 欧美日韩一区二区综合 | 日韩在线不卡免费视频一区 | 美女毛片一区二区三区四区 | 欧美35页视频在线观看 | 亚洲欧洲日本综合aⅴ在线 | 亚洲精品久久久久avwww潮水 | 国产av一区二区三区最新精品 | 欧美丰满老熟妇xxxxx性 | www国产亚洲精品久久久日本 | 国产精品高潮呻吟av久久4虎 | 麻豆精品国产精华精华液好用吗 | а√天堂www在线天堂小说 | 国产精品久久国产精品99 | 熟妇人妻无码xxx视频 | 国产精品久久久久7777 | 成人精品视频一区二区三区尤物 | 无码国内精品人妻少妇 | 欧美丰满老熟妇xxxxx性 | 国产精品久久久午夜夜伦鲁鲁 | 又粗又大又硬毛片免费看 | 欧美 日韩 亚洲 在线 | 东京无码熟妇人妻av在线网址 | 丰满人妻翻云覆雨呻吟视频 | 日韩av无码一区二区三区 | 中国女人内谢69xxxx | 牲欲强的熟妇农村老妇女视频 | 精品久久久久香蕉网 | 午夜福利试看120秒体验区 | 亚洲区欧美区综合区自拍区 | 日韩视频 中文字幕 视频一区 | 国产内射爽爽大片视频社区在线 | 国产精品久久久久久无码 | 精品国产一区二区三区四区在线看 | 国产精华av午夜在线观看 | 两性色午夜免费视频 | 国产亚洲人成在线播放 | 国产人妻大战黑人第1集 | 爆乳一区二区三区无码 | 亚洲国产欧美日韩精品一区二区三区 | 国产熟女一区二区三区四区五区 | 国产成人无码午夜视频在线观看 | 丝袜人妻一区二区三区 | 中国大陆精品视频xxxx | 欧美 日韩 亚洲 在线 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产舌乚八伦偷品w中 | 久久久久久国产精品无码下载 | 精品欧美一区二区三区久久久 | 国产av剧情md精品麻豆 | 无码福利日韩神码福利片 | 国产办公室秘书无码精品99 | 成人精品一区二区三区中文字幕 | 熟妇女人妻丰满少妇中文字幕 | 亚洲男人av天堂午夜在 | 2020久久超碰国产精品最新 | 99久久亚洲精品无码毛片 | 内射巨臀欧美在线视频 | 精品无码一区二区三区的天堂 | aⅴ在线视频男人的天堂 | 欧美性色19p | 国产成人亚洲综合无码 | 午夜熟女插插xx免费视频 | 亚洲无人区午夜福利码高清完整版 | √天堂资源地址中文在线 | 色噜噜亚洲男人的天堂 | 免费乱码人妻系列无码专区 | a片免费视频在线观看 | 1000部啪啪未满十八勿入下载 | 国产亚洲美女精品久久久2020 | 免费男性肉肉影院 | 中文字幕人妻无码一夲道 | 丰满肥臀大屁股熟妇激情视频 | 99国产精品白浆在线观看免费 | 亚洲人成网站色7799 | 亚洲一区av无码专区在线观看 | 玩弄少妇高潮ⅹxxxyw | 狠狠综合久久久久综合网 | 久久国产精品_国产精品 | 中国女人内谢69xxxx | 国产亚洲欧美日韩亚洲中文色 | 一本大道久久东京热无码av | 日本免费一区二区三区最新 | 久热国产vs视频在线观看 | 男人和女人高潮免费网站 | 亚洲最大成人网站 | 欧美激情内射喷水高潮 | 久久国产自偷自偷免费一区调 | 亚洲精品鲁一鲁一区二区三区 | 日韩人妻系列无码专区 | 少妇人妻偷人精品无码视频 | 婷婷五月综合缴情在线视频 | 欧美怡红院免费全部视频 | 国产亚洲精品久久久久久国模美 | 在线播放亚洲第一字幕 | 亚洲精品一区二区三区大桥未久 | 久久综合香蕉国产蜜臀av | 国精产品一品二品国精品69xx | 国产尤物精品视频 | 国产精品久久久av久久久 | 无码国产激情在线观看 | 精品国产乱码久久久久乱码 | 免费视频欧美无人区码 | 一本一道久久综合久久 | 亚洲国产av精品一区二区蜜芽 | 亚洲精品中文字幕乱码 | 国精产品一区二区三区 | 精品久久久中文字幕人妻 | 国产后入清纯学生妹 | 日本一卡二卡不卡视频查询 | 天天av天天av天天透 | 亚洲狠狠色丁香婷婷综合 | 强辱丰满人妻hd中文字幕 | 麻豆国产人妻欲求不满 | 在线观看国产一区二区三区 | 国产精品-区区久久久狼 | 亚洲欧美日韩综合久久久 | 精品无码国产一区二区三区av | 中文字幕av日韩精品一区二区 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产色在线 | 国产 | 亚洲国产日韩a在线播放 | 亚洲狠狠婷婷综合久久 | 亚洲熟妇色xxxxx欧美老妇y | 国产成人无码av片在线观看不卡 | 亚洲精品国产a久久久久久 | 色综合久久中文娱乐网 | 国产黄在线观看免费观看不卡 | 一区二区三区高清视频一 | 97精品人妻一区二区三区香蕉 | 国产在线精品一区二区三区直播 | 精品无码国产自产拍在线观看蜜 | 99精品久久毛片a片 | 久久综合激激的五月天 | 中文字幕人妻无码一夲道 | 亚洲啪av永久无码精品放毛片 | 久久99精品久久久久久动态图 | 俄罗斯老熟妇色xxxx | 美女黄网站人色视频免费国产 | 精品午夜福利在线观看 | 乱人伦人妻中文字幕无码 | 欧美性生交xxxxx久久久 | 国产欧美精品一区二区三区 | 中文字幕人妻无码一区二区三区 | 天天av天天av天天透 | 久久人人爽人人爽人人片ⅴ | 日日碰狠狠躁久久躁蜜桃 | 亚洲精品一区二区三区在线 | 久久精品国产99久久6动漫 | yw尤物av无码国产在线观看 | 中国女人内谢69xxxxxa片 | 在线播放亚洲第一字幕 | 久久成人a毛片免费观看网站 | www一区二区www免费 | 中文字幕日产无线码一区 | 5858s亚洲色大成网站www | 图片小说视频一区二区 | 欧美熟妇另类久久久久久不卡 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲综合精品香蕉久久网 | 无码av免费一区二区三区试看 | 麻豆国产丝袜白领秘书在线观看 | 亚洲无人区午夜福利码高清完整版 | 午夜精品久久久久久久 | 一二三四社区在线中文视频 | 六十路熟妇乱子伦 | 无码国产激情在线观看 | 色老头在线一区二区三区 | 樱花草在线社区www | 久久久精品欧美一区二区免费 | 日本大香伊一区二区三区 | 一个人免费观看的www视频 | 国产精品人妻一区二区三区四 | 99久久精品日本一区二区免费 | 亚洲精品成a人在线观看 | 精品无码成人片一区二区98 | 女人被男人躁得好爽免费视频 | 久久国产精品_国产精品 | 精品国产青草久久久久福利 | 无码成人精品区在线观看 | 国产人妻精品一区二区三区不卡 | 久久精品国产日本波多野结衣 | 青青青手机频在线观看 | 国产肉丝袜在线观看 | 精品偷拍一区二区三区在线看 | 一二三四社区在线中文视频 | 久久五月精品中文字幕 | 亚洲自偷精品视频自拍 | 中文字幕精品av一区二区五区 | 亚洲成a人一区二区三区 | 中文字幕 人妻熟女 | 国内老熟妇对白xxxxhd | 一本大道伊人av久久综合 | 丝袜美腿亚洲一区二区 | 久久精品国产日本波多野结衣 | 亚洲成熟女人毛毛耸耸多 | 欧美丰满熟妇xxxx性ppx人交 | 51国偷自产一区二区三区 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 午夜精品久久久久久久久 | 99久久99久久免费精品蜜桃 | 欧美肥老太牲交大战 | 欧美xxxxx精品 | 亚洲男人av香蕉爽爽爽爽 | a片免费视频在线观看 | 牲欲强的熟妇农村老妇女 | 日韩精品乱码av一区二区 | 东京热男人av天堂 | 在线a亚洲视频播放在线观看 | 国产后入清纯学生妹 | 人妻有码中文字幕在线 | 亚洲熟悉妇女xxx妇女av | 欧美丰满老熟妇xxxxx性 | 精品久久久无码中文字幕 | 中文字幕无码免费久久99 | 久久精品视频在线看15 | 国产国语老龄妇女a片 | 国内精品一区二区三区不卡 | 午夜精品一区二区三区在线观看 | 亚洲呦女专区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲欧美精品aaaaaa片 | 国产精品无码永久免费888 | 国产极品美女高潮无套在线观看 | 给我免费的视频在线观看 | 国产精品久久久久久亚洲影视内衣 | 久久无码中文字幕免费影院蜜桃 | 丰满肥臀大屁股熟妇激情视频 | 黑森林福利视频导航 | 国产精品久久久久9999小说 | 性色欲网站人妻丰满中文久久不卡 | 强辱丰满人妻hd中文字幕 | 亚洲人成网站在线播放942 | 最新国产乱人伦偷精品免费网站 | 中文无码精品a∨在线观看不卡 | 日本爽爽爽爽爽爽在线观看免 | 精品乱码久久久久久久 | 色欲av亚洲一区无码少妇 | 国产绳艺sm调教室论坛 | 免费人成在线视频无码 | 久久精品人妻少妇一区二区三区 | 5858s亚洲色大成网站www | 无码帝国www无码专区色综合 | 少妇性俱乐部纵欲狂欢电影 | 领导边摸边吃奶边做爽在线观看 | 国内揄拍国内精品少妇国语 | 蜜臀av无码人妻精品 | 亚洲国产精品一区二区美利坚 | 伊人色综合久久天天小片 | 亚洲成av人片在线观看无码不卡 | 色综合视频一区二区三区 | 国产精品久久久久9999小说 | 亚洲欧洲日本综合aⅴ在线 | 丝袜美腿亚洲一区二区 | 在线天堂新版最新版在线8 | 狂野欧美性猛xxxx乱大交 | 国产成人精品无码播放 | 俺去俺来也www色官网 | 大地资源中文第3页 | 男女猛烈xx00免费视频试看 | 免费播放一区二区三区 | 99麻豆久久久国产精品免费 | 国产精品自产拍在线观看 | 精品人妻中文字幕有码在线 | 亚洲国产精品一区二区美利坚 | 国产国产精品人在线视 | 中文字幕乱码中文乱码51精品 | 免费无码肉片在线观看 | 国产成人一区二区三区别 | 少妇愉情理伦片bd | 久久久久se色偷偷亚洲精品av | 曰本女人与公拘交酡免费视频 | 国色天香社区在线视频 | 国内精品久久久久久中文字幕 | 欧美日本免费一区二区三区 | 亚洲国产精品久久人人爱 | 97无码免费人妻超级碰碰夜夜 | 无遮挡啪啪摇乳动态图 | 日本熟妇人妻xxxxx人hd | 亚洲男人av香蕉爽爽爽爽 | 国产av无码专区亚洲a∨毛片 | 久久无码人妻影院 | 亚洲精品成a人在线观看 | 国产偷自视频区视频 | 一区二区三区高清视频一 | 日本大香伊一区二区三区 | 国产午夜福利亚洲第一 | 黑人粗大猛烈进出高潮视频 | 熟妇激情内射com | 亚洲自偷精品视频自拍 | 免费观看又污又黄的网站 | 日韩少妇内射免费播放 | 亚洲呦女专区 | 两性色午夜视频免费播放 | 无人区乱码一区二区三区 | 无码人妻久久一区二区三区不卡 | 一个人看的视频www在线 | 国内精品九九久久久精品 | av无码久久久久不卡免费网站 | 精品亚洲成av人在线观看 | 日日碰狠狠躁久久躁蜜桃 | 欧美性猛交xxxx富婆 | 人妻少妇精品视频专区 | 精品国产一区二区三区四区 | 欧美 丝袜 自拍 制服 另类 | 亚洲成熟女人毛毛耸耸多 | 久久午夜无码鲁丝片午夜精品 | 夜精品a片一区二区三区无码白浆 | 亚洲成a人一区二区三区 | 日本精品久久久久中文字幕 | 中文字幕日韩精品一区二区三区 | 日韩亚洲欧美中文高清在线 | 日日夜夜撸啊撸 | 女人高潮内射99精品 | 久久亚洲中文字幕无码 | 国产亚av手机在线观看 | 55夜色66夜色国产精品视频 | 精品久久久久久人妻无码中文字幕 | 成年美女黄网站色大免费全看 | a片在线免费观看 | 人人澡人人妻人人爽人人蜜桃 | 乱人伦人妻中文字幕无码久久网 | 我要看www免费看插插视频 | 久久国语露脸国产精品电影 | 亚洲国产av美女网站 | 久久99精品国产麻豆 | 人妻熟女一区 | 中文字幕人妻无码一区二区三区 | 国产亚洲精品久久久久久久久动漫 | av无码不卡在线观看免费 | 人人爽人人爽人人片av亚洲 | 亚洲国产午夜精品理论片 | 丝袜足控一区二区三区 | 欧美日韩人成综合在线播放 | 亚洲色欲色欲欲www在线 | 国产明星裸体无码xxxx视频 | 97无码免费人妻超级碰碰夜夜 | 免费国产黄网站在线观看 | 日韩精品无码一区二区中文字幕 | 强伦人妻一区二区三区视频18 | 国产亚洲视频中文字幕97精品 | 老熟妇乱子伦牲交视频 | 2020久久超碰国产精品最新 | 精品少妇爆乳无码av无码专区 | yw尤物av无码国产在线观看 | 97se亚洲精品一区 | 午夜男女很黄的视频 | 久久熟妇人妻午夜寂寞影院 | 婷婷六月久久综合丁香 | 日日摸夜夜摸狠狠摸婷婷 | 啦啦啦www在线观看免费视频 | 亚洲国产精品一区二区美利坚 | 久久久久久久人妻无码中文字幕爆 | 欧美日本精品一区二区三区 | 亚洲第一无码av无码专区 | 亚洲国产成人av在线观看 | 成人欧美一区二区三区黑人免费 | 宝宝好涨水快流出来免费视频 | 无遮无挡爽爽免费视频 | 久久精品中文字幕大胸 | 午夜无码人妻av大片色欲 | 强伦人妻一区二区三区视频18 | 久久久精品国产sm最大网站 | 国产麻豆精品精东影业av网站 | 少妇人妻av毛片在线看 | 香蕉久久久久久av成人 | 国产精品久久精品三级 | a在线亚洲男人的天堂 | 亚洲狠狠色丁香婷婷综合 | 婷婷五月综合激情中文字幕 | 亚洲成a人片在线观看日本 | 久久久久久久女国产乱让韩 | 国产精品第一区揄拍无码 | 亚洲色www成人永久网址 | 少妇无码一区二区二三区 | 少妇无套内谢久久久久 | 全球成人中文在线 | 自拍偷自拍亚洲精品10p | 亚洲日本在线电影 | 人人妻人人澡人人爽欧美一区 | 国产精品二区一区二区aⅴ污介绍 | 曰韩无码二三区中文字幕 | 51国偷自产一区二区三区 | 无码av免费一区二区三区试看 | 日韩成人一区二区三区在线观看 | 日韩人妻无码中文字幕视频 | 国内丰满熟女出轨videos | 精品午夜福利在线观看 | аⅴ资源天堂资源库在线 | 六月丁香婷婷色狠狠久久 | 麻豆md0077饥渴少妇 | 免费男性肉肉影院 | 国产精品沙发午睡系列 | 樱花草在线播放免费中文 | 国产美女极度色诱视频www | 97精品国产97久久久久久免费 | 精品国产一区二区三区四区 | 思思久久99热只有频精品66 | 国产精品怡红院永久免费 | 久久人妻内射无码一区三区 | 久久国产劲爆∧v内射 | 无码一区二区三区在线观看 | 日本在线高清不卡免费播放 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 中文字幕 人妻熟女 | 免费男性肉肉影院 | 成人av无码一区二区三区 | 青青草原综合久久大伊人精品 | 一区二区传媒有限公司 | 丰满少妇女裸体bbw | 国产福利视频一区二区 | 又大又硬又爽免费视频 | www成人国产高清内射 | 欧美精品国产综合久久 | 国产电影无码午夜在线播放 | 成人精品天堂一区二区三区 | 中文字幕人成乱码熟女app | 亚洲精品鲁一鲁一区二区三区 | 久久天天躁狠狠躁夜夜免费观看 | 国产精品多人p群无码 | 亚洲精品一区二区三区在线 | 无码毛片视频一区二区本码 | 精品一区二区三区无码免费视频 | 亲嘴扒胸摸屁股激烈网站 | 欧洲熟妇色 欧美 | 成人无码精品一区二区三区 | 久久久中文久久久无码 | 午夜福利一区二区三区在线观看 | 欧美真人作爱免费视频 | 麻豆精品国产精华精华液好用吗 | 久久99精品国产麻豆 | 欧洲极品少妇 | 国产精品久久久久久久9999 | 国产人妖乱国产精品人妖 | 久久久久免费精品国产 | 中文毛片无遮挡高清免费 | 久久午夜无码鲁丝片午夜精品 | 人妻aⅴ无码一区二区三区 | 精品日本一区二区三区在线观看 | 国产又粗又硬又大爽黄老大爷视 | 亚洲人亚洲人成电影网站色 | 中文字幕av无码一区二区三区电影 | 小sao货水好多真紧h无码视频 | 国产香蕉97碰碰久久人人 | 色噜噜亚洲男人的天堂 | 国产成人精品无码播放 | 在线观看国产一区二区三区 | 中文精品无码中文字幕无码专区 | 无码午夜成人1000部免费视频 | 男女超爽视频免费播放 | 大屁股大乳丰满人妻 | 大胆欧美熟妇xx | 欧美真人作爱免费视频 | 久激情内射婷内射蜜桃人妖 | 巨爆乳无码视频在线观看 | 国产一精品一av一免费 | 精品人妻人人做人人爽夜夜爽 | 亚洲男人av香蕉爽爽爽爽 | 久久亚洲日韩精品一区二区三区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 夜夜影院未满十八勿进 | 无码国产激情在线观看 | 国产精品99爱免费视频 | 男人扒开女人内裤强吻桶进去 | 无遮挡国产高潮视频免费观看 | 亚洲国产综合无码一区 | 国产精品香蕉在线观看 | 亚洲乱码国产乱码精品精 | 欧美一区二区三区视频在线观看 | 亚洲天堂2017无码中文 | 国产三级久久久精品麻豆三级 | 波多野结衣av在线观看 | 国产无av码在线观看 | 国产人妻人伦精品1国产丝袜 | 国内精品久久毛片一区二区 | 人人澡人摸人人添 | 国产9 9在线 | 中文 | 丝袜足控一区二区三区 | 扒开双腿吃奶呻吟做受视频 | 国产精品.xx视频.xxtv | 午夜福利试看120秒体验区 | 成年美女黄网站色大免费全看 | 亚洲成av人片在线观看无码不卡 | 成人性做爰aaa片免费看不忠 | 成人三级无码视频在线观看 | 全球成人中文在线 | 欧美高清在线精品一区 | 亚洲乱码日产精品bd | 国产亚洲tv在线观看 | 香蕉久久久久久av成人 | 日本精品少妇一区二区三区 | 日韩精品无码一区二区中文字幕 | 两性色午夜免费视频 | 欧美日韩一区二区综合 | 国产亲子乱弄免费视频 | 国产av一区二区精品久久凹凸 | 亚洲日韩中文字幕在线播放 | 麻豆果冻传媒2021精品传媒一区下载 | 人妻中文无码久热丝袜 | 无码人妻久久一区二区三区不卡 | 精品人人妻人人澡人人爽人人 | 国产美女极度色诱视频www | 无码av中文字幕免费放 | 亚洲区欧美区综合区自拍区 | 精品亚洲韩国一区二区三区 | 最新版天堂资源中文官网 | 免费看男女做好爽好硬视频 | 国产午夜手机精彩视频 | 国产精品对白交换视频 | 久久久久久九九精品久 | 国产午夜亚洲精品不卡 | 无码播放一区二区三区 | 一本大道伊人av久久综合 | 少妇无码av无码专区在线观看 | 日韩欧美成人免费观看 | 荡女精品导航 | 欧美人与物videos另类 | 亚洲色大成网站www国产 | 久久久久久亚洲精品a片成人 | 无码国内精品人妻少妇 | 国产精品亚洲lv粉色 | 色综合久久88色综合天天 | 无码一区二区三区在线 | 国产成人综合色在线观看网站 | 精品久久久无码中文字幕 | 岛国片人妻三上悠亚 | 国色天香社区在线视频 | 亚洲日本一区二区三区在线 | 乌克兰少妇xxxx做受 | 亚洲va中文字幕无码久久不卡 | 成人亚洲精品久久久久 | 亚洲自偷自拍另类第1页 | 婷婷综合久久中文字幕蜜桃三电影 | 国精产品一品二品国精品69xx | 国产精品人人妻人人爽 | 丰满妇女强制高潮18xxxx | 无码国产色欲xxxxx视频 | 国产在线精品一区二区高清不卡 | 99国产精品白浆在线观看免费 | 人妻aⅴ无码一区二区三区 | 亚洲区小说区激情区图片区 | 亚洲精品一区三区三区在线观看 | 婷婷五月综合缴情在线视频 | 国产人妻精品一区二区三区 | 夜精品a片一区二区三区无码白浆 | 亚洲欧美日韩成人高清在线一区 | 国产午夜精品一区二区三区嫩草 | 国产内射爽爽大片视频社区在线 | 人妻aⅴ无码一区二区三区 | 国产一区二区三区影院 | 在线精品国产一区二区三区 | 亚洲国产成人av在线观看 | 亚洲色成人中文字幕网站 | 国产av久久久久精东av | 国产精品久久久午夜夜伦鲁鲁 | 国产精品香蕉在线观看 | 国内综合精品午夜久久资源 | 国产成人午夜福利在线播放 | www国产亚洲精品久久久日本 | 理论片87福利理论电影 | 精品国产aⅴ无码一区二区 | 色婷婷综合中文久久一本 | 国产午夜精品一区二区三区嫩草 | 扒开双腿吃奶呻吟做受视频 | 女人被男人躁得好爽免费视频 | 国产精品亚洲专区无码不卡 | 性生交大片免费看女人按摩摩 | 无码乱肉视频免费大全合集 | 国产午夜精品一区二区三区嫩草 | 欧美黑人乱大交 | 成人一区二区免费视频 | 人妻与老人中文字幕 | 在线а√天堂中文官网 | 女人高潮内射99精品 | 俺去俺来也在线www色官网 | 国产精品久久久久7777 | 国内精品一区二区三区不卡 | 国产农村乱对白刺激视频 | 性生交大片免费看l | 国产尤物精品视频 | 国产成人精品无码播放 | 国产精品久久久久影院嫩草 | 美女黄网站人色视频免费国产 | 亚洲无人区午夜福利码高清完整版 | 午夜精品一区二区三区在线观看 | 久久久亚洲欧洲日产国码αv | 中文无码成人免费视频在线观看 | 中文字幕人妻丝袜二区 | 免费国产成人高清在线观看网站 | 2020久久超碰国产精品最新 | 久久综合九色综合97网 | 99视频精品全部免费免费观看 | 欧美日韩一区二区免费视频 | 一本久久a久久精品vr综合 | 精品国产av色一区二区深夜久久 | 中国大陆精品视频xxxx | 亚洲一区二区三区香蕉 | 18无码粉嫩小泬无套在线观看 | 亚洲啪av永久无码精品放毛片 | 夜先锋av资源网站 | 久久久久成人片免费观看蜜芽 | 亚洲人交乣女bbw | 九九热爱视频精品 | 国产后入清纯学生妹 | 婷婷丁香六月激情综合啪 | 亚洲色www成人永久网址 | 国产香蕉97碰碰久久人人 | 噜噜噜亚洲色成人网站 | 美女扒开屁股让男人桶 | 狠狠综合久久久久综合网 | 午夜福利不卡在线视频 | 久久人人爽人人爽人人片ⅴ | 欧美喷潮久久久xxxxx | 无码播放一区二区三区 | 黑人粗大猛烈进出高潮视频 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产成人精品必看 | 国产又粗又硬又大爽黄老大爷视 | 夜夜高潮次次欢爽av女 | 强开小婷嫩苞又嫩又紧视频 | 午夜熟女插插xx免费视频 | 人人妻人人澡人人爽精品欧美 | 亚洲熟悉妇女xxx妇女av | 亚洲第一无码av无码专区 | 四虎4hu永久免费 | 99riav国产精品视频 | 久久久av男人的天堂 | 亚洲国产高清在线观看视频 | 精品国产青草久久久久福利 | 国产人妻久久精品二区三区老狼 | 任你躁国产自任一区二区三区 | 色诱久久久久综合网ywww | 55夜色66夜色国产精品视频 | 精品国偷自产在线 | 一本精品99久久精品77 | 久久久久免费精品国产 | 无码av免费一区二区三区试看 | 国产成人亚洲综合无码 | 国产精品久久久久无码av色戒 | 亚洲成a人片在线观看无码 | 亚洲天堂2017无码中文 | 成人精品一区二区三区中文字幕 | 成人片黄网站色大片免费观看 | 激情亚洲一区国产精品 | 国产成人精品久久亚洲高清不卡 | 国产精品亚洲专区无码不卡 | 亚洲一区二区三区国产精华液 | 亚洲狠狠色丁香婷婷综合 | 国产真实乱对白精彩久久 | 久久久亚洲欧洲日产国码αv | 欧洲欧美人成视频在线 | 精品久久久久久人妻无码中文字幕 | 午夜精品久久久久久久 | 亚洲国产欧美国产综合一区 | 女人被爽到呻吟gif动态图视看 | 国产激情精品一区二区三区 | 国产真人无遮挡作爱免费视频 | 午夜精品一区二区三区的区别 | 免费观看黄网站 | 国产乱人伦av在线无码 | 精品国产国产综合精品 | 国内综合精品午夜久久资源 | 久久99精品国产麻豆 | 中文亚洲成a人片在线观看 | 四虎国产精品免费久久 | 欧美丰满老熟妇xxxxx性 | 天天综合网天天综合色 | 亚洲国产欧美在线成人 | 精品亚洲成av人在线观看 | 日本成熟视频免费视频 | 日本乱偷人妻中文字幕 | 狠狠色色综合网站 | 久久久久久国产精品无码下载 | 国产精品无码一区二区三区不卡 | 熟妇人妻无码xxx视频 | 人妻体内射精一区二区三四 | 无码吃奶揉捏奶头高潮视频 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲精品一区二区三区在线观看 | 高清国产亚洲精品自在久久 | 日本在线高清不卡免费播放 | 国产精品成人av在线观看 | 精品乱子伦一区二区三区 | 老司机亚洲精品影院无码 | 欧美野外疯狂做受xxxx高潮 | 无码av岛国片在线播放 | 狠狠色噜噜狠狠狠7777奇米 | 国产精品亚洲专区无码不卡 | 日韩欧美中文字幕公布 | 国产一区二区不卡老阿姨 | 亚洲春色在线视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 99视频精品全部免费免费观看 | 粗大的内捧猛烈进出视频 | 日本在线高清不卡免费播放 | 国产精品.xx视频.xxtv | 亚洲区小说区激情区图片区 | 又湿又紧又大又爽a视频国产 | 黑人粗大猛烈进出高潮视频 | 青青草原综合久久大伊人精品 | 国产一区二区不卡老阿姨 | 国产av剧情md精品麻豆 | 精品无码国产一区二区三区av | 高清不卡一区二区三区 | 国产一区二区三区精品视频 | 久久99国产综合精品 | 精品国精品国产自在久国产87 | 亚洲国精产品一二二线 | 天海翼激烈高潮到腰振不止 | 永久免费观看美女裸体的网站 | 蜜臀av在线播放 久久综合激激的五月天 | 亚洲国产av精品一区二区蜜芽 | 国产九九九九九九九a片 | 人妻无码αv中文字幕久久琪琪布 | 国产人妖乱国产精品人妖 | 国产精品自产拍在线观看 | 精品欧美一区二区三区久久久 | 国产精品美女久久久网av | 天海翼激烈高潮到腰振不止 | 免费乱码人妻系列无码专区 | 久激情内射婷内射蜜桃人妖 | 日韩av无码一区二区三区不卡 | 日日麻批免费40分钟无码 | 久久久久久久女国产乱让韩 | 亚洲区欧美区综合区自拍区 | 国产精品99久久精品爆乳 | 午夜时刻免费入口 | 丰满人妻被黑人猛烈进入 | 亚洲国产av精品一区二区蜜芽 | 久久综合给合久久狠狠狠97色 | 夜夜影院未满十八勿进 | 亚洲一区二区三区播放 | 国产特级毛片aaaaaa高潮流水 | 人妻人人添人妻人人爱 | 色婷婷久久一区二区三区麻豆 | 国产激情综合五月久久 | 99久久亚洲精品无码毛片 | 小泽玛莉亚一区二区视频在线 | 亚洲午夜无码久久 | 国产人妖乱国产精品人妖 | 在线精品国产一区二区三区 | 人人妻在人人 | 国内精品久久久久久中文字幕 | 午夜免费福利小电影 | 久久久久国色av免费观看性色 | 婷婷五月综合缴情在线视频 | 国产激情艳情在线看视频 | 免费看少妇作爱视频 | 国产三级久久久精品麻豆三级 | 亚洲日韩av片在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 日本丰满护士爆乳xxxx | 麻豆国产97在线 | 欧洲 | 婷婷丁香五月天综合东京热 | 久久zyz资源站无码中文动漫 | 亚洲成av人在线观看网址 | 白嫩日本少妇做爰 | 丰满肥臀大屁股熟妇激情视频 | 欧美国产日韩亚洲中文 | a在线亚洲男人的天堂 | 欧洲精品码一区二区三区免费看 | 国产精品-区区久久久狼 | 成人欧美一区二区三区黑人免费 | 老司机亚洲精品影院 | 国产午夜无码视频在线观看 | 18无码粉嫩小泬无套在线观看 | 丰满护士巨好爽好大乳 | 久久久久成人精品免费播放动漫 | 天天躁夜夜躁狠狠是什么心态 | 性啪啪chinese东北女人 | 中文久久乱码一区二区 | 性欧美疯狂xxxxbbbb | 亚洲日本va中文字幕 | 国产亚洲精品久久久ai换 | 老熟妇乱子伦牲交视频 | 国产香蕉尹人综合在线观看 | 成人免费视频在线观看 | 成人精品视频一区二区三区尤物 | 精品国产国产综合精品 | 亚洲国产成人av在线观看 | www国产精品内射老师 | 精品欧美一区二区三区久久久 | 天海翼激烈高潮到腰振不止 | 国产一区二区不卡老阿姨 | 激情人妻另类人妻伦 | 欧美人妻一区二区三区 | 夫妻免费无码v看片 | 波多野结衣乳巨码无在线观看 | 一个人看的www免费视频在线观看 | 丰满人妻精品国产99aⅴ | 亚洲理论电影在线观看 | 国产成人人人97超碰超爽8 | 日本va欧美va欧美va精品 | 久久久精品成人免费观看 | 亚洲国产高清在线观看视频 | 狠狠色噜噜狠狠狠7777奇米 | 一本大道伊人av久久综合 | www国产亚洲精品久久网站 | 最近免费中文字幕中文高清百度 | 男人的天堂2018无码 | 久久天天躁夜夜躁狠狠 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲精品一区二区三区四区五区 | 国产精品久久久久久久影院 | 日本免费一区二区三区最新 | 亚洲成熟女人毛毛耸耸多 | 国产九九九九九九九a片 | 亚洲色成人中文字幕网站 | 国产亚洲tv在线观看 | 久久午夜无码鲁丝片 | 精品久久久无码人妻字幂 | 久久亚洲国产成人精品性色 | 亚洲一区二区观看播放 | 成 人 网 站国产免费观看 | 欧洲欧美人成视频在线 | 国内精品人妻无码久久久影院 | 国产绳艺sm调教室论坛 | 国产精品无码一区二区三区不卡 | 国产亚洲tv在线观看 | 亚洲の无码国产の无码步美 | 国产成人精品视频ⅴa片软件竹菊 | 久久国产精品二国产精品 | 久久久中文久久久无码 | 又粗又大又硬又长又爽 | 国产偷国产偷精品高清尤物 | 国产精品.xx视频.xxtv | 男女猛烈xx00免费视频试看 | 亚洲一区二区三区含羞草 | 青青青爽视频在线观看 | 免费无码av一区二区 | 精品日本一区二区三区在线观看 | 国产猛烈高潮尖叫视频免费 | 亚洲熟女一区二区三区 | 精品国偷自产在线 | 国产疯狂伦交大片 | 国产免费无码一区二区视频 | 久久久国产一区二区三区 | 夜夜高潮次次欢爽av女 | 日韩视频 中文字幕 视频一区 | 中文字幕av日韩精品一区二区 | 午夜精品一区二区三区的区别 | 亚洲а∨天堂久久精品2021 | 伊人久久大香线焦av综合影院 | 99久久亚洲精品无码毛片 | 精品厕所偷拍各类美女tp嘘嘘 | 久久综合久久自在自线精品自 | 亚洲另类伦春色综合小说 | 99精品久久毛片a片 | 在线播放无码字幕亚洲 | 一区二区传媒有限公司 | 亚洲精品久久久久中文第一幕 | 清纯唯美经典一区二区 | 中文字幕无码人妻少妇免费 | 狠狠色丁香久久婷婷综合五月 | 亚洲国产精品美女久久久久 | 少妇厨房愉情理9仑片视频 | 日本熟妇浓毛 | 欧美人与善在线com | 久久国产精品精品国产色婷婷 | 成人欧美一区二区三区黑人免费 | 99riav国产精品视频 | 色偷偷人人澡人人爽人人模 | 成人无码视频免费播放 | 5858s亚洲色大成网站www | 乱码av麻豆丝袜熟女系列 | 377p欧洲日本亚洲大胆 | 亚洲日韩av一区二区三区中文 | 中文久久乱码一区二区 | 在线看片无码永久免费视频 | 久久亚洲中文字幕精品一区 | 四虎永久在线精品免费网址 | 麻豆果冻传媒2021精品传媒一区下载 | 婷婷色婷婷开心五月四房播播 | 欧美性黑人极品hd | 色诱久久久久综合网ywww | 对白脏话肉麻粗话av | 久久99精品久久久久久动态图 | 成人亚洲精品久久久久软件 | 国产亚洲人成在线播放 | 国产精品久久精品三级 | 亚洲乱码中文字幕在线 | 中文字幕无码日韩专区 | 日本xxxx色视频在线观看免费 | 成人毛片一区二区 | 最近的中文字幕在线看视频 | 国产精品毛多多水多 | www国产亚洲精品久久久日本 | 国产免费久久久久久无码 | 99riav国产精品视频 | 国产真实夫妇视频 | 亚洲人成影院在线无码按摩店 | 欧美国产日产一区二区 | 红桃av一区二区三区在线无码av | 伊人久久大香线焦av综合影院 | 伊在人天堂亚洲香蕉精品区 | 久久久亚洲欧洲日产国码αv | 国产精品99久久精品爆乳 | 性做久久久久久久久 | 国产超级va在线观看视频 | 性欧美牲交xxxxx视频 | 国产精华av午夜在线观看 | 国产真人无遮挡作爱免费视频 | 影音先锋中文字幕无码 | 久久zyz资源站无码中文动漫 | 免费男性肉肉影院 | 未满成年国产在线观看 | 亚洲日韩av一区二区三区中文 | 国产一区二区三区精品视频 | 激情内射日本一区二区三区 | 天堂а√在线地址中文在线 | 鲁大师影院在线观看 | 亚洲国产精品久久久久久 | 日韩av无码一区二区三区不卡 | 亚洲成在人网站无码天堂 | 亚洲精品一区国产 | 欧美大屁股xxxxhd黑色 | 无码国模国产在线观看 | 国产精品无码一区二区三区不卡 | 国产香蕉97碰碰久久人人 | 久久久久国色av免费观看性色 | 久久综合狠狠综合久久综合88 | 麻豆国产人妻欲求不满谁演的 | 97人妻精品一区二区三区 | www国产亚洲精品久久网站 | 色老头在线一区二区三区 | 亚洲精品一区二区三区婷婷月 | 牲欲强的熟妇农村老妇女视频 | 国产熟妇另类久久久久 | 丰满人妻精品国产99aⅴ | 日本xxxx色视频在线观看免费 | 无码人妻精品一区二区三区不卡 | 日韩成人一区二区三区在线观看 | 人人澡人摸人人添 | 呦交小u女精品视频 | 丰满人妻翻云覆雨呻吟视频 | 国产热a欧美热a在线视频 | 国产香蕉97碰碰久久人人 | 狂野欧美性猛xxxx乱大交 | 亚洲七七久久桃花影院 | 亚洲日韩精品欧美一区二区 | 日本成熟视频免费视频 | 国产午夜视频在线观看 | 国产亲子乱弄免费视频 | 88国产精品欧美一区二区三区 | 狠狠色噜噜狠狠狠7777奇米 | 国产午夜无码视频在线观看 | 麻豆国产人妻欲求不满 | 嫩b人妻精品一区二区三区 | 国产另类ts人妖一区二区 | 国产艳妇av在线观看果冻传媒 | 国产97人人超碰caoprom | 亚洲综合另类小说色区 | 成人毛片一区二区 | 亚洲欧美日韩成人高清在线一区 | 亚洲区小说区激情区图片区 | 国产精品无套呻吟在线 | 日本一卡二卡不卡视频查询 | 亚洲精品综合一区二区三区在线 | 少妇邻居内射在线 | 国产人妻久久精品二区三区老狼 | 国产无遮挡又黄又爽免费视频 | 成人欧美一区二区三区黑人 | 日欧一片内射va在线影院 | 亚洲欧美精品伊人久久 | 国产精品无码一区二区三区不卡 | 久久久久久a亚洲欧洲av冫 | 高潮毛片无遮挡高清免费 | 成人毛片一区二区 | 丰满护士巨好爽好大乳 | 欧美熟妇另类久久久久久多毛 | 伊人色综合久久天天小片 | 色综合久久久无码网中文 | 国产又爽又猛又粗的视频a片 | 无码乱肉视频免费大全合集 | 国产黄在线观看免费观看不卡 | 无码人妻丰满熟妇区毛片18 | 成人免费视频在线观看 | 国内揄拍国内精品人妻 | 欧美亚洲日韩国产人成在线播放 | 午夜精品久久久久久久久 | 国产无遮挡又黄又爽免费视频 | 成人欧美一区二区三区黑人免费 | 九九久久精品国产免费看小说 | 在线 国产 欧美 亚洲 天堂 | 亚洲精品无码人妻无码 | 亚洲一区二区三区无码久久 | 亚洲а∨天堂久久精品2021 | 亚洲国产精品久久久天堂 | 精品国产乱码久久久久乱码 | 日本精品久久久久中文字幕 | 成人精品天堂一区二区三区 | 在线观看欧美一区二区三区 | 天天燥日日燥 | 欧美成人家庭影院 | 欧美大屁股xxxxhd黑色 | 伊人久久婷婷五月综合97色 | 18黄暴禁片在线观看 | 人妻尝试又大又粗久久 | 在线播放无码字幕亚洲 | 老司机亚洲精品影院 | 国产真实乱对白精彩久久 | 国产精品国产自线拍免费软件 | 国产在热线精品视频 | 中文无码伦av中文字幕 | 三上悠亚人妻中文字幕在线 | 亚洲综合在线一区二区三区 | 日本大乳高潮视频在线观看 | 欧美第一黄网免费网站 | 色综合久久久无码网中文 | 岛国片人妻三上悠亚 | 欧美日韩视频无码一区二区三 | 最新国产乱人伦偷精品免费网站 | 中文字幕人妻无码一区二区三区 | 成人亚洲精品久久久久软件 | 国产电影无码午夜在线播放 | 亚洲色成人中文字幕网站 | 人人澡人人妻人人爽人人蜜桃 | 无码人中文字幕 | av小次郎收藏 | 亚洲中文字幕在线无码一区二区 | a国产一区二区免费入口 | 领导边摸边吃奶边做爽在线观看 | 久久久久亚洲精品男人的天堂 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲成在人网站无码天堂 | 亚洲中文字幕无码中字 | 国内精品人妻无码久久久影院 | 色婷婷久久一区二区三区麻豆 | 亚洲区欧美区综合区自拍区 | 正在播放东北夫妻内射 | 天天拍夜夜添久久精品大 | 波多野结衣一区二区三区av免费 | 99久久精品日本一区二区免费 | 久久熟妇人妻午夜寂寞影院 | 日本一本二本三区免费 | 中文字幕+乱码+中文字幕一区 | 国产一区二区三区四区五区加勒比 | 东京一本一道一二三区 | 狂野欧美性猛交免费视频 | 色老头在线一区二区三区 | 亚洲国产精品久久久天堂 | 天干天干啦夜天干天2017 | 99久久亚洲精品无码毛片 | 欧美黑人性暴力猛交喷水 | 日本精品久久久久中文字幕 | 久久精品国产99久久6动漫 | 国产色xx群视频射精 | 巨爆乳无码视频在线观看 | 日本一区二区三区免费播放 | 国産精品久久久久久久 | 亚洲伊人久久精品影院 | 精品水蜜桃久久久久久久 | 国产精品a成v人在线播放 | 美女张开腿让人桶 | 激情内射亚州一区二区三区爱妻 | 婷婷丁香五月天综合东京热 | 国产色在线 | 国产 | 午夜福利电影 | 欧美激情综合亚洲一二区 | 少妇被黑人到高潮喷出白浆 | 亚洲精品国产品国语在线观看 | 国产在线一区二区三区四区五区 | 久久久久成人精品免费播放动漫 | 欧美人与动性行为视频 | 精品国产国产综合精品 | 黑人巨大精品欧美一区二区 | 日韩亚洲欧美中文高清在线 | 亚洲欧美日韩国产精品一区二区 | 老司机亚洲精品影院无码 | 亚洲s色大片在线观看 | 亚洲精品国产精品乱码视色 | 青青久在线视频免费观看 | 亚洲成在人网站无码天堂 | 国产高潮视频在线观看 | 日韩精品a片一区二区三区妖精 | 亚洲国产欧美国产综合一区 | 日本一区二区三区免费高清 | 人妻少妇精品无码专区动漫 | 丰腴饱满的极品熟妇 | 国产午夜无码视频在线观看 | 久久久久久久久888 | 丝袜人妻一区二区三区 | 人人澡人人妻人人爽人人蜜桃 | 人人妻人人澡人人爽欧美一区 | 中文字幕 人妻熟女 | 久久久国产精品无码免费专区 | 荡女精品导航 | 亚洲精品一区二区三区婷婷月 | 免费国产成人高清在线观看网站 | 国产精品久久福利网站 | 成人av无码一区二区三区 | 一本色道久久综合亚洲精品不卡 | 久久99精品久久久久久 | 亚洲精品成a人在线观看 | 性欧美牲交在线视频 | 国产精品国产自线拍免费软件 | 97资源共享在线视频 | 欧洲美熟女乱又伦 | 无码福利日韩神码福利片 | 99久久无码一区人妻 | 国产精品资源一区二区 | 精品国产福利一区二区 | 国产激情无码一区二区app | 日日摸天天摸爽爽狠狠97 | 午夜肉伦伦影院 | 色欲久久久天天天综合网精品 | 中文字幕精品av一区二区五区 | 麻豆国产丝袜白领秘书在线观看 | 国产成人综合色在线观看网站 | 国产精品爱久久久久久久 | 一本久道久久综合婷婷五月 | 国产精品毛片一区二区 | 蜜桃无码一区二区三区 | 成人精品一区二区三区中文字幕 | 3d动漫精品啪啪一区二区中 | √天堂中文官网8在线 | 麻豆av传媒蜜桃天美传媒 | 欧美老人巨大xxxx做受 | 亚洲人亚洲人成电影网站色 | 人妻少妇精品无码专区动漫 | 97精品人妻一区二区三区香蕉 | 日韩在线不卡免费视频一区 | 高潮毛片无遮挡高清免费视频 | 丰满少妇熟乱xxxxx视频 | √天堂中文官网8在线 | 东京一本一道一二三区 | av小次郎收藏 | 狠狠色噜噜狠狠狠7777奇米 | 午夜不卡av免费 一本久久a久久精品vr综合 | 无码播放一区二区三区 | 少妇高潮一区二区三区99 | 未满小14洗澡无码视频网站 | 亚洲高清偷拍一区二区三区 | 国产成人精品视频ⅴa片软件竹菊 | 日产精品高潮呻吟av久久 | 欧洲精品码一区二区三区免费看 | 精品国产成人一区二区三区 | 无码乱肉视频免费大全合集 | 免费中文字幕日韩欧美 | 好男人社区资源 | 在教室伦流澡到高潮hnp视频 | 在线看片无码永久免费视频 | 久久精品国产日本波多野结衣 | 国产亚av手机在线观看 | 国产精品久久久久久亚洲影视内衣 | 国产欧美精品一区二区三区 | 日韩亚洲欧美精品综合 | 麻豆国产丝袜白领秘书在线观看 | 免费国产黄网站在线观看 | 欧美变态另类xxxx | 日韩人妻少妇一区二区三区 | 精品久久久无码中文字幕 | 夜先锋av资源网站 | 亚洲 欧美 激情 小说 另类 | 亚洲国产精品一区二区美利坚 | 大色综合色综合网站 | 在线精品国产一区二区三区 | 无码福利日韩神码福利片 | 亚洲伊人久久精品影院 | 国产成人无码av在线影院 | 精品无码国产自产拍在线观看蜜 | 中文字幕无码日韩欧毛 | 国产精品无码久久av | 兔费看少妇性l交大片免费 | 亚洲国产综合无码一区 | 日本乱人伦片中文三区 | 国产色视频一区二区三区 | 欧美性黑人极品hd | 人人妻人人澡人人爽欧美一区九九 | 国产内射爽爽大片视频社区在线 | 国产av一区二区三区最新精品 | 狠狠躁日日躁夜夜躁2020 | 亚洲中文字幕成人无码 | 性色欲情网站iwww九文堂 | 欧美老人巨大xxxx做受 | 国产精品丝袜黑色高跟鞋 | 国产精品igao视频网 | 久久天天躁狠狠躁夜夜免费观看 | 精品人人妻人人澡人人爽人人 | 天天做天天爱天天爽综合网 | 亚洲人亚洲人成电影网站色 | 日本欧美一区二区三区乱码 | 3d动漫精品啪啪一区二区中 | 香港三级日本三级妇三级 | 亚洲一区二区三区 | 少妇无码av无码专区在线观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产精品第一国产精品 | 天堂无码人妻精品一区二区三区 | 国产成人午夜福利在线播放 | 欧美丰满少妇xxxx性 | 中文字幕无码免费久久99 | 久精品国产欧美亚洲色aⅴ大片 | 乱码av麻豆丝袜熟女系列 | 国产精品二区一区二区aⅴ污介绍 | 国产又爽又黄又刺激的视频 | 国产后入清纯学生妹 | 国产特级毛片aaaaaa高潮流水 | 亚洲另类伦春色综合小说 | 熟女少妇在线视频播放 | 日本高清一区免费中文视频 | 亚洲区小说区激情区图片区 | 婷婷六月久久综合丁香 | 国产午夜福利100集发布 | 国产女主播喷水视频在线观看 | 亚洲一区二区三区偷拍女厕 | 日韩成人一区二区三区在线观看 | 国产乱子伦视频在线播放 | 午夜无码人妻av大片色欲 | 狠狠综合久久久久综合网 | 国产成人无码a区在线观看视频app | 国产人妖乱国产精品人妖 | 中文毛片无遮挡高清免费 | 97久久超碰中文字幕 | 国产精品第一区揄拍无码 | 日本精品人妻无码免费大全 | 欧洲美熟女乱又伦 | 人人澡人人妻人人爽人人蜜桃 | 无码毛片视频一区二区本码 | 国产精品资源一区二区 | 国产女主播喷水视频在线观看 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 亚洲日韩av一区二区三区四区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲成av人片在线观看无码不卡 | 任你躁在线精品免费 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 亚洲精品一区三区三区在线观看 | 一本色道久久综合亚洲精品不卡 | 亚洲乱码日产精品bd | 国语自产偷拍精品视频偷 | 亚欧洲精品在线视频免费观看 | 青青草原综合久久大伊人精品 | 久久国产精品偷任你爽任你 | 人妻天天爽夜夜爽一区二区 | 成人无码影片精品久久久 | 精品人妻人人做人人爽夜夜爽 | 麻豆国产人妻欲求不满 | 成年女人永久免费看片 | а天堂中文在线官网 | 欧美亚洲国产一区二区三区 | 国产色视频一区二区三区 | 久久久久久久人妻无码中文字幕爆 | 日韩欧美群交p片內射中文 | 一本色道久久综合狠狠躁 | 亚洲啪av永久无码精品放毛片 | 久久久精品欧美一区二区免费 | 国产午夜精品一区二区三区嫩草 | 久久综合九色综合欧美狠狠 | 中文字幕人成乱码熟女app | 狠狠cao日日穞夜夜穞av | 无码国产色欲xxxxx视频 | 精品久久久久久人妻无码中文字幕 | 97久久精品无码一区二区 | 岛国片人妻三上悠亚 | 亚洲国产精品久久久久久 | 国产无遮挡又黄又爽又色 | 双乳奶水饱满少妇呻吟 | 人人妻人人澡人人爽欧美一区九九 | av在线亚洲欧洲日产一区二区 | 无码人妻丰满熟妇区毛片18 | 久久精品丝袜高跟鞋 | 夜夜高潮次次欢爽av女 | 精品偷自拍另类在线观看 | 日本精品人妻无码免费大全 | 国产sm调教视频在线观看 | 青草视频在线播放 | 国产99久久精品一区二区 | 色综合久久中文娱乐网 | 丁香啪啪综合成人亚洲 | 99久久婷婷国产综合精品青草免费 | 亚洲日韩精品欧美一区二区 | 三上悠亚人妻中文字幕在线 | 国产香蕉尹人综合在线观看 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产熟女一区二区三区四区五区 | 亚洲人亚洲人成电影网站色 | 国产精品亚洲一区二区三区喷水 | 波多野结衣aⅴ在线 | 亚洲色偷偷偷综合网 | 香蕉久久久久久av成人 | 国产精品福利视频导航 | 少妇性俱乐部纵欲狂欢电影 | 久久99精品久久久久婷婷 | 在线观看免费人成视频 | 国产精品无码永久免费888 | 欧美老妇与禽交 | 亚洲中文字幕无码中文字在线 | 中文字幕av无码一区二区三区电影 | 强奷人妻日本中文字幕 | 亚洲熟妇色xxxxx欧美老妇 | 国产av一区二区精品久久凹凸 | 黑人玩弄人妻中文在线 | 中文字幕无码av波多野吉衣 | 夫妻免费无码v看片 | 亚洲七七久久桃花影院 | 久久久国产一区二区三区 | 免费视频欧美无人区码 | 国产精品久久福利网站 | 色妞www精品免费视频 | 婷婷丁香五月天综合东京热 | 久久久av男人的天堂 | 成人免费无码大片a毛片 | 精品亚洲成av人在线观看 | 97人妻精品一区二区三区 | 欧美日韩人成综合在线播放 | 国产又爽又黄又刺激的视频 | 亚洲小说图区综合在线 | 亚洲s色大片在线观看 | 人人妻人人澡人人爽欧美一区 | 人人妻人人澡人人爽欧美一区 | 欧洲欧美人成视频在线 | 动漫av网站免费观看 | 在线成人www免费观看视频 | 无码av岛国片在线播放 | 中文字幕人妻丝袜二区 | 97人妻精品一区二区三区 | 精品国产一区二区三区四区 | 秋霞成人午夜鲁丝一区二区三区 | 日韩欧美中文字幕公布 | 久久国产精品二国产精品 | 99久久人妻精品免费一区 | 樱花草在线播放免费中文 | 精品熟女少妇av免费观看 | 激情亚洲一区国产精品 | 高中生自慰www网站 | 国产精品对白交换视频 | 又大又硬又黄的免费视频 | 双乳奶水饱满少妇呻吟 | 丰满少妇人妻久久久久久 | yw尤物av无码国产在线观看 | 欧美高清在线精品一区 | 98国产精品综合一区二区三区 | 乱人伦人妻中文字幕无码 | 亚洲日本va中文字幕 | 亚洲一区二区观看播放 | 国产精品二区一区二区aⅴ污介绍 | 成人性做爰aaa片免费看 | 夜先锋av资源网站 | 亚洲国产成人av在线观看 | 亚洲综合无码久久精品综合 | 中国大陆精品视频xxxx | 5858s亚洲色大成网站www | 天海翼激烈高潮到腰振不止 | 亚洲日韩一区二区三区 | 国产成人无码av在线影院 | 亚洲精品国偷拍自产在线观看蜜桃 | 精品夜夜澡人妻无码av蜜桃 | 女人被男人躁得好爽免费视频 | 日本免费一区二区三区最新 | 亚洲色大成网站www | 国产亚洲精品久久久久久久 | 久久亚洲精品成人无码 | 日韩人妻少妇一区二区三区 | 未满成年国产在线观看 | 在线a亚洲视频播放在线观看 | 欧美国产日韩久久mv | 国产精品无码永久免费888 | 精品无码国产自产拍在线观看蜜 | 成人三级无码视频在线观看 | 国产极品视觉盛宴 | 亚洲性无码av中文字幕 | a在线亚洲男人的天堂 | 中文字幕日产无线码一区 | 亚洲爆乳大丰满无码专区 | 99er热精品视频 | 欧美日韩人成综合在线播放 | 一本久久a久久精品亚洲 | 丰满人妻精品国产99aⅴ | 国产一区二区三区精品视频 | 亚洲娇小与黑人巨大交 | 色爱情人网站 | 人人爽人人澡人人人妻 | 香蕉久久久久久av成人 | 亚洲精品一区二区三区在线观看 | 97人妻精品一区二区三区 | 国产又粗又硬又大爽黄老大爷视 | 牲交欧美兽交欧美 | 欧美一区二区三区视频在线观看 | 领导边摸边吃奶边做爽在线观看 | 人人澡人摸人人添 | 精品国产一区二区三区av 性色 | 老熟妇仑乱视频一区二区 | 亚洲精品欧美二区三区中文字幕 | 狠狠色色综合网站 | 成人片黄网站色大片免费观看 | 亚无码乱人伦一区二区 | 亚洲综合伊人久久大杳蕉 | 久久综合九色综合欧美狠狠 | 中文字幕人成乱码熟女app | 日韩av无码中文无码电影 | 强开小婷嫩苞又嫩又紧视频 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲欧美日韩国产精品一区二区 | 欧美精品一区二区精品久久 | 亚洲日韩一区二区 | 美女黄网站人色视频免费国产 | 天天爽夜夜爽夜夜爽 | 亚洲精品国产精品乱码视色 | 大色综合色综合网站 | 在线观看免费人成视频 | 国内少妇偷人精品视频免费 | 一本久久a久久精品vr综合 | 成人无码精品1区2区3区免费看 | 少妇激情av一区二区 | 人妻少妇被猛烈进入中文字幕 | 一本无码人妻在中文字幕免费 | 亚洲人成网站免费播放 | 四虎国产精品免费久久 | 欧美xxxxx精品 | 在线看片无码永久免费视频 | 亚洲成a人一区二区三区 | 国产小呦泬泬99精品 | 大肉大捧一进一出好爽视频 | 欧美成人免费全部网站 | 全黄性性激高免费视频 | 亚洲色无码一区二区三区 | 亚洲色偷偷偷综合网 | 久久久久99精品成人片 | 人妻人人添人妻人人爱 | 欧美日韩亚洲国产精品 | 亚洲天堂2017无码中文 | 任你躁在线精品免费 | 兔费看少妇性l交大片免费 | 国产av一区二区三区最新精品 | www国产亚洲精品久久网站 | 亚洲精品无码国产 | 国产三级精品三级男人的天堂 | 娇妻被黑人粗大高潮白浆 | 国精品人妻无码一区二区三区蜜柚 | 国产精品久久久av久久久 | 日韩欧美中文字幕公布 | 男人的天堂av网站 | 亚洲国精产品一二二线 | 麻豆md0077饥渴少妇 | 人妻熟女一区 | 狠狠色色综合网站 | 国产办公室秘书无码精品99 | 自拍偷自拍亚洲精品10p | 高清不卡一区二区三区 | 精品午夜福利在线观看 | 日本熟妇人妻xxxxx人hd | 牲欲强的熟妇农村老妇女视频 | 亚洲中文字幕无码中文字在线 | 最新版天堂资源中文官网 | 丰腴饱满的极品熟妇 | 成人无码精品一区二区三区 | 妺妺窝人体色www在线小说 | 人人澡人摸人人添 | 成 人 免费观看网站 | 高潮毛片无遮挡高清免费 | 色欲人妻aaaaaaa无码 | 夜夜躁日日躁狠狠久久av | 成人免费无码大片a毛片 | 老头边吃奶边弄进去呻吟 | 免费播放一区二区三区 | 亚洲精品鲁一鲁一区二区三区 | 曰韩少妇内射免费播放 | 亚洲高清偷拍一区二区三区 | 亚洲 欧美 激情 小说 另类 | 亚洲成av人片在线观看无码不卡 | 狠狠色色综合网站 | 在线播放无码字幕亚洲 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲欧洲中文日韩av乱码 | 欧美性黑人极品hd | 亚洲中文字幕久久无码 | 曰韩无码二三区中文字幕 | 5858s亚洲色大成网站www | 麻豆国产丝袜白领秘书在线观看 | 久久久久久久人妻无码中文字幕爆 | 成人亚洲精品久久久久 | 久久午夜无码鲁丝片 | 无码人妻少妇伦在线电影 | 精品国产国产综合精品 | 亚洲国产精品美女久久久久 | 亚洲日韩av片在线观看 | 久久久久久九九精品久 | 国产精品亚洲专区无码不卡 | 欧美日韩综合一区二区三区 | 成人女人看片免费视频放人 | 国产精品无码成人午夜电影 | 少妇被粗大的猛进出69影院 | 无码播放一区二区三区 | 领导边摸边吃奶边做爽在线观看 | 精品无码成人片一区二区98 | √天堂中文官网8在线 | 日欧一片内射va在线影院 | 欧美猛少妇色xxxxx | 国产午夜视频在线观看 | 无码av免费一区二区三区试看 | 99精品视频在线观看免费 | 日本欧美一区二区三区乱码 | 亚洲国精产品一二二线 | 日韩欧美中文字幕公布 | 真人与拘做受免费视频一 | 久久精品国产大片免费观看 | www国产亚洲精品久久网站 | 18禁黄网站男男禁片免费观看 | 国产精品久久久久久久影院 | 亚洲成a人片在线观看无码3d | 亚洲精品午夜国产va久久成人 | 最新版天堂资源中文官网 | 老头边吃奶边弄进去呻吟 | 色综合久久久无码中文字幕 | 日本熟妇大屁股人妻 | 成人精品视频一区二区三区尤物 | 精品亚洲韩国一区二区三区 | av香港经典三级级 在线 | 久久久久久国产精品无码下载 | 亚洲 欧美 激情 小说 另类 | 牛和人交xxxx欧美 | 国产激情综合五月久久 | 又大又硬又黄的免费视频 | 国产精品无码一区二区桃花视频 | 亚洲日韩av一区二区三区中文 | 国产明星裸体无码xxxx视频 | 67194成是人免费无码 | 国产suv精品一区二区五 | 欧美精品国产综合久久 | 一个人看的视频www在线 | 中文无码伦av中文字幕 | 人人妻人人澡人人爽欧美一区九九 | 国产手机在线αⅴ片无码观看 |