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

版本歷史&代碼示例之:WebSocket、JSTL

開發 后端
WebSocket作為長連接的輕量級解決方案,會是B/S的新寵,一舉替掉之前的長輪訓等方案。滾滾長江東逝水,這或許就印證著技術在進步,時代在發展。

前言

你好,我是方同學(YourBatman)

若你還不太清楚Java EE是什么,可先移步這里:什么是Java EE?

緊接著上一篇講完Servlet、JSP、EL表達式后,本文嘗試把WebSocket和JSTL再疏通疏通。

[[424135]]

所屬專欄

BATutopia-Java EE

相關下載

  • 工程源代碼:https://github.com/yourbatman/BATutopia-java-ee
  • 【女媧Knife-Initializr工程】訪問地址:http://152.136.106.14:8761
  • Java開發軟件包(Mac):https://wangpan.yourbatman.cn/s/rEH0 提取碼:javakit
  • 程序員專用網盤上線啦,開放注冊送1G超小容量,幫你實踐做減法:https://wangpan.yourbatman.cn

版本約定

Java EE:6、7、8

Jakarta EE:8、9、9.1

正文

WebSocket

WebSocket是一種在單個TCP連接上進行全雙工通信的協議。隨著HTML5的誕生,WebSocket通信協議于2011年被IETF定為標準RFC 6455,并由RFC7936補充規范。WebSocket API也被W3C定為標準。

WebSocket協議本質上是一個基于TCP的協議,它由通信協議和編程API組成,WebSocket能夠在瀏覽器和服務器之間建立雙向連接,以基于事件的方式,賦予瀏覽器實時通信能力。

WebSocket使得客戶端和服務器之間的數據交換變得更加簡單,允許服務端主動向客戶端推送數據。在WebSocket API中,瀏覽器和服務器只需要完成一次握手,兩者之間就直接可以創建持久性的連接,并進行雙向數據傳輸。工作流程如下圖:

Java API for WebSocket是Java的Web套接字,在2013年6月份伴隨著Java EE 7推出(1.0版本),Java EE 8升級到1.1版本。

注意:WebSocket的Client可以是瀏覽器,也可是WebSocket的終端(如Java應用、Go應用)。

  1. <!-- javax命名空間版本(Tomcat 9.x及以下版本支持) --> 
  2. <dependency> 
  3.     <groupId>javax.websocket</groupId> 
  4.     <artifactId>javax.websocket-api</artifactId> 
  5.     <version>1.1</version> 
  6.     <scope>provided</scope> 
  7. </dependency> 
  8.  
  9. <!-- jakarta命名空間版本(Tomcat 10.x及以上版本支持) --> 
  10. <dependency> 
  11.     <groupId>jakarta.websocket</groupId> 
  12.     <artifactId>jakarta.websocket-api</artifactId> 
  13.     <version>2.0.0</version> 
  14.     <!-- <version>1.1.2</version> 此版本命名空間同javax --> 
  15.     <scope>provided</scope> 
  16. </dependency> 
  17.  
  18. 除此之外,一般情況下我們直接使用Web容器提供的Jar即可,如Tomcat 
  19. <dependency> 
  20.     <groupId>org.apache.tomcat.embed</groupId> 
  21.     <artifactId>tomcat-embed-websocket</artifactId> 
  22.     <version>Tomcat版本號</version> 
  23. </dependency> 
  24. <dependency> 
  25.     <groupId>org.apache.tomcat</groupId> 
  26.     <artifactId>tomcat-websocket</artifactId> 
  27.     <version>Tomcat版本號</version> 
  28. </dependency> 

版本歷程

servlet-3.1版本開始支持。WebSocket 1.1 版與 1.0 版完全向后兼容,只在javax.websocket.Session中添加了兩個方法:

  1. <T> void addMessageHandler(Class<T> clazz, MessageHandler.Partial<T> handler) throws IllegalStateException; 
  2. <T> void addMessageHandler(Class<T> clazz, MessageHandler.Whole<T> handler) throws IllegalStateException; 

生存現狀

作為Http協議的“補充”,很好的彌補了其不足,在Web領域實時推送,也被稱作Realtime技術。這種技術大大提升交互體驗,擁有廣泛的應用場景:在線聊天(如web版微信)、在線客服系統、評論系統等等。

總的來講,WebSocket作為新貴,生存現狀挺好,前景一片光明。

實現(框架)

WebSocket其實是構建在Http協議之上的,所以對于Java語言來講它依舊由Web容器來提供實現。

概念區分:Web容器不一定是Servlet容器,而Servlet容器一定是Web容器

除此之外也有獨立實現:

  • client端實現:org.eclipse.jetty.websocket:javax-websocket-client-impl
  • server端實現:org.eclipse.jetty.websocket:javax-websocket-server-impl對于Client來講,一般都是瀏覽器。

代碼示例

前面有提到,WebSocket的Client端既可以是瀏覽器(現代的瀏覽器100%都支持此協議,若需要考慮瀏覽器兼容問題(比如國外現在依舊有使用老版IE瀏覽器的),可以使用socketio框架哈),也可以是Java應用。本示例就加點“難度”,用Java應用作為WebSocket的客戶端。當然嘍,服務端肯定也是Java應用呀。

創建demo項目,結構如下:

其中client為jar,server為war。

書寫Server端代碼,提供一個服務端點:

  1. /** 
  2.  * 在此處添加備注信息 
  3.  * 
  4.  * @author YourBatman. <a href=mailto:yourbatman@aliyun.com>Send email to me</a> 
  5.  * @site https://yourbatman.cn 
  6.  * @date 2021/9/12 15:29 
  7.  * @since 0.0.1 
  8.  */ 
  9. @ServerEndpoint("/websocket/chat"
  10. public class WsServer { 
  11.  
  12.     // 當前連接上來的連接們(每一個連接都是一個WsServerDemo實例,包含一個Session會話) 
  13.     private static Set<WsServer> webSocketSet = new CopyOnWriteArraySet<>(); 
  14.     // 會話 
  15.     private Session session; 
  16.  
  17.     /** 
  18.      * 建連成功的回調 
  19.      */ 
  20.     @OnOpen 
  21.     public void onOpen(Session session) { 
  22.         this.session = session; 
  23.         webSocketSet.add(this); // 保存當前連接 
  24.         System.out.println("Server有新連接加入!當前在線人數為" + webSocketSet.size()); 
  25.     } 
  26.  
  27.     /** 
  28.      * 連接關閉調用的方法 
  29.      */ 
  30.     @OnClose 
  31.     public void onClose() { 
  32.         webSocketSet.remove(this); 
  33.         System.out.println("Server有一連接關閉!當前在線人數為" + webSocketSet.size()); 
  34.     } 
  35.  
  36.     /** 
  37.      * 收到客戶端消息后調用的方法 
  38.      */ 
  39.     @OnMessage 
  40.     public void onMessage(String message) throws IOException { 
  41.         System.out.println("Server來自客戶端的消息:" + message); 
  42.         sendMessage("會話[" + session.getId() + "]的消息已經收到,內容為:" + message); 
  43.         // // =======群發消息========= 
  44.         // for (WsServerDemo item : webSocketSet) { 
  45.         //     try { 
  46.         //         item.sendMessage(message); 
  47.         //     } catch (IOException e) { 
  48.         //         continue
  49.         //     } 
  50.         // } 
  51.     } 
  52.  
  53.     /** 
  54.      * 發生錯誤時調用 
  55.      */ 
  56.     @OnError 
  57.     public void onError(Throwable error) { 
  58.         System.out.println("Server發生錯誤:" + error.getMessage()); 
  59.     } 
  60.  
  61.     /** 
  62.      * 發送消息 
  63.      */ 
  64.     public void sendMessage(String message) throws IOException { 
  65.         this.session.getBasicRemote().sendText(message); 
  66.     } 
  67.  

我這里簡便起見,使用web容器直接實現。有興趣/想深究websocket的同學,可使用org.eclipse.jetty.websocket:javax-websocket-server-impl通過API方式去啟動Server,本文只演示用該方式啟動client哈,二者兼顧嘛。

使用編程方式書寫client端代碼:

  1. /** 
  2.  * 在此處添加備注信息 
  3.  * 
  4.  * @author YourBatman. <a href=mailto:yourbatman@aliyun.com>Send email to me</a> 
  5.  * @site https://yourbatman.cn 
  6.  * @date 2021/9/12 15:31 
  7.  * @since 0.0.1 
  8.  */ 
  9. @ClientEndpoint 
  10. public class WsClient { 
  11.  
  12.     // 會話(與服務端建立的會話) 
  13.     private Session session; 
  14.  
  15.     /** 
  16.      * 建連成功的回調 
  17.      */ 
  18.     @OnOpen 
  19.     public void onOpen(Session session) throws IOException { 
  20.         this.session = session; 
  21.         System.out.println("Client連接到服務端成功,會話ID:" + session.getId()); 
  22.         sendMessage("這是一條來自Client端,會話["+session.getId()+"]的消息"); 
  23.     } 
  24.  
  25.     @OnMessage 
  26.     public void onMessage(String message) { 
  27.         System.out.println("Client端收到消息: " + message); 
  28.     } 
  29.  
  30.     @OnClose 
  31.     public void onClose() { 
  32.         System.out.println("Client會話" + session.getId() + "已斷開"); 
  33.     } 
  34.  
  35.     /** 
  36.      * 發送消息 
  37.      */ 
  38.     public void sendMessage(String message) throws IOException { 
  39.         this.session.getBasicRemote().sendText(message); 
  40.     } 

用main方法啟動Client端,去連接Server端并發送消息:

  1. public class ClientApp { 
  2.  
  3.     private static URI uri = URI.create("ws://localhost:8080/websocket/chat"); 
  4.     private static Session session; 
  5.  
  6.     public static void main(String[] args) throws DeploymentException, IOException, InterruptedException { 
  7.         WebSocketContainer container = ContainerProvider.getWebSocketContainer(); 
  8.  
  9.         // 順序執行5次會話,端口后再建立新會話 
  10.         for (int i = 0; i < 5; i++) { 
  11.             session = container.connectToServer(WsClient.class, uri); 
  12.             session.close(); 
  13.             TimeUnit.SECONDS.sleep(2); 
  14.         } 
  15.     } 

client端控制臺日志:

  1. Client連接到服務端成功,會話ID:1 
  2. Client端收到消息: 會話[0]的消息已經收到,內容為:這是一條來自Client端,會話[1]的消息 
  3. Client會話1已斷開 
  4. Client連接到服務端成功,會話ID:2 
  5. Client端收到消息: 會話[1]的消息已經收到,內容為:這是一條來自Client端,會話[2]的消息 
  6. Client會話2已斷開 
  7. Client連接到服務端成功,會話ID:3 
  8. Client端收到消息: 會話[2]的消息已經收到,內容為:這是一條來自Client端,會話[3]的消息 
  9. Client會話3已... 

server端控制臺日志:

  1. Server有新連接加入!當前在線人數為1 
  2. Server來自客戶端的消息:這是一條來自Client端,會話[1]的消息 
  3. Server有一連接關閉!當前在線人數為0 
  4. Server有新連接加入!當前在線人數為1 
  5. Server來自客戶端的消息:這是一條來自Client端,會話[2]的消息 
  6. Server有一連接關閉!當前在線人數為0 
  7. Server有新連接加入!當前在線人數為1 
  8. Server來自客戶端的消息:這是一條來自Client端,會話[3]的消息 
  9. Server有一連接關閉!當前在線人數為0 

說明:本文特意使用Java應用作為Client端是想讓你更深刻的理解WebSocket的用法,實際場景中,其實大都是B/S模式,通過JavaScript作為客戶端建立連接(相對簡單)。

工程源代碼:https://github.com/yourbatman/BATutopia-java-ee

JSTL

Java server pages standarded tag library,即JSP標準標簽庫。主要提供給Java Web開發人員一個標準通用的標簽庫,開發人員可以利用這些標簽取代 JSP頁面上的Java代碼,從而提高程序的可讀性,降低程序的維護難度。

JSTL強依賴于JSP的存在而存在。

JSTL和EL表達式的目的是一樣的:取代JSP頁面上寫Java代碼。它比EL更為強大些,可以完成一些結構化邏輯任務,如:迭代、條件判斷、XML文檔操作、國際化、SQL等,下面簡要介紹其主要標簽。

  • 核心標簽:也是著名C標簽。在JSP文件開頭引入c標簽<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>,支持的常用函數有:

  1. 1. <c:out>:用于在頁面輸出 
  2.  - <c:out value="expression" default="expression" escapeXml="boolean"/> 
  3. 2. <c:if>:邏輯判斷 
  4.  - <c:if test="expression" var="name" scope="scope">   
  5.        body content   
  6.    </c:if> 
  7. 3. <c:choose>:邏輯判斷。when和otherwise的父標簽 
  8. 4. <c:when>: <c:otherwise>: 
  9.  - <c:choose>   
  10.      <c:when test="expression">   
  11.          body content   
  12.      </c:when>   
  13.   ... 
  14.      <c:otherwise>   
  15.       body content   
  16.   </c:otherwise>   
  17.    </c:choose> 
  18.   
  19. 5. <c:foreach>: 
  20.  - <c:forEach var="name" items="expression" varStatus="name" begin="expression" end="expression" step="expression">   
  21.        body content   
  22.    </c:forEach> 
  23.  
  24. 6. <c:url>:使用可選的查詢參數創造一個URL地址 
  25. 7. <c:set>:設置數據 
  26. 8. <c:remove>:刪除數據 
  • 格式化標簽:可對數字、日期時間等格式化。<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>,主要函數:

  1. 1. <fmt:formatNumber>:格式化數字 
  2. 2. <fmt:parseNumber>:解析字符串到數字、貨幣、百分比 
  3. 3. <fmt:formatDate>: 
  4. 4. <fmt:parseData>: 
  • JSTL函數:一般用于輔助標簽控制行為。<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>,主要函數:

  1. 1. fn:contains:判斷字符串是否包含另外一個字符串  
  2.  - <c:if test="${fn:contains(name, searchString)}"
  3. 2. fn:indexOf:子字符串在母字符串中出現的位置  
  4.  - ${fn:indexOf(name'-')} 
  5. 3. fn:toLowerCase:轉為小寫 
  6.  - ${fn.toLowerCase(product.name)} 
  • SQL標簽,<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>。主要函數:
  1. 1. <sql:setDataSource>、<sql:query>、<sql:update

  • XML標簽,<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>。主要函數:
  1. 1. <x:parse>、<x:if>、<x:forEach> 

除此之外,還提供了擴展點:自定義標簽。

  1. <!-- javax命名空間版本(Tomcat 9.x及以下版本支持) --> 
  2. <dependency> 
  3.     <groupId>javax.servlet.jsp.jstl</groupId> 
  4.     <artifactId>jstl-api</artifactId> 
  5.     <version>1.2</version> 
  6. </dependency> 
  7.  
  8. <!-- jakarta命名空間版本(Tomcat 10.x及以上版本支持) --> 
  9. <dependency> 
  10.     <groupId>jakarta.servlet.jsp.jstl</groupId> 
  11.     <artifactId>jakarta.servlet.jsp.jstl-api</artifactId> 
  12.     <version>2.0.0</version> 
  13.     <!-- <version>1.2.7</version> 此版本命名空間同javax --> 
  14. </dependency> 

說明:之前可能需要有jstl.jar和standard.jar兩個Jar,但從1.2版本后這一個GAV即可。當然嘍,99.99%情況下該jar無需你導入,由web容器負責

版本歷程

JSTL也依賴于JSP而存在,所以和JSP版本有強關系。

JSTL 1.2版本可斷定是最后一個版本,因為JSP已走到盡頭,所以它也會隨之消亡。

生存現狀

同JSP。

實現(框架)

與Servlet相同的Web容器,由Web容器提供解析能力。如tomcat的標簽庫實現:http://tomcat.apache.org/taglibs

代碼示例

實在沒有應用場景了,略。

工程源代碼:https://github.com/yourbatman/BATutopia-java-ee

總結

WebSocket作為長連接的輕量級解決方案,會是B/S的新寵,一舉替掉之前的長輪訓等方案。滾滾長江東逝水,這或許就印證著技術在進步,時代在發展。

作為老一輩程序員的我,對EL表達式、JSTL這類技術依舊有記憶存留,但新時代的程序員可能沒有必要再接觸。本文就當做自留地,封存這段學習的記憶吧。

本文轉載自微信公眾號「BAT的烏托邦」

 

責任編輯:姜華 來源: BAT的烏托邦
相關推薦

2021-10-19 08:23:43

JMXJava 管理擴展

2021-10-11 08:51:50

JavaMailJDBCJava

2021-10-08 06:50:32

版本歷史代碼

2021-10-25 08:16:20

Java JAX-RS Java 基礎

2021-09-13 18:39:50

ServeltELJSP

2017-10-31 12:56:52

Androidios谷歌

2009-07-07 14:33:44

JSP入門

2025-02-08 10:11:25

2011-08-16 16:37:40

Oracle數據庫樹形查詢根節點

2022-07-26 14:53:10

WebSocket網絡通信協議

2021-12-23 06:57:32

數據通信Websocket

2011-08-25 14:38:14

SQL Server修改表結構字段類型

2018-01-02 13:30:04

代碼質量代碼預言

2012-04-19 14:41:39

安騰惠普HP

2010-01-28 16:01:18

Android Jni

2015-03-16 10:12:15

移動詐騙電信行業315晚會

2011-08-12 14:39:00

iPhoneSDK

2009-12-24 13:51:49

WPF文檔打印

2010-04-15 14:12:20

Oracle 系統操作

2010-02-05 10:23:09

C++基本函數
點贊
收藏

51CTO技術棧公眾號

国产日本精品| 日韩一区二区三区精品| 久久精品亚洲精品国产欧美| 国产精品久久久久久av| 午夜免费激情视频| 日韩在线你懂的| 欧美丝袜自拍制服另类| 国产成人一二三区| 国产小视频福利在线| 国内精品免费**视频| 91精品国产99| 任你操精品视频| 亚洲一区二区电影| 欧美性猛片aaaaaaa做受| av动漫在线播放| 国产1区2区3区在线| 国产精品一区二区三区99| 国产91精品久久久久久久| 在线观看亚洲网站| 国产精品一区二区三区av麻| 日韩欧美国产精品一区| 亚欧美在线观看| 日本不卡免费高清视频在线| 亚洲精品va在线观看| 日韩欧美亚洲区| 日韩一级片免费观看| 韩国女主播成人在线观看| 欧美一区在线直播| 久久国产露脸精品国产| 黄色一级片一级片| 欧美黑粗硬大| 色老汉一区二区三区| 国产一区二区片| 黄网站视频在线观看| 久久精品一区二区三区四区| 国产精品永久入口久久久| 国产又粗又黄视频| 日本不卡视频在线| 国产91在线播放九色快色| 国产一级免费av| 欧美国产综合| 久久综合网hezyo| 亚洲激情图片网| 成人影院在线| 在线播放日韩精品| 最近中文字幕免费视频| 日本午夜精品久久久| 精品国产一区二区三区四区四| 国产精品探花在线播放| 91久久久久久白丝白浆欲热蜜臀| 欧美日韩在线免费| 国产一区二区在线视频播放| 91禁在线看| 欧美日韩国产在线看| 免费一级特黄毛片| 国产高清自产拍av在线| 亚洲图片欧美视频| 成人性生活视频免费看| 嗯~啊~轻一点视频日本在线观看| 亚洲一区中文在线| 久久久久久久中文| 欧美福利在线播放| 在线免费观看日本一区| 国产自偷自偷免费一区| 成人免费毛片嘿嘿连载视频…| 欧美在线色视频| 在线看的黄色网址| 国产精品白丝久久av网站| 日韩午夜电影av| 免费看毛片的网站| 国产区精品区| 日韩视频―中文字幕| 黄色a级片在线观看| 欧美三区视频| **欧美日韩vr在线| 在线观看欧美一区二区| 性色av无码久久一区二区三区| 日韩高清在线免费观看| 亚洲深夜福利网站| 蜜桃av免费在线观看| 在线成人激情| 97av视频在线| 中文在线字幕免费观| 狠狠狠色丁香婷婷综合激情| 99国产盗摄| 色天堂在线视频| 中文字幕欧美区| 免费观看亚洲视频| 91av亚洲| 日韩亚洲欧美在线| 实拍女处破www免费看| 偷偷www综合久久久久久久| 欧美激情小视频| 波多野结衣绝顶大高潮| 国产毛片精品视频| 欧美日韩一区二| 91亚洲天堂| 一本大道久久a久久精二百| 午夜精品中文字幕| 少妇一区二区三区| 久久精品视频在线观看| 欧美另类一区二区| 久久99国产精品免费网站| 国产一区二区三区奇米久涩| 国产福利小视频在线观看| 亚洲欧美色图小说| 国产真实乱子伦| 日韩精品视频一区二区三区| 亚洲精品网站在线播放gif| 91在线播放观看| 日本美女一区二区| 国产伦精品一区二区三区照片| av国产在线观看| 天天影视涩香欲综合网| 欧美一级小视频| 国产精品亚洲片在线播放| 免费欧美在线| 4p变态网欧美系列| 国产xxxx在线观看| 欧美国产日产图区| 国产免费黄色av| 亚洲视频一起| 久久久成人精品视频| 国产免费www| 91丨九色丨尤物| 国产美女主播在线| 99久久999| 最近更新的2019中文字幕 | 欧美大片网址| 欧美巨猛xxxx猛交黑人97人| 中文字幕人妻丝袜乱一区三区 | 666欧美在线视频| 日本二区在线观看| 丝瓜av网站精品一区二区| 国产一区二区精品免费| 超碰在线资源| 精品国产乱子伦一区| 欧美国产日韩综合| 国产毛片精品视频| 亚洲精品少妇一区二区| 国产精品美女久久久久人| 久久黄色av网站| 一级黄色片视频| 中文字幕在线不卡| 中文字幕 日韩 欧美| 日韩在线第七页| 国产欧美日韩精品在线观看| 成人在线观看黄色| 欧美天堂一区二区三区| 538精品视频| 日本欧美在线看| 亚洲欧美日产图| 祥仔av免费一区二区三区四区| 伊人久久久久久久久久| 中文字幕在线观看国产| 国产精品国产三级国产aⅴ中文| 超碰av在线免费观看| 97视频热人人精品免费| 成人在线视频网| av文字幕在线观看| 日韩精品中文字幕在线一区| 久久香蕉精品视频| 91尤物视频在线观看| 无码少妇一区二区三区芒果| 超碰成人久久| 92看片淫黄大片欧美看国产片| 国产盗摄在线观看| 欧美成人性福生活免费看| 久久精品视频8| 久久久久99精品国产片| 色噜噜狠狠永久免费| 亚洲成人av| 国产精品久久久久久久久久久久午夜片 | 色一情一乱一伦一区二区三区日本 | 日韩在线观看一区二区| 日韩中文不卡| 美女精品久久| 91av在线网站| 在线观看美女网站大全免费| 欧美一级理论片| 日韩女同强女同hd| 国产精品乱码人人做人人爱| 熟妇女人妻丰满少妇中文字幕| 亚洲作爱视频| 亚洲开发第一视频在线播放| 66精品视频在线观看| 日韩av电影国产| av网站大全在线| 亚洲欧洲在线免费| www.日韩在线观看| 色偷偷久久一区二区三区| 国产麻豆视频在线观看| 97se亚洲国产综合自在线观| 在线观看国产一级片| 黄色日韩在线| 亚洲国产欧美日韩| 精品国产一区二区三区成人影院 | 91极品视频在线| 秋霞影院午夜丰满少妇在线视频| 精品久久久久久久久久久院品网| 中文字幕在线天堂| 亚洲午夜一区二区三区| 成人黄色短视频| 久久色成人在线| 亚洲精品久久一区二区三区777| 美女被久久久| 激情五月婷婷六月| 亚洲高清影视| 色一情一乱一伦一区二区三欧美 | 亚洲国产精品中文| 国产高潮流白浆喷水视频| 色又黄又爽网站www久久| 久久久久免费看| 中文字幕日韩av资源站| 日本黄色特级片| 成人97人人超碰人人99| 特级西西444www| 日本不卡在线视频| 国产成人无码精品久久久性色| 欧美日本精品| 欧美少妇一级片| 欧美精选视频在线观看| 久久久久久欧美精品色一二三四 | 日韩精品一区二区三区视频| 亚洲在线免费观看视频| 91福利小视频| 中文字字幕在线中文| 亚洲成人久久影院| 欧美成人一区二区三区高清| 亚洲日本在线a| 国产老头老太做爰视频| 国产精品妹子av| 调教驯服丰满美艳麻麻在线视频| 久久影视一区二区| 国产熟妇搡bbbb搡bbbb| 91麻豆精东视频| av无码av天天av天天爽| 91小视频在线观看| 久久久久久久久免费看无码| 99国产一区二区三精品乱码| 一级欧美一级日韩片| 成人99免费视频| 国产真实乱人偷精品| 成人av网在线| 一区二区三区免费在线观看视频| 99久久99久久综合| 强伦人妻一区二区三区| 久久久国产精品不卡| 一区二区精品免费| 国产精品网站在线播放| 秋霞欧美一区二区三区视频免费| 专区另类欧美日韩| 精品欧美一区二区久久久久| 一区二区三区国产精品| 久久久精品一区二区涩爱| 亚洲一区在线视频| 黄色一级片免费看| 日本精品一区二区三区高清| 国产在线观看第一页| 欧美午夜寂寞影院| 国产精品嫩草影院精东| 日韩欧美国产成人一区二区| 亚洲老妇色熟女老太| 亚洲精品福利在线| 国产视频第一页在线观看| 少妇久久久久久| 日韩av官网| 青青青国产精品一区二区| 日韩av首页| 91精品啪在线观看麻豆免费| 伊人久久噜噜噜躁狠狠躁| 久久99精品国产99久久| 欧美日韩色图| 欧美日韩亚洲国产成人| 伊人精品成人久久综合软件| 黄色国产精品视频| 狠狠色狠狠色综合系列| 亚洲成人精品在线播放| 久久综合久久综合亚洲| 青青青视频在线播放| 亚洲精选视频在线| 国产a∨精品一区二区三区仙踪林| 欧美亚一区二区| 性中国古装videossex| 亚洲精品视频在线观看视频| 精产国品自在线www| 午夜精品免费视频| 日韩成人在线电影| 精品国产乱码久久久久久丨区2区| 国语产色综合| 国产欧美123| 首页国产欧美久久| 91精品人妻一区二区三区四区| 久久先锋影音av| 欧美黄色aaa| 色偷偷一区二区三区| 亚洲乱码精品久久久久..| 在线看欧美日韩| 国产伦理精品| 成人欧美一区二区三区在线湿哒哒| 久久精品福利| 99久re热视频精品98| 午夜在线a亚洲v天堂网2018| 69久久精品无码一区二区| 久久蜜桃av一区二区天堂| 欧美成人片在线观看| 欧美日韩在线观看一区二区| 无码国产精品一区二区色情男同| xvideos亚洲人网站| 欧美自拍电影| 国产精品一区二区三区在线观| 国产精品x453.com| 日韩免费高清在线| 99精品国产一区二区三区不卡 | 福利一区福利二区微拍刺激| 国产喷水福利在线视频| 中文精品99久久国产香蕉| 中文字幕这里只有精品| 国产精品9999久久久久仙踪林| 欧美xxxxx视频| 成人性视频欧美一区二区三区| 99久久精品情趣| 久久精品国产av一区二区三区| 7777精品久久久大香线蕉| 国产高清在线观看| 日韩av黄色在线观看| 三级精品视频| 日韩欧美国产综合在线| 国产suv精品一区二区6| 999精品在线视频| 欧美日韩成人综合| 91啦中文在线| 国产v综合v亚洲欧美久久| 日韩福利视频一区| 男人添女人下面高潮视频| 成人av电影免费观看| 久久综合加勒比| 精品国产免费人成电影在线观看四季| 国产在线观看免费麻豆| 国产中文字幕亚洲| 欧美电影《轻佻寡妇》| 亚洲一级免费观看| 国产精品对白交换视频| 一区二区三区免费在线| 久久精品福利视频| 欧美天堂在线| 欧美精品久久96人妻无码| 国模一区二区三区白浆 | 色婷婷综合久久久| 免费a级毛片在线观看| 国产精彩精品视频| 成人一级毛片| 韩国一区二区在线播放| 一区二区免费在线| 无码精品一区二区三区在线| 456亚洲影院| 成人直播大秀| 在线一区二区不卡| 亚洲一区二区三区三| 天堂网在线中文| 日韩av手机在线看| 久久亚洲精品中文字幕蜜潮电影| 日日干日日操日日射| 亚洲精品成人精品456| 艳母动漫在线看| 国产精品高潮呻吟久久av野狼| 色婷婷亚洲mv天堂mv在影片| 亚洲自拍第三页| 欧美日韩国产在线播放| 草草影院在线观看| 成人有码在线视频| 亚洲免费大片| 国产精成人品免费观看| 69av一区二区三区| 鲁鲁在线中文| 亚洲ai欧洲av| 国产成人99久久亚洲综合精品| 久久久久久久黄色片| 中文字幕亚洲一区在线观看| 欧美午夜在线播放| 色诱视频在线观看| 国产亚洲自拍一区| www.97超碰| 国产成人精品一区二区三区| 国产精品成人av| 亚洲综合自拍网| 欧美日韩不卡视频| 91色在线看| 在线一区亚洲| 972aa.com艺术欧美| 136福利视频导航| 久久免费视频这里只有精品| 日本一本不卡| 亚洲麻豆一区二区三区| 欧美色视频在线| sm性调教片在线观看| 在线精品亚洲一区二区| 91麻豆.com| 成人av手机在线| 成人a免费视频|