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

JSP自定義標簽開發入門

開發 后端 前端
JSP自定義標簽開發入門,簡單標簽的開發我們只要實現Tag接口即可,為了簡單起見可以直接繼承實現了此接口的TagSupport類。

一般情況下開發jsp自定義標簽需要引用以下兩個包

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

首先我們需要大致了解開發自定義標簽所涉及到的接口與類的層次結構(其中SimpleTag接口與SimpleTagSupport類是JSP2.0中新引入的)。

 

 

目標1:自定義一個用表格顯示用戶信息的簡單標簽

效果圖:

 

 

在jsp頁面使用此自定義標簽:

假設我們有一個UserInfo的javabean,那么在JSP頁面使用此標簽只需調用此標簽即可

  1. <!-- 創建需要展現UserInfo的實例(用于測試數據) --> 
  2.     <%  
  3.     UserInfo user = new UserInfo();  
  4.     user.setUserName("Xuwei");  
  5.     user.setAge(33);  
  6.     user.setEmail("test@test.test");  
  7.     pageContext.setAttribute("userinfo", user);    
  8.     %> 
  9.    
  10.     <!-- 給標簽設置user屬性綁定要展現的UserInfo對象  --> 
  11.     <cc:showUserInfo user="${pageScope.userinfo }" /> 

開發步驟:

簡單標簽的開發我們只要實現Tag接口即可,為了簡單起見可以直接繼承實現了此接口的TagSupport類

1 創建自定義標簽類

  1. public class UserInfoTag extends TagSupport {  
  2.      
  3.     private UserInfo user;  
  4.    
  5.     @Override  
  6.     public int doStartTag() throws JspException {  
  7.         try {  
  8.             JspWriter out = this.pageContext.getOut();  
  9.             if(user == null) {  
  10.                 out.println("No UserInfo Found...");  
  11.                 return SKIP_BODY;  
  12.             }  
  13.             out.println("<table width='500px' border='1' align='center'>");  
  14.             out.println("<tr>");  
  15.             out.println("<td width='20%'>Username:</td>");  
  16.             out.println("<td>" + user.getUserName() + "</td>");  
  17.             out.println("</tr>");  
  18.             out.println("<tr>");  
  19.             out.println("<td>Age:</td>");  
  20.             out.println("<td>" + user.getAge() + "</td>");  
  21.             out.println("</tr>");  
  22.             out.println("<tr>");  
  23.             out.println("<td>Email:</td>");  
  24.             out.println("<td>" + user.getEmail() + "</td>");  
  25.             out.println("</tr>");  
  26.             out.println("</table>");  
  27.         } catch(Exception e) {  
  28.             throw new JspException(e.getMessage());  
  29.         }  
  30.         return SKIP_BODY;  
  31.     }  
  32.      
  33.     @Override  
  34.     public int doEndTag() throws JspException {  
  35.         return EVAL_PAGE;  
  36.     }  
  37.    
  38.     @Override  
  39.     public void release() {  
  40.         super.release();  
  41.         this.user = null;  
  42.     }  
  43.      
  44.     //getter and setters  
  45.     public UserInfo getUser() {  
  46.         return user;  
  47.     }  
  48.     public void setUser(UserInfo user) {  
  49.         this.user = user;  
  50.     }  
  51. }  
  52.   

2 在Web-Inf創建標簽庫描述文件.tdl(Tag Library Description)

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" 
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"> 
  5. <tlib-version>1.0</tlib-version> 
  6. <jsp-version>2.0</jsp-version> 
  7. <short-name>cc</short-name> 
  8. <uri>/mytaglib</uri> 
  9. <tag> 
  10.     <name>showUserInfo</name> 
  11.     <tag-class>com.mytags.UserInfoTag</tag-class> 
  12.     <body-content>empty</body-content> 
  13.     <attribute> 
  14.         <name>user</name> 
  15.          <required>false</required> 
  16.          <rtexprvalue>true</rtexprvalue> 
  17.     </attribute> 
  18.  </tag> 
  19. </taglib> 

3 配置web.xml

  1. <jsp-config> 
  2.     <taglib> 
  3.         <taglib-uri>/mytaglib</taglib-uri> 
  4.         <taglib-location>/WEB-INF/mytaglib.tld</taglib-location> 
  5.     </taglib> 
  6.   </jsp-config> 

4 在需要使用此標簽的jsp頁面頭部引入

  1. <%@ taglib uri="/mytaglib" prefix="cc"%> 

5 使用(參照上面的使用步驟)

此致,一個簡單的JSP標簽開發完成

標簽類說明:

 

 

我們創建的UserInfoTag類繼承了TagSupport類,而它又實現了Tag接口,Tag接口的生命周期由其所在的容器控制,如下圖:

setPageContext() 將所在jsp頁面的pageContext注入進來,目的是為了在后面的方法中可以訪問到jsp頁面對象的pageContext屬性

setParent() 設置此標簽的父標簽

setAttribute() 將標簽中的屬性注入到此class的屬性,不需要自己實現但要提供屬性的get與set方法

doStartTag() 在開始標簽屬性設置后調用,如果返回SKIP_BODY則忽略標簽之中的內容,如果返回EVAL_BODY_INCLUDE則將標簽體的內容進行輸出

doEndTag() 在結束標簽之前調用,返回SKIP_PAGE跳過整個jsp頁面后面的輸出,返回EVAL_PAGE執行頁面余下部分

release() 生命周期結束時調用

特別說明:在tomcat4.1之后的版本中默認開啟了標簽緩沖池(websphere和weblogic并不會這么做),所以執行完標簽后并不會執行release()方法(_jspDestroy()時才釋放),也就是說同一個jsp頁面自定義標簽不管使用多少次只會存在一個實例,但也并不是每一個標簽都會為其創建一個緩沖池,要根據參數來判斷,例如:

  1. <cc:UserInfoTag user=”…” /> 
  2. <cc:UserInfoTag /> 

上面例子中由于參數不同就會創建兩個標簽緩沖池。

這個問題可以通過設定tomcat的配置文件加以解決:

在%tomcat%\conf\web.xml加入enablePooling參數,并設置為false(不緩存自定義標簽)。

  1. <init-param> 
  2.   <param-name>enablePooling</param-name> 
  3.   <param-value>false</param-value> 
  4. </init-param> 

清空%tomcat%\conf\目錄

#p#

TagSupport類已經為我們實現并擴展了一些方法(比如在上述方法中我們可以直接使用pageContext對象,調用父標簽getParent()等),所以一般情況下我們只需重寫doStartTag(),doEndTag() 即可

TLD文件說明:

<!--版本號-->
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>cc</short-name>
<tag>
<!—指定標簽名 -->
<name>showUserInfo</name>
<!—指定標簽類文件的全路徑 -->
<tag-class>com.mytags.UserInfoTag</tag-class>
<!--如果不需要標簽體則設置empty,反之設定jsp -->
<body-content>empty</body-content>
<!—設定屬性(如果有的話) -->
<attribute>
<!—指定標簽名 -->
<name>user</name>
<!—是否是必須,如果非必須沒設置則為空 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue><!—是否可在屬性中使用表達式 -->
</attribute>
</tag>

Web.xml文件說明:

<jsp-config>
<taglib>
<!--

標簽庫的uri路徑
即jsp頭文件中聲明<%@ taglib uri="/mytaglib" prefix="cc"%>
的uri
-->
<taglib-uri>/mytaglib</taglib-uri>
<!—tld文件所在的位置-->
<taglib-location>/WEB-INF/mytaglib.tld</taglib-location>
</taglib>
</jsp-config>

目標2:自定義一個類似于Asp.Net中的Reapter控件的標簽

效果圖:

 

 

在jsp頁面使用此自定義標簽:

  1. <!-- 創建需要展現javabean(UserInfo)集合的實例(用于測試數據) --> 
  2. <%  
  3.     List<UserInfo> users = new ArrayList<UserInfo>();     
  4.     users.add(new UserInfo("Zhangsan", 12, "Zhangsan@163.com"));  
  5.     users.add(new UserInfo("Lisi", 22, "Lisi@sina.com"));  
  6.     users.add(new UserInfo("Wangwu", 33, "Wangwu@qq.com"));  
  7.     pageContext.setAttribute("users", users);  
  8. %> 
  9.    
  10. <!-- 給標簽綁定數據源  --> 
  11. <table width='500px' border='1' align='center'> 
  12.     <tr> 
  13.         <td width='20%'>UserName</td> 
  14.         <td width='20%'>Age</td> 
  15.         <td>Email</td> 
  16.     </tr> 
  17.     <cc:repeater var="item" items="${pageScope.users }"> 
  18.         <tr> 
  19.             <td>${item.userName }</td> 
  20.             <td>${item.age }</td> 
  21.             <td>${item.email }</td> 
  22.         </tr> 
  23.     </cc:repeater> 
  24. </table> 

開發步驟:

要完成此控件我們需要實現一個迭代接口,即IterationTag,由于TagSupport同樣實現了此接口,所以我們繼承此類

1 創建自定義標簽類

  1. public class Repeater extends TagSupport {  
  2.     private Collection items;  
  3.     private Iterator it;  
  4.     private String var;  
  5.    
  6.     @Override  
  7.     public int doStartTag() throws JspException {  
  8.         if(items == null || items.size() == 0) return SKIP_BODY;  
  9.         it = items.iterator();    
  10.         if(it.hasNext()) {  
  11.             pageContext.setAttribute(var, it.next());  
  12.         }  
  13.         return EVAL_BODY_INCLUDE;  
  14.     }  
  15.      
  16.     @Override  
  17.     public int doAfterBody() throws JspException {  
  18.         if(it.hasNext()) {  
  19.             pageContext.setAttribute(var, it.next());  
  20.             return EVAL_BODY_AGAIN;  
  21.         }  
  22.         return SKIP_BODY;  
  23.     }  
  24.      
  25.     @Override  
  26.     public int doEndTag() throws JspException {  
  27.         return EVAL_PAGE;  
  28.     }  
  29.      
  30.     public void setItems(Collection items) {  
  31.         this.items = items;  
  32.     }  
  33.      
  34.     public void setVar(String var) {  
  35.         this.var = var;  
  36.     }  

2在Web-Inf創建標簽庫描述文件.tdl(Tag Library Description)由于目標1種已經創建了此文件,我們只需增加此標簽的配置即可

  1. <tag> 
  2.     <name>repeater</name> 
  3.     <tag-class>com.mytags.Repeater</tag-class> 
  4.     <body-content>jsp</body-content> 
  5.     <attribute> 
  6.         <name>items</name> 
  7.         <required>false</required> 
  8.         <rtexprvalue>true</rtexprvalue> 
  9.     </attribute> 
  10.     <attribute> 
  11.         <name>var</name> 
  12.         <required>true</required> 
  13.         <rtexprvalue>true</rtexprvalue> 
  14.     </attribute> 
  15.  </tag> 
  16.   

3 配置web.xml (目標1中已完成,無需修改)

#p#

4 在需要使用此標簽的jsp頁面頭部引入

  1. <%@ taglib uri="/mytaglib" prefix="cc"%> 

5 使用(參照上面的使用步驟)

標簽類說明:

我們用到了迭代接口,以下是容器處理此接口的流程

 

 

作為目標1中的補充: 在doAfterBody()如果返回值是EVAL_BODY_AGAIN那么將重新執行此方法

目標3:使用BodyTagSupport

此目標并不會使用實際例子進行顯示,主要是說明為什么,什么情況下需要使用到BodyTag接口或者BodyTagSupport類?

如果我們需要在 …. 之間的標簽體的頭部和尾部加上一些標記或者是其他處理,一般的處理方法是在doStartTag和doEndTag方法中進行, 但是如果是個迭代標簽,標簽體的每段內容在循環輸出時每次都需要在頭部和尾部加上一些標記,我們使用BodyTagSupport就很方便了,

此接口在doStartTag()方法返回值多了一個EVAL_BODY_BUFFERED,它將對主體進行計算,并輸出到緩沖區(注:此處是緩沖區并非直接輸出到客戶端,需要我們手動(this.bodyContent.getEnclosingWriter().write(this.bodyContent.getString());)進行輸出客戶端的調用,否則主體內容不會進行顯示)

標簽類說明:

關于BodyTagSupport接口的說明

 

 

目標4:自定義的函數庫

1 創建函數庫類

  1. public class MyFunctions {  
  2.     public static String formatMyName(String name) {  
  3.        return "your name is " + name;  
  4.     }  
  5.     public static int add(int a, int b) {  
  6.        return a+b;  
  7.     }  

2 在TLD文件中配置 (引用于目標1中的tld文件)

  1. <function> 
  2.     <name>formatMyName</name> 
  3.     <function-class>com.taglib.MyFunctions</function-class> 
  4.     <function-signature>java.lang.String formatMyName(java.lang.String)</function-signature> 
  5.  </function> 
  6.    
  7. <function> 
  8.     <name>add</name> 
  9.     <function-class>com.taglib.MyFunctions</function-class> 
  10.     <function-signature>java.lang.String add(int, int)</function-signature> 
  11.  </function> 

3 JSP中調用

  1. ${cc:formatMyName("wangfei") }  
  2. ${cc:add(12, 34) } 

原文:http://www.cnblogs.com/zhaoyang/archive/2011/12/25/2301108.html

【編輯推薦】

  1. JSP環境配置圖文詳解 初學者必備
  2. PHP與JSP上演超詳細性能測試大PK
  3. JSP動態網頁程序設計詳解
  4. 如何成為一個優秀的JSP程序員
  5. JSP轉譯成Servlet詳細過程
責任編輯:陳貽新 來源: 陽陽多的博客
相關推薦

2009-07-06 16:59:26

JSP自定義標簽

2009-07-06 16:20:50

JSP自定義標簽

2012-02-02 13:45:28

JavaJSP

2009-07-02 15:31:49

JSP標簽

2009-06-30 10:40:25

JSP自定義標簽

2009-06-08 20:13:36

Eclipse自定義控

2009-06-24 15:13:36

自定義JSF組件

2009-08-05 17:03:37

C#自定義控件

2009-08-10 14:16:59

ASP.NET自定義控

2023-09-04 15:06:18

Pytorch靜態量化動態量化

2011-08-02 11:17:13

iOS開發 View

2023-08-10 17:14:52

鴻蒙自定義彈窗

2013-05-02 14:08:18

2015-02-12 15:33:43

微信SDK

2009-06-30 17:02:31

J2EE實現分頁

2020-03-28 16:04:26

數據科學Matplotlib圖表

2020-11-25 11:20:44

Spring注解Java

2015-02-12 15:38:26

微信SDK

2011-08-11 11:51:07

iPhone鍵盤

2013-05-20 17:48:20

點贊
收藏

51CTO技術棧公眾號

y111111国产精品久久婷婷| 亚洲欧美国产视频| 9色视频在线观看| 国产特级黄色片| 欧美日韩国产精品一区二区亚洲| 欧美一级高清片| 国产午夜精品视频一区二区三区| 亚洲男女视频在线观看| 免费看啪啪网站| 亚洲精品国产suv一区| 99日韩精品| 伊人亚洲福利一区二区三区| 日韩在线一区视频| 免费在线中文字幕| 久久久精品天堂| 国产视频999| 男人在线观看视频| 果冻天美麻豆一区二区国产| 在线免费观看成人短视频| 亚洲欧美丝袜| 欧美一级在线免费观看| 久久在线精品| 欧美国产第一页| 欧美成人午夜精品免费| 久久久国产精品入口麻豆 | 免费黄色av网址| 不卡av影片| 亚洲欧美成人一区二区三区| 国产精品嫩草在线观看| 中文字幕免费播放| 亚洲人妖在线| 在线观看国产精品日韩av| 又大又长粗又爽又黄少妇视频| 小早川怜子影音先锋在线观看| 中文字幕av一区二区三区免费看| 147欧美人体大胆444| av毛片在线免费观看| 亚洲一区在线| 一本色道久久综合狠狠躁篇的优点| 中文字幕久久久久久久| 日产福利视频在线观看| 最新日韩在线视频| 日韩在线三区| 天堂av一区二区三区| 精品一区二区三区视频在线观看 | 欧美极品一区| 亚洲黄色小说网址| 久久成人麻豆午夜电影| 国产成人精品久久久| 日韩高清精品免费观看| 青青草国产成人a∨下载安卓| 亚洲国产天堂久久综合网| 黄色三级视频在线播放| 影视一区二区三区| 亚洲午夜免费电影| 99亚洲精品视频| 超碰97在线免费观看| 91网站在线播放| 精品产品国产在线不卡| 亚洲欧美另类视频| 国产精品系列在线观看| 91久久久久久久一区二区| 中文字幕777| 99精品视频免费观看| 欧美精品videos| 黑鬼狂亚洲人videos| 国产电影一区二区在线观看| 亚洲最新av网址| 国产欧美一区二区三区在线观看视频| 丰满人妻一区二区三区四区53| 国产原创一区二区| 91网站在线免费观看| 国产日产亚洲系列最新| 国产精品1区2区3区| 99久久精品久久久久久ai换脸| 精品人妻无码一区二区三区蜜桃一| 国产精品白丝av| 国产精品视频免费观看| 视频午夜在线| 久久综合久久综合亚洲| 日产精品一线二线三线芒果 | 日日噜噜噜夜夜爽亚洲精品| 成人黄色短视频| 欧美1区2区| 91精品国产91久久久久久最新 | 免费黄色在线视频| 成人精品影院| 久久成年人视频| 国产一级做a爰片在线看免费| 国产人成精品一区二区三| 欧洲s码亚洲m码精品一区| 亚洲精品国产欧美在线观看| 久久精品国产网站| 国产成人亚洲欧美| 国产永久免费高清在线观看视频| 国产精品对白交换视频| 日本大胆人体视频| 国产精品迅雷| 欧美精品高清视频| 丰满人妻一区二区三区免费视频棣 | 亚洲午夜一级| 2019中文字幕在线观看| 亚洲专区第一页| 99视频一区二区三区| 亚洲精品乱码久久久久久蜜桃91 | 国产精品电影观看| 国产sm主人调教女m视频| 26uuu精品一区二区三区四区在线| 亚洲成人午夜在线| av伦理在线| 欧美日韩亚洲丝袜制服| 国产白嫩美女无套久久| 亚洲香蕉av| 国产99视频在线观看| 国产福利小视频| 国产视频一区二区在线观看| www.夜夜爱| 欧美系列精品| 亚洲美女av网站| 国产一级aa大片毛片| 蜜臀久久久99精品久久久久久| 成人三级在线| 在线免费观看黄| 色综合久久66| 日韩黄色一区二区| 婷婷久久综合| 国产精品成人va在线观看| 免费看av毛片| 亚洲老司机在线| 99re精彩视频| 国产精品三级| 91精品国产高清久久久久久| 国产高清免费av| 国产精品久99| 999精品网站| 自拍亚洲一区| 91高潮精品免费porn| 高清一区二区三区四区| 亚洲精品乱码久久久久久| 五月天婷婷亚洲| 欧美一二区在线观看| 欧洲亚洲在线视频| 婷婷综合激情网| 亚洲成人你懂的| 亚洲美女高潮久久久| 欧美成人69av| 91在线免费视频| 成人免费视屏| 日韩一区二区在线免费观看| www日韩在线| 精品一区二区在线观看| 亚洲欧洲另类精品久久综合| 999国产精品亚洲77777| 国产性色av一区二区| 香蕉污视频在线观看| 国产欧美日韩精品一区| 波多野结衣天堂| 精品一区二区三区的国产在线观看| 国产v综合ⅴ日韩v欧美大片| 成人jjav| 欧美高清视频一二三区 | 国产精品爽爽爽爽爽爽在线观看| 国产www.大片在线| 欧美日韩一区二区三区在线| 5566中文字幕| 国产乱淫av一区二区三区| 热久久最新网址| 国产亚洲精品美女久久| 3344国产精品免费看| 九色视频在线观看免费播放| 欧美性猛交xxxx乱大交退制版| 黄色一级片一级片| 国产麻豆精品视频| 日韩精品一区二区在线视频| 日韩精品免费一区二区夜夜嗨 | 免费观看国产视频在线| 免费观看亚洲视频大全| 国语自产精品视频在线看| 四虎电影院在线观看| 在线看国产一区二区| 麻豆一区在线观看| 高清免费成人av| 欧美一级黄色片视频| 四季av一区二区凹凸精品| 51蜜桃传媒精品一区二区| 国产精品一二三产区| 中文字幕一区二区精品| 亚洲精品久久久久久无码色欲四季 | 五月天av影院| 国产精品视频3p| 国产精品999999| 主播国产精品| 亚洲欧美视频在线| 国产999久久久| 日韩欧美亚洲一二三区| 欧美一级特黄高清视频| 成人激情免费网站| av网站在线不卡| 亚洲精品1区| 亚洲成人自拍视频| 美日韩黄色大片| 国产欧美精品日韩| 黄色在线网站噜噜噜| 久久久精品久久| 日本不卡免费播放| 日韩一级二级三级精品视频| 亚洲GV成人无码久久精品| 亚洲六月丁香色婷婷综合久久 | 一区二区三区四区毛片| 亚洲欧美bt| 9色视频在线观看| 国产欧美久久一区二区三区| 91国产在线免费观看| 影视一区二区三区| 91av视频在线| 欧美色图天堂| 久久久999成人| 国产资源在线看| 亚洲激情视频在线| av免费在线不卡| 欧美亚洲尤物久久| www.日本精品| 一区二区三区丝袜| 国产一区在线观看免费| 久久久噜噜噜久久人人看 | 青青在线视频观看| 欧美网站在线| 99中文字幕在线观看| 欧美1级片网站| 无码免费一区二区三区免费播放| 日韩一级电影| 国产区一区二区三区| 午夜精品在线| 亚洲mm色国产网站| 人人精品久久| 国产精品无码专区在线观看| 欧美一级大片| 国产成人福利网站| 周于希免费高清在线观看 | 日本中文字幕一区二区| 91国内在线视频| 1024在线看片你懂得| 精品视频9999| 影音先锋男人资源在线| 久久亚洲影音av资源网| 麻豆网在线观看| www.欧美三级电影.com| 1024国产在线| 日韩亚洲在线观看| 九七久久人人| 欧美日韩国产va另类| 国产美女福利在线观看| 久久久久久av| 国产一二在线播放| 欧美在线一级视频| 日本成人伦理电影| 国产精品久久久久久久久借妻| 欧美日韩亚洲国产| 国产精品露脸av在线| 开心久久婷婷综合中文字幕| 国产日韩欧美在线观看| 欧美大片91| 国模一区二区三区私拍视频| 精品一区三区| 色综合久久av| 在线精品小视频| 美女黄色免费看| 美女精品在线观看| 日本中文字幕高清| 国模无码大尺度一区二区三区 | 久久久午夜精品| 一级二级黄色片| 亚洲天堂网中文字| 久热这里只有精品在线| 高跟丝袜一区二区三区| 日批视频免费观看| 欧美一区午夜精品| 欧美自拍偷拍一区二区| 亚洲美女精品成人在线视频| 成年人在线免费观看| 久久综合色88| 1024在线看片你懂得| 国产精品美女在线| 日韩欧美中文在线观看| 国内外成人免费视频| 欧美一区电影| 女人被男人躁得好爽免费视频| 久久国产精品久久w女人spa| 婷婷六月天在线| 国产精品一区二区久久不卡 | 北条麻妃一二三区| 日韩精品中文在线观看| 免费av网站在线观看| 97在线视频观看| 亚洲成人毛片| 欧美福利精品| 欧美喷水视频| 一区二区三区 欧美| 成人深夜在线观看| 欧美性猛交xxxx乱| 一区二区三区久久| 超碰在线免费97| 精品免费一区二区三区| 亚洲精品承认| 欧美激情一级欧美精品| 国产在视频一区二区三区吞精| 国产91一区二区三区| 久久免费大视频| 成人免费在线小视频| 国产精品一级片在线观看| 午夜理伦三级做爰电影| 亚洲综合清纯丝袜自拍| 在线免费观看日韩视频| 日韩av在线免费| 黑人玩欧美人三根一起进| 国产精品入口免费视| 巨人精品**| 久久久久久久9| 极品少妇一区二区三区精品视频 | 亚洲国产aⅴ成人精品无吗| 一区二区www| 亚洲深夜福利在线| 色网在线免费观看| 国产另类自拍| 在线欧美亚洲| 欧美熟妇精品一区二区| 亚洲婷婷综合色高清在线| 亚洲天堂国产精品| 亚洲色图日韩av| 成人影院大全| 欧美午夜免费| 久久中文字幕一区二区三区| 久久偷拍免费视频| 精品国产乱码久久久久酒店| 亚洲毛片在线播放| 欧美激情综合亚洲一二区| 欧州一区二区三区| 懂色av粉嫩av蜜臀av| 韩国女主播成人在线| 国产亚洲精品久久久久久豆腐| 欧美日韩一区二区三区高清| 国产一级片在线| 国产成人一区二区在线| 国产aⅴ精品一区二区三区久久| 六月丁香婷婷激情| 久久综合色天天久久综合图片| 欧美日韩一二三四区| 亚洲欧美综合v| 欧美性理论片在线观看片免费| 日本婷婷久久久久久久久一区二区| 免费亚洲一区| 蜜桃av乱码一区二区三区| 欧美午夜精品久久久久久孕妇| 尤物视频在线免费观看| 国产日韩在线精品av| 一级毛片免费高清中文字幕久久网| 黄色三级视频在线播放| 亚洲国产欧美日韩另类综合 | 欧美人与性动交α欧美精品| 亚洲国产乱码最新视频| www.国产免费| 日韩有码在线观看| 欧美成年网站| 97超碰人人澡| 国产欧美一区二区精品性| 国产91精品看黄网站在线观看| 中文字幕精品久久| 免费观看亚洲视频大全| 少妇久久久久久被弄到高潮| 成人精品一区二区三区四区 | 午夜免费一区| 中日韩av在线播放| 亚洲国产一区二区三区| 人妻一区二区三区四区| 欧美一区二区视频97| 成人在线免费观看91| 国产免费成人在线| 中文字幕一区二区三区在线不卡| 国产伦精品一区二区三区四区| 欧美极品少妇xxxxⅹ免费视频| 国产精品18hdxxxⅹ在线| 色哟哟精品视频| 亚洲精品一卡二卡| 欧美xxx.com| 国产精品亚洲欧美导航| 国产综合久久| aaaaa一级片| 欧美在线观看视频一区二区| 在线三级中文| 免费精品视频一区| 韩日欧美一区二区三区| 亚洲黄色一区二区| 久久精品久久久久| 成人另类视频| 特级西西444www| 亚洲成a天堂v人片| 黄色网址在线免费观看| 国产精品福利视频| 美女视频黄 久久| 久草福利资源在线观看|