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

Struts2驗(yàn)證框架的使用和擴(kuò)展

開(kāi)發(fā) 后端
本文介紹一下struts2通過(guò)xml文件進(jìn)行校驗(yàn)的方法并說(shuō)明怎么樣擴(kuò)展自定義的驗(yàn)證。

struts2的能夠?qū)η芭_(tái)提交的表單數(shù)據(jù)進(jìn)行輸入有效性校驗(yàn),通常有兩種方式:

1、在Action類中通過(guò)validatexx驗(yàn)證,這種方式很簡(jiǎn)單,在此不再贅述;

2、通過(guò)編寫xx-validation.xml文件執(zhí)行表單驗(yàn)證,當(dāng)用戶提交表單請(qǐng)求后,struts會(huì)優(yōu)先執(zhí)行xml文件,如果校驗(yàn)不通過(guò)是不會(huì)讓請(qǐng)求訪問(wèn)指定action的。

本文介紹一下struts2通過(guò)xml文件進(jìn)行校驗(yàn)的方法并說(shuō)明怎么樣擴(kuò)展自定義的驗(yàn)證。

一、struts2驗(yàn)證框架的包位置

部署struts2項(xiàng)目有一個(gè)必備jar包:xwork-core-*.jar,在這個(gè)包中有這樣一個(gè)package"com.opensymphony.xwork2.validator.validators",所有官方驗(yàn)證類就放在這下面的,在這個(gè)包下面有一個(gè)"default.xml"文件,這就是驗(yàn)證框架的核心文件,里面配置了所有的驗(yàn)證類數(shù)據(jù)。

驗(yàn)證類的格式為:,在配置的時(shí)候只需要使用別名就能執(zhí)行指定驗(yàn)證了。

在這介紹struts2的幾個(gè)常用的驗(yàn)證類:

required:字段不能為空

requiredstring:字符串不能為空

int:int類型(可指定范圍)

long:long類型(可指定范圍)

short:short類型(可指定范圍)

double:double類型(可指定范圍)

date:時(shí)間格式(可指定范圍)

expression:ognl表達(dá)式判斷

fieldexpression:ognl表達(dá)式判斷

email:郵箱判斷

url:url路徑判斷

visitor:把同一個(gè)驗(yàn)證程序配置文件用于多個(gè)動(dòng)作(對(duì)一個(gè)Bean寫驗(yàn)證文件,每個(gè)使用的Action只要引用)

conversion:格式轉(zhuǎn)換

stringlength:字符串長(zhǎng)度

regex:正則表達(dá)式判斷

這里有個(gè)地址詳細(xì)介紹了這幾種驗(yàn)證的使用方法,大家可以參考下:http://code.google.com/p/j2eewiki/wiki/Struts2Validator

以上驗(yàn)證乍看還是非常全面的,但是很多驗(yàn)證功能還不夠強(qiáng)大(比如stringlength是把任何文字都當(dāng)做1的長(zhǎng)度,而中文像UTF-8是3個(gè)字節(jié)的長(zhǎng)度,這樣驗(yàn)證效果就不準(zhǔn)確了),所以很多時(shí)候是需要進(jìn)行自定義驗(yàn)證的,這個(gè)隨后再說(shuō)。

二、使用xml配置驗(yàn)證

①copy上面提到的"default.xml"文件到Action同級(jí)目錄下,修改文件名為"action名-validation.xml"。假設(shè)有這樣一個(gè)Action:com.struts.action.UserAction.java,那么你需要將xml文件放到com.struts.action包下面,并且改名為"UserAction-validation.xml"。

②刪除標(biāo)簽里所有的內(nèi)容,并且更改xml上面的dtd版本為1.0.2.dtd,這里我也不知道為什么1.0.0跑不起,反正改了就能執(zhí)行了。

Xml代碼

  1.         "-//OpenSymphony Group//XWork Validator 1.0.2//EN"      
  2.         "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">  

 

③編寫驗(yàn)證文件,field標(biāo)簽表示被驗(yàn)證的字段項(xiàng),field-validator標(biāo)簽表示使用什么驗(yàn)證約束,short-circuit表示如果有多個(gè)驗(yàn)證約束時(shí)只要有一個(gè)不通過(guò)則后面就不執(zhí)行驗(yàn)證了,message表示驗(yàn)證不通過(guò)時(shí)返回的錯(cuò)誤消息。

Xml代碼

  1. <field name="user.name">    
  2.     <field-validator type="requiredstring" short-circuit="true">    
  3.         <message>用戶名不能為空message>    
  4.     field-validator>    
  5. field>   

 

 

 

按照上面三步,一個(gè)基本的驗(yàn)證就出來(lái)了,大家可以去試試,只要提交的表單訪問(wèn)UserAction都會(huì)先通過(guò)xml的驗(yàn)證。假如你只想驗(yàn)證UserAction中的userAdd方法,則只需要將xml文件改名為"UserAction-userAdd-validattion.xml"即可。

三、擴(kuò)展struts2驗(yàn)證類

其實(shí)自定義驗(yàn)證類很簡(jiǎn)單,你只需要仿照struts2的任何一個(gè)驗(yàn)證類就能做出來(lái),前面提到不能驗(yàn)證utf-8格式的字符長(zhǎng)度,我們?cè)谶@就做一個(gè)獲取utf-8長(zhǎng)度的自定義框架。

①創(chuàng)建驗(yàn)證框架擴(kuò)展類,這里必須繼承 FieldValidatorSupport 類,重寫validate方法,具體驗(yàn)證代碼就在validate方法中寫,這里的get、set就是在xml中出現(xiàn)的屬性參數(shù)。這段代碼還不夠好,其實(shí)可以把encoding也作為屬性的,這樣傳入任何編碼格式都能獲取該編碼對(duì)應(yīng)的字符長(zhǎng)度。

Java代碼

  1. public class CheckStringLength extends FieldValidatorSupport {     
  2.          
  3.     private boolean trim;  // 是否去首位空格     
  4.     private int minLength; //最大長(zhǎng)度     
  5.     private int maxLength; //最小長(zhǎng)度     
  6.     private static final String ENCODING = "UTF-8"//編碼格式(默認(rèn)utf-8)     
  7.          
  8.     /*    
  9.      * 構(gòu)造方法初始化默認(rèn)數(shù)據(jù)    
  10.      */    
  11.     public CheckStringLength() {     
  12.         this.trim = true;     
  13.         this.minLength = -1;     
  14.         this.maxLength = -1;     
  15.     }     
  16.          
  17.     public boolean isTrim() {     
  18.         return trim;     
  19.     }     
  20.     public void setTrim(boolean trim) {     
  21.         this.trim = trim;     
  22.     }     
  23.     public int getMinLength() {     
  24.         return minLength;     
  25.     }     
  26.     public void setMinLength(int minLength) {     
  27.         this.minLength = minLength;     
  28.     }     
  29.     public int getMaxLength() {     
  30.         return maxLength;     
  31.     }     
  32.     public void setMaxLength(int maxLength) {     
  33.         this.maxLength = maxLength;     
  34.     }     
  35.     
  36.     @Override    
  37.     public void validate(Object arg0) throws ValidationException {     
  38.         String fieldName = this.getFieldName();     
  39.              
  40.         String val = (String) this.getFieldValue(fieldName, arg0);     
  41.              
  42.         //如果值為空則直接不通過(guò)     
  43.         if (val == null || val.length() <= 0) {     
  44.             return;     
  45.         }     
  46.              
  47.         if (trim) {     
  48.             val = val.trim();     
  49.             ////如果值為空則直接不通過(guò)     
  50.             if (val == null || val.length() <= 0) {     
  51.                 return;     
  52.             }     
  53.         }     
  54.              
  55.         int length = 0;     
  56.         try {     
  57.             //根據(jù)編碼格式獲得字符長(zhǎng)度     
  58.             length = val.getBytes(ENCODING).length;     
  59.         } catch (UnsupportedEncodingException e) {     
  60.             length = val.getBytes().length;     
  61.         }     
  62.              
  63.         /*    
  64.          *判斷字符長(zhǎng)度范圍     
  65.          */    
  66.         if (minLength > -1 && length < minLength) {     
  67.             this.addFieldError(fieldName, arg0);     
  68.         }     
  69.         if (maxLength > -1 && maxLength > maxLength) {     
  70.             this.addFieldError(fieldName, arg0);     
  71.         }     
  72.     }     
  73.          
  74. }    

 

②新建validators.xml文件,將"default.xml"的配置信息和自定義驗(yàn)證類的配置信息放到文件中,最后把validators.xml文件放到源碼根目錄下:

Xml代碼

  1. xml version="1.0" encoding="UTF-8"?>       
  2.         "-//OpenSymphony Group//XWork Validator Config 1.0//EN"        
  3.         "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">       
  4.     
  5. <validators>    
  6.     <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>    
  7.     <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>    
  8.     <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>    
  9.     <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>    
  10.     <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>    
  11.     <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>    
  12.     <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>    
  13.     <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>    
  14.     <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>    
  15.     <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>    
  16.     <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>    
  17.     <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>    
  18.     <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>    
  19.     <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>    
  20.     <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>    
  21.     <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>    
  22.          
  23.         
  24.     <validator name="stringlengthencoding" class="com.bless.struts2.validate.CheckStringLength"/>    
  25.    validators>   

 

 

③按照前面所說(shuō)的編寫表單驗(yàn)證規(guī)則,注意這里的param就是上面CheckStringLength類中的屬性,但是屬性是根據(jù)get、set方法來(lái)的 (因?yàn)閟truts2做了一個(gè)很蛋痛的事:他的驗(yàn)證類中有這樣一個(gè)屬性"doTrim",但是該屬性對(duì)應(yīng)的get、set方法是getTrim、setTrim,配置文件里必須這樣寫 false,記住是根據(jù)set方法配置param)。

Xml代碼

  1.         "-//OpenSymphony Group//XWork Validator 1.0.2//EN"      
  2.         "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">    
  3.     
  4. <validators>    
  5.         
  6.     <field name="user.name">    
  7.         <field-validator type="requiredstring" short-circuit="true">    
  8.             <message>用戶名不能為空message>    
  9.         field-validator>    
  10.         <field-validator type="stringlengthencoding" short-circuit="true">    
  11.             <param name="maxLength">10param>    
  12.             <param name="minLength">6param>    
  13.             <message>用戶名必須是6到10位字符!message>    
  14.         field-validator>    
  15.     field>    
  16. validators> 

 

 

 

 

基本上一個(gè)簡(jiǎn)單的自定義驗(yàn)證就完成了,大家可以手動(dòng)試試,這個(gè)東西確實(shí)很簡(jiǎn)單。

最后附上擴(kuò)展的幾個(gè)驗(yàn)證類,希望對(duì)大家有所幫助 :

Xml代碼

  1.     
  2.     <validator name="stringlengthencoding" class="com.bless.struts2.validate.CheckStringLength"/>    
  3.         
  4.     <validator name="checkformat" class="com.bless.struts2.validate.CheckFormat"/>    
  5.         
  6.     <validator name="checkhalfwidthdigit" class="com.bless.struts2.validate.CheckHalfWidthDigit">validator>    
  7.         
  8.     <validator name="checkspecialchar" class="com.bless.struts2.validate.CheckSpecialChar">validator>    
  9.         
  10.     <validator name="checkdate" class="com.bless.struts2.validate.CheckDate"/>    
  11.         
  12.     <validator name="checkdoublerange" class="com.bless.struts2.validate.CheckDoubleAccuracy"/>    

 

最后感謝同事jwt童鞋做的擴(kuò)展框架。

責(zé)任編輯:金賀 來(lái)源: JavaEye博客
相關(guān)推薦

2009-06-25 15:37:12

Struts2教程Validation框

2009-02-04 13:13:03

2009-06-05 09:58:20

struts2驗(yàn)證用戶注冊(cè)

2009-06-25 15:33:12

Struts2教程使用validate驗(yàn)證數(shù)據(jù)

2009-07-29 09:54:34

struts2和str

2009-02-04 12:00:08

2012-05-10 14:00:06

StrutsjsonJava

2009-06-04 11:08:32

struts2 val框架

2009-06-04 10:36:11

struts2 jar

2009-09-14 19:31:36

Struts1和Str

2009-06-25 15:11:28

Struts2教程Struts2程序

2011-05-03 09:40:58

iBatis

2009-06-26 17:15:44

Struts2

2009-02-04 10:51:07

2009-06-04 09:20:19

struts2 if標(biāo)使用

2009-07-14 17:10:44

struts2webwork

2009-07-03 09:35:57

Struts2 JSP

2011-11-25 13:01:16

JavaMVCstruts2

2009-06-04 08:34:24

Struts2配置struts.xml

2009-06-05 10:05:50

struts menustruts2
點(diǎn)贊
收藏

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

日韩精品一区国产麻豆| 一区二区三区欧美亚洲| 国产精品丝袜久久久久久高清| 超碰人人干人人| 久久久91麻豆精品国产一区| 亚洲国产裸拍裸体视频在线观看乱了 | 69堂成人精品免费视频| 国产av人人夜夜澡人人爽麻豆| 男人的天堂在线视频| 国内精品自线一区二区三区视频| 国内精品免费午夜毛片| 天天干天天舔天天操| 18国产精品| 在线免费观看日韩欧美| 300部国产真实乱| 久久视频www| 国产美女娇喘av呻吟久久| 欧美在线观看网站| 欧美黄色一区二区三区| 欧美精品一区二区三区中文字幕| 欧美tickling网站挠脚心| 色免费在线视频| 台湾佬中文娱乐网欧美电影| 一区二区三区在线视频播放| 神马影院午夜我不卡影院| 国产后入清纯学生妹| 麻豆传媒一区二区三区| 青草青草久热精品视频在线观看| 欧美毛片在线观看| 91久久国产| 国产午夜精品一区理论片飘花| 日韩成人av影院| 亚洲爽爆av| 欧美日韩在线播放| 能看的毛片网站| xx欧美视频| 午夜精品123| 欧美黄网在线观看| 免费av网站在线看| 欧美国产乱子伦 | 成人动漫免费在线观看| 精品调教chinesegay| 日韩无码精品一区二区| av综合网址| 欧美mv日韩mv| 免费在线观看日韩av| 99久久久成人国产精品| 欧美久久久久中文字幕| 一本岛在线视频| 91精品美女| 精品视频全国免费看| 草草草在线视频| 精品国产第一福利网站| 欧美性高潮床叫视频| 欧美性大战久久久久xxx| 成人影院在线视频| 黑人与娇小精品av专区| 成人在线免费观看av| 中文字幕高清在线播放| 欧美日韩中文字幕综合视频| 国产免费一区二区三区视频| 成人影院大全| 欧美午夜一区二区三区免费大片| 手机看片福利日韩| 国产91在线播放精品| 欧美日韩国产欧美日美国产精品| 黄色免费网址大全| 动漫一区二区三区| 日韩视频免费观看高清完整版| 自拍一级黄色片| 99ri日韩精品视频| 精品视频久久久久久| 丁香激情五月少妇| 天天综合久久| 欧美另类第一页| 日韩精品一区二区三区国语自制| 国产伦理一区| 国产精品日韩在线播放| 国产三级视频在线播放| 成人综合婷婷国产精品久久蜜臀| 久久99精品久久久久久秒播放器| 撸视在线观看免费视频| 中文字幕日韩精品一区| 黄色一级大片免费| 成人免费短视频| 欧美久久久一区| 人妻激情偷乱频一区二区三区| 天堂资源在线亚洲| 少妇高潮 亚洲精品| 美女福利视频在线观看| 亚洲欧美日本国产专区一区| 国产精品视频一区二区高潮| 亚洲av综合色区无码一二三区| 91老师片黄在线观看| 在线视频不卡一区二区| 国产理论在线| 欧美日韩黄视频| 在线观看国产免费视频| 四虎国产精品免费观看| 国外成人在线播放| 一区二区www| av一区二区三区| 一区二区三区的久久的视频| 国模雨婷捆绑高清在线| 欧美视频在线一区| 国产性生活毛片| **女人18毛片一区二区| 555www成人网| 亚洲a视频在线| 国产精品乱人伦| 日日橹狠狠爱欧美超碰| 国产精品亚洲欧美一级在线| 亚洲人高潮女人毛茸茸| 久久久久久蜜桃| 美女任你摸久久| 好吊色欧美一区二区三区视频| 欧洲美女少妇精品| 91久久精品一区二区二区| 最新日本中文字幕| 999久久久91| 国产成人在线一区| 亚洲区小说区图片区| 亚洲精品免费电影| 日本黄大片一区二区三区| 五月激激激综合网色播| 久久99热这里只有精品国产| 亚洲在线视频播放| 久久精品欧美一区二区三区不卡| 日本人体一区二区| 午夜精品在线| 久久久精品国产网站| 精品一区二三区| 26uuu久久天堂性欧美| 2019日韩中文字幕mv| 精品一区视频| 久久不射热爱视频精品| 亚洲系列在线观看| 国产精品色一区二区三区| 成人一区二区三| 美女毛片一区二区三区四区最新中文字幕亚洲| 久久99久久亚洲国产| 国产女同91疯狂高潮互磨| 国产精品人妖ts系列视频| 激情五月亚洲色图| 久久av资源| 国产精品黄色av| 成人在线播放视频| 欧美少妇一区二区| 女人裸体性做爰全过| 男女性色大片免费观看一区二区 | 亚洲一区二区美女| 337p日本欧洲亚洲大胆张筱雨| 你懂的国产精品永久在线| 91香蕉亚洲精品| aa在线视频| 日韩欧美亚洲国产另类 | 男女污污视频在线观看| 欧美日韩国产色视频| 一级特级黄色片| 国产精品久久777777毛茸茸| 开心色怡人综合网站| xxxxx性欧美特大| 在线亚洲欧美视频| 国产免费一区二区三区最新不卡| 亚洲三级小视频| 亚洲欧洲日韩综合| 亚洲精品视频啊美女在线直播| 精品国产乱码久久久久久久软件| 欧产日产国产精品视频| 亚洲美女喷白浆| 伊人久久中文字幕| 亚洲欧美日韩系列| 中文字幕人妻熟女在线| 国产精品久久久免费 | 综合激情网站| 国产麻豆乱码精品一区二区三区| 深夜在线视频| 伊人一区二区三区久久精品| 国产偷拍一区二区| 精品久久久一区| 极品尤物一区二区| 岛国精品一区二区| 激情视频综合网| 香蕉久久网站| 精品国产电影| 欧美黑粗硬大| 国内精品一区二区三区| yourporn在线观看视频| 日韩三区在线观看| 国产精品suv一区| 亚洲丝袜精品丝袜在线| 色婷婷免费视频| 麻豆精品一区二区三区| 91黄色在线看| 久久在线电影| 精品国产一区二区三区免费| av在线不卡精品| 色中色综合影院手机版在线观看| 日本中文字幕电影在线观看| 91麻豆精品国产91久久久久久| 日韩xxxxxxxxx| 国产精品二区一区二区aⅴ污介绍| 男女性杂交内射妇女bbwxz| 免费成人av资源网| 日韩伦理在线免费观看| 国产韩日影视精品| 欧美污视频久久久| 成人涩涩网站| 91久久久在线| 国精产品一区二区三区有限公司 | 黑人极品ⅴideos精品欧美棵| 伊人久久久久久久久久| 午夜影院在线视频| 欧美一级黄色大片| 中文在线免费看视频| 姬川优奈aav一区二区| 最新av电影网站| 久久午夜色播影院免费高清| 91精品啪在线观看国产| 国产在线精品一区二区| 男女男精品视频站| 免费日韩av| 精品人妻少妇一区二区| 我不卡手机影院| 性欧美.com| 欧美精品国产白浆久久久久| 999视频在线免费观看| 亚洲一区二区三区久久久| 国产精品久久婷婷六月丁香| 亚洲精品福利电影| 国模吧一区二区| aaa大片在线观看| 久久国产加勒比精品无码| 日本免费在线视频| 社区色欧美激情 | 国产天堂素人系列在线视频| 亚洲欧美日韩国产精品| 日本xxxx人| 精品不卡在线视频| 理论片中文字幕| 欧美电视剧在线看免费| 精品国产av 无码一区二区三区| 欧美日韩精品欧美日韩精品| 在线观看xxxx| 欧美日韩精品三区| 国产精品福利电影| 在线综合亚洲欧美在线视频| 国产精品伦理一区| 欧美一区二区在线不卡| 99久久精品无免国产免费| 欧美精品色综合| 国产男男gay体育生网站| 制服丝袜日韩国产| 国产成人精品毛片| 精品美女一区二区| 三级在线观看网站| 国产视频在线一区二区| 欧美777四色影视在线| 亚洲天堂久久av| 3d成人动漫在线| 久久在线观看视频| 日本性爱视频在线观看| 97激碰免费视频| 电影一区二区三| 国产精品久久久久久久久| 国产69精品久久久久9999人| 91影院在线免费观看视频| 日本精品一区二区三区在线观看视频| 91九色极品视频| 久久视频在线观看| 日本一区不卡| 亚洲精品2区| cao在线观看| 日韩福利电影在线观看| 性生活免费在线观看| 国产精品123| av直播在线观看| 国产精品三级av| 久草成人在线视频| 色综合天天狠狠| 国产精品免费无遮挡| 日韩欧美一级二级| 欧美男男激情freegay| 久久精品小视频| sm在线播放| 国产精品久久久久一区二区| 国产一区二区视频在线看| 九九九热999| 欧美韩日高清| 好吊妞无缓冲视频观看| 青青青伊人色综合久久| 97中文字幕在线观看| 国产欧美1区2区3区| 在线观看成人毛片| 在线视频综合导航| 欧洲av在线播放| www日韩中文字幕在线看| av毛片午夜不卡高**水| 国产日韩精品在线播放| 欧美黑白配在线| 正在播放亚洲| 亚洲欧美日本国产专区一区| 国产老头和老头xxxx×| 久久精品在这里| 国产一级生活片| 欧美日韩国产精品成人| 午夜影院在线视频| 欧美成人中文字幕在线| 日韩中文在线播放| 国产在线一区二| 在线国产一区| 高清一区二区视频| 91丨porny丨户外露出| 1024手机在线视频| 欧美日韩亚洲不卡| 国产女主播在线直播| 97久久精品国产| 视频欧美一区| 国产精品亚洲天堂| 蜜臀久久99精品久久久久久9| 中文字幕一区三区久久女搜查官| 一区二区三区四区高清精品免费观看| 无码久久精品国产亚洲av影片| 精品不卡在线视频| 日本在线视频中文有码| 国产在线精品一区免费香蕉| jvid福利在线一区二区| 色综合av综合无码综合网站| proumb性欧美在线观看| 久久久久久免费观看| 欧美一级欧美一级在线播放| 性开放的欧美大片| 国产欧美日韩精品丝袜高跟鞋| 精品一区亚洲| 日韩精品一区二区三区色欲av| aaa亚洲精品| 日韩手机在线观看| 亚洲白虎美女被爆操| 污污在线观看| 亚洲综合在线做性| 伊人成综合网| 欧美精品色视频| 亚洲另类中文字| 99热精品在线播放| 欧美成人午夜免费视在线看片| 国产精品欧美一区二区三区不卡| 这里只有精品66| 国产一级精品在线| 黄色一级免费视频| 欧美不卡一二三| 黄色aa久久| 精品国产一区二区三区免费| 性伦欧美刺激片在线观看| 一二三不卡视频| 欧美专区亚洲专区| 网友自拍视频在线| 97久草视频| 亚洲性视频h| 人妻丰满熟妇av无码久久洗澡| 欧美视频在线免费看| 黄色影院在线播放| 国产精品一区二区三区久久| 99久久亚洲精品蜜臀| 老女人性生活视频| 亚洲成人一二三| 欧美少妇另类| 国产精品永久免费观看| 天天做天天爱综合| 亚洲免费观看在线| 色婷婷综合久久久中文一区二区| www.av在线| 亚洲综合精品伊人久久| 亚洲精品专区| 337人体粉嫩噜噜噜| 日韩一区二区免费在线观看| 麻豆视频在线看| 亚洲午夜高清视频| 粉嫩蜜臀av国产精品网站| 国产又大又黄又粗| 日韩资源在线观看| 好吊妞视频这里有精品| 成人在线免费播放视频| 亚洲欧美日韩一区二区三区在线观看| 狠狠躁夜夜躁av无码中文幕| 日韩av手机在线| 夜间精品视频| 日韩精品电影一区二区| 91精品久久久久久蜜臀| a国产在线视频| 亚洲日本无吗高清不卡| 成人动漫中文字幕| 中文区中文字幕免费看| 久久久久久久国产精品视频| 国产精品午夜一区二区三区| 亚洲精品乱码久久久久久9色| 色哟哟国产精品| 黄色影院在线看| 一区二区免费在线视频| 91麻豆精品一区二区三区| 国产美女www爽爽爽视频|