一起草最新网址_日韩一区二区麻豆国产_91视频婷婷_日本一区二区视频在线_日韩激情一区二区三区_国产另类第一区_成人免费在线播放视频_亚洲永久精品ww.7491进入_久久这里有精品视频_久久精品一级片_日韩av在线网页_波多野结衣不卡视频

Struts初級教程(5)-表單驗證_JSP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:Struts初級教程(4)-對國際化的支持
隨著全球經濟的在體化趨勢,網頁設計開發者應該開發出支持多國語言、國家化的web應用程序。就是一個web應用程序在運行時能夠根據客戶端請求所來自的國家和語言的不同顯示不同的用戶界面。這樣當需要在應用程序中添加對一種新的語言的支持時,不需要對已有的軟

     應該清楚在Struts框架中,使用ActionForm Bean來實現應用程序系統的非持久性數據存儲和維護功能,它采用了自動填充屬性和調用的機制。所以必須繼承ActionForm類,并且包涵用戶表單輸入的屬性,以及相應的get方法和set方法。另外,還可以根據需要重寫父類的reset()和validate()方法,實現屬性的重置和表單數據驗證功能。 
     ActionForm類用于在視圖層和控制層之間傳遞HTML表單數據?刂茖涌梢詮腁ctionForm Bean中讀取用戶輸入的表單數據,也可以把來自模型層的數據存放到ActionForm Bean中,然后把數據返回給視圖。即ActionForm Bean從HTML表單中獲取用戶輸入的數據并將傳遞給Action類,也可以把從業務層返回的數據用來填充ActionForm Bean,然后JSP頁面用它來為HTML表單提供各種輸出字段的數據。此外,ActionForm Bean還具有表單驗證功能,可以過濾不合法的數據。 
     ActionForm Bean有兩種存在范圍:request和session。如果ActionForm Bean存在于request范圍,它僅在當前的請求/響應生命周期中有效。如果ActionForm Bean存在于session范圍,同一個ActionForm Bean實例在整個HTTP會話中都有效。 

     Ø   validate()方法
     這個方法主要負責檢查數據的格式和語法,而不負責檢查數據是否符合業務邏輯。
     ActionForm基類中的validate()方法在默認情況下將返回null。如果創建了ActionForm的子類,那么應該在子類覆蓋validate()方法。
     Ø   reset()方法
    這個方法用于恢復ActionForm Bean 的屬性的默認值。例如:把字符串屬性設為null或某個初始值。
     1、 修改前面我們寫的LoginActionForm,如果你不清楚的話,請您先看前幾個實例,具體代碼如下:
     public ActionErrors validate(ActionMapping actionMapping, 
               HttpServletRequest httpServletRequest) { 
    ActionErrors errors = new ActionErrors(); 
    if (username == null|| username.equals("")) { 
        errors.add(ActionErrors.GLOBAL_MESSAGE,  
                    new ActionError("loginform.error.username")); 
    } 
    if (userpass == null||userpass.equals("")) { 
        errors.add(ActionErrors.GLOBAL_MESSAGE,  
                    new ActionError("loginform.error.password")); 
    } 
    return errors;
}

這個方法返回ActionErrors對象,如果返回的ActionErrors對象為null,或者不包含任何ActionMessage對象,就表示沒有錯誤,數據驗證通過。如果ActionErrors中包含ActionMessage對象,就表示發生了驗證錯誤,此時就回把請求轉發到你struts.xml里面<action>元素input屬性指定的web資源。
new ActionError("loginform.error.username");取得資源文件里面的鍵值,用于頁面的輸出。
     2、 打開applicationResource.properties,加入如下信息:
loginform.error.username=please enter your username
loginform.error.password=please enter your password
因為我們前面做了國際化,所以打開applicationResource_zh_CN.properties文件,添加如下:
loginform.error.username=請輸入用戶名
loginform.error.password=請輸入密碼
     3、 修改struts-config.xml文件
<action  
    path="/login"  
    name="loginActionForm"  
    scope="request" 
    type="actions.LoginAction" 
    validate="true"  
    input="/login.jsp"> 
        <forward name="success" path="/success.jsp" /> 
        <forward name="error" path="/wrong.jsp" /> 
 </action>
在<action>元素中,name和scope屬性分別指定ActionForm的名字和它的范圍,valudate屬性指定是否執行表單驗證,而input屬性表示驗證失敗,所要顯示用戶的內容。
     4、 修改login.jsp,在<body>元素添加,目的是顯示錯誤信息,具體代碼片段如下:
<div> 
    <font color="red"> 
        <html:messages id="error"> 
            <li><bean:write name="error"/></li> 
         </html:messages> 
    </font>
</div>
<html:message/> :用于輸出消息。屬性介紹如下:
n         name:指定ActionMessages對象存放在request或session范圍內的屬性key。標簽處理類將根據這一屬性key來檢索request或session范圍的ActionMessages對象。
n         message屬性:指定消息的來源。如果為true,則從request或session范圍內檢索出屬性key為Globals.MESSAGE_KEY的ActionMessages對象,此時name屬性無效;如果為false,則根據name屬性來檢索ActionMessage對象,如果此時沒有設置name屬性,將采取默認值Globals.ERROR_KEY.message屬性的默認值為false。
n         id屬性:用來命名從消息中檢索出來的每個ActionMessage對象,它和<bean:write>標簽的name屬性匹配。
<bean:write/>:表示顯示javaBean或其屬性的內容。
5、 運行
打開IE,鍵入如下地址:http://localhost:8080/Struts1_Login/login.jsp
不輸入任何東西,我們直接點幾擊“確定”,如下:


二、Struts的Validator驗證框架
Validator 目前是Jakarta Commons 項目的一部分,它也被包含在Struts主分發里面,可以直接使用Struts 中自帶的Validator 庫,也可以去網站上下載http://jakarta.apache.org/commons/。 
       Struts框架能夠通過ActionForm Bean的validate()方法對用戶輸入的表單數據進行驗證。但是這種驗證方式又有一定的局限性。必須由具體的代碼來實現驗證邏輯,如果驗證邏輯發生了改變,就需要重新編寫程序代碼。此外,如果系統中有多個ActionForm Bean,并且他們包含一些相同的驗證邏輯時,那么開發人員必須對每個ActionForm Bean進行重復開發呢? 
       Validator框架能夠克服在ActionForm Bean中進行數據驗證的局限性,它允許為Struts應用靈活的配置驗證規則,無需編程。
Validator框架主要依賴于兩個JAR文件:
Ø         Jakarta-oro.jar
提供了一組處理文本的類,具有文本替換,過錄和分割等功能。
Ø         commons-validator.jar
提供了一個簡單、可擴展的驗證框架,包含了通用的驗證方法和驗證規則。 

主要的Struts驗證組件

組件

說明

驗證器

處理原生和其它通用類型;掘炞C器包括required,mask(匹配正則表達式)minLength,maxLength,range,nativetypes date,email,和creditCard。也可以定義定制 (或者插件) 驗證器。

資源文件

提供(本地化的)標注和消息。默認與Struts 共享消息資源。

XML 配置文件

根據需要定義針對字段的表單集和驗證。驗證器可以在一個單獨的文件中定義。

JSP 標簽

對給定的表單或Action 路徑產生JavaScript 驗證器

ValidatorForm

根據FormBean 的名稱自動驗證屬性(在運行時通過ActionMapping 參數傳到validate 方法)。必須被擴展才能提供表單之上的期望屬性的驗證。

ValidatorActionForm

基于action 路徑自動驗證屬性(在運行時通過ActionMapping參數傳到validate 方法)。必須被擴展才能提供表單之上的期望屬性的驗證。


有些字段可能必須要求有數據輸入。而郵政編碼總是具有已知的長度。其它公共字段類型包括數值、日期、身份證號碼等等。
驗證器本身具有一些基本的驗證器來處理這些公共需要,當然還有其它一些需要。如果你的驗證不能被基本驗證器或者正則表達式滿足,你可以開發你自己的驗證器并插入到包中;掘炞C器支持其自身附帶的基本插件。

安裝和配置 
       Validator框架采用兩個基于XML的配置文件來配置驗證規則。一個是validator-rules.xml,另一個是validation.xml,這兩個文件應該部署在對應于WEB應用程序的WEB-INF文件夾下,對應的兩個jar文件也添加到WEB-INF/lib目錄下。
1、 validation-rules.xml
在validation-rules.xml 文件中配置了一些全局性的驗證規則,使得你在應用程序中使用校驗而不用關注實現細節。這個配置文件是Validator 框架自帶的,可以用在所有Struts應用中。它默認配置了許多很常用的規則,一般來說,不用去更改它,除非需要擴展或修改這些默認的驗證規則。
建議:即使你需要擴展一些規則,也不要去修改validation-rules.xml,而是通過新的配置文件去定義你所擴展的校驗規則。
validator-rules.xml文件的根元素是form-validation,它包含一到多個global元素,global元素包含一到多個validator 元素。
每一個validator 元素定義了一個唯一的驗證規則。下面是validation-rules.xml 文件中的一個片斷, (mask)驗證規則:
<validator name="mask" 
    classname="org.apache.struts.validator.FieldChecks" 
    method="validateMask" 
    methodParams="java.lang.Object, 
                  org.apache.commons.validator.ValidatorAction, 
                  org.apache.commons.validator.Field, 
                  org.apache.struts.action.ActionMessages, 
                  org.apache.commons.validator.Validator, 
                  javax.servlet.http.HttpServletRequest" 
    depends=""
msg="errors.invalid"/>
1) name:                  賦予驗證規則的一個唯一的名稱。
2) classname:           指的是具體實現驗證規則的類。
3) method:               指包含具體實現類的方法。
4) methodParams:    聲明method屬性所指定的方法參數,多個參數之間用逗號分隔。
5) depends:              指定在調用當前的嚴整規則之前必須先調用的其他驗證規則。多個則用逗號分隔。
6) msg:                   指定來自于Resource Bundle中的消息key。當驗證失敗時,validator框架根據這個消息key到Resource Boundle中查找匹配的消息。
2、 validation.xml 
      Validator框架所需要的第二個配置文件是validation.xml,這個配置文件是具體應用(項目)所特定的,可以根據你的應用(項目)情況進行自定義配置。它描述了具體的ActionForm使用validation-rules.xml文件中的哪個驗證規則進行驗證。
一個自定義的驗證規則如下:
<form-validation> 
    <formset> 
        <form name="loginActionForm"> 
            <field property="username" depends="required"> 
                <arg key="label.username" /> 
            </field> 
            <field property="userpass" depends="required"> 
                <arg key="label.password" /> 
            </field> 
        </form> 
    </formset>
</form-validation>
Validator.xml文件的根元素為<form-validation>元素,它包含兩個子元素:<global>和<formset>元素。 
1) <global>元素可以定義<constant>子元素,它用來定義常量表達式。 
2)  <formset>元素包含兩個子元素:<contant>和<form>。
3) <form>元素用于為表單配置驗證規則,它的name屬性表示你驗證formBean,必須和struts-config.xml里面FormBean名字保持一致。<form>元素可以包含一個或多個<field>子元素。 
4) <field>元素是針對表單中字段的驗證規則。Property屬性用于指定FormBean中需要驗證的字段的名稱,depends屬性用于指定字段的驗證規則,多個用逗號分隔。 
5) <arg>元素表示出錯時的主體信息,key 是你屬性文件里面的key。 
6) 主要是對前面<depends>元素包含的驗證規則的定義。
3、插入Validator 
       每一個Struts應用需要知道是否使用了Validator框架,可以通過PlugIn(插件)機制將Validator框架配置到Struts應用中。
下面的代碼演示了如何將Validator 作為一個插件加入到Struts 應用中,在Struts 應用的配置文件Struts-config.xml 中加入如下代碼片段:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> 
    <set-property property="pathnames"  
                  value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml"/>
</plug-in>
pathnames屬性的值用來指定Validator 框架所使用的配置文件,多個配置文件之間用逗號分隔。 當應用啟動的時候,Struts框架將調用ValidatorPlugIn的init()方法。Validator框架的配置文件將會加載到內存中供應用使用。在init()方法被調用之前,pathnames所指定的值將會傳遞給ValidatorPlugIn的實例,ValidatorPlugIn實例將會依據這個值去加載配置文件。
案例說明:根據前面的例子我們進行進階,要求用戶輸入用戶名、密碼。并且用戶名、密碼是必須,若為空,則提示錯誤信息。
A、服務器段驗證 
       1、修改FormBean 
              我們以前的是繼承ActionForm,現在改成ValidatorForm,導入相應的包,并刪除validator和reset方法。 
       2、修改struts-config.xml文件,具體代碼如下:
<action  
       path="/login"  
       name="loginActionForm"  
       scope="request" 
       type="org.zhoudq.webapp.action.LoginAction" 
       validate="true"  
       input="/login.jsp">
 
              <forward name="success" path="/success.jsp" /> 
              <forward name="error" path="/wrong.jsp" />
</action> 
      將validator改為true,告訴服務器對這個表單進行驗證,input的值,是告訴服務器如果嚴整失敗的話,將跳轉的頁面。
3、添加驗證規則 
 在WEB-INF下創建validaton.xml這個文件,導入引用的dtd,添加如下內容:
<form-validation> 
    <formset> 
        <form name="loginActionForm"> 
            <field property="username" depends="required"> 
                <arg key="label.username" /> 
            </field> 
            <field property="userpass" depends="required"> 
                <arg key="label.password" /> 
            </field> 
        </form> 
    </formset>
</form-validation>
3、修改Resource Boundle文件:
英文的資源文件:applicationResource_en_US.properties
errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} is invalid.
errors.byte={0} must be a byte.
errors.short={0} must be a short.
errors.integer={0} must be an integer.
errors.long={0} must be a long.
errors.float={0} must be a float.
errors.double={0} must be a double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}
errors.creditcard={0} is an invalid credit card number.
errors.email={0} is an invalid e-mail address.
button.submit=Submit
button.reset=Reset
button.cancel=Cancel
label.username=UserName:
label.password=Password:
loginform.error.username=please enter your username
loginform.error.password=please enter your password
loginform.fail=invalidation name and password,login error!
中文的資源文件:applicationResource_zh_CN.properties
errors.required={0} 是必須的.
errors.minlength={0} 不能少于 {1} 個字符.
errors.maxlength={0} 不能多于 {1} 個字符.
errors.invalid={0} 是非法的.
errors.byte={0} 必須是 byte 類型.
errors.short={0} 必須是 short 類型.
errors.integer={0} 必須是 Integer 類型.
errors.long={0} 必須是 long 類型.
errors.float={0} 必須是 float 類型.
errors.double={0} 必須是 double 類型.
errors.date={0} 不是一個日期.
errors.range={0} 不在 {1}- {2} 之間.
errors.creditcard={0} 是一個非法的身份證號r.
errors.email={0} 是一個非法的油箱地址.
button.submit=確定
button.reset=重置
button.cancel=取消
label.username=用戶名:
label.password=密碼:
loginform.error.username=請輸入用戶名
loginform.error.password=請輸入密碼
loginform.fail=用戶名或密碼錯誤,登錄失敗!
5、在struts-config.xml添加validator
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> 
    <set-property property="pathnames"  
                  value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml"/>
</plug-in>
5、運行 
        打開IE,鍵入:http://localhost:8080/Struts1_Login/login.jsp,直接點確定,如下圖:



B、客戶端驗證 
       這也表現了Validator驗證框架的強大之處,又服務器生成javascript腳本,這樣就直接在客戶端進行驗證了,從而減少了服務器的壓力,萬事有力又有避,這中方式服務器在生成腳本的同時又犧牲能性能,呵呵,看如何實現吧,一定很振奮吧. 
   1) 修改login.jsp頁面
<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html:html> 
    <head><title>login</title></head> 
    <body bgcolor="#ffffff"> 
    <h1>login</h1> 
    <div> 
        <font color="red"> 
            <html:messages id="error"> 
                <li><bean:write name="error"/></li> 
            </html:messages> 
           </font> 
       </div> 
    <html:javascript formName="loginActionForm" /> 
    <html:form action="login.do" onsubmit="return validateLoginActionForm(this);">
 
    <bean:message key="label.username"/> 
    <html:text property="username" /> 
    <br /> 
    <bean:message key="label.password"/> 
    <html:text property="userpass" /> 
    <br> 
    <html:submit property="submit"><bean:message key="button.submit"/></html:submit> 
    &nbsp;<html:reset><bean:message key="button.reset"/></html:reset> 
    </html:form> 
    </body>
</html:html>
a)<html:javascript formName="loginActionForm" />表示生成js代碼,formName屬性指定驗證表單的名字,必須和struts-config.xml里面的form一樣。
b)<html:form action="login.do" onsubmit="return validateLoginActionForm(this);"> 
 當用戶提交表單的時候,就會調用<html:javascript>標簽生成的javascript腳本的方法,從而執行客戶端的驗證,其中的LoginActionForm是你FormBean的名字對用,必須和struts-config.xml里面的form一樣,在這里面第一個字母大寫哦。
2)運行測試:
打開IE,鍵入:http://localhost:8080/Struts1_Login/login.jsp,直接點確定,如下圖:





分享:Struts初級教程(3)-結合數據庫應用
這一節我們開始用 Struts 結合數據庫設計程序,主要將上一節的程序略做修改,如下所示: 效果圖: 顯示結果如下圖: 如果您輸入的是不合法的話,則如下圖: 程序修改步驟: A、數據源配置 在struts-config.xml文件中有一data-sources元素是用來配置應用所需要

來源:模板無憂//所屬分類:JSP教程/更新時間:2010-03-23
相關JSP教程
国产亚洲综合在线| 丁香天五香天堂综合| 日韩avvvv在线播放| 久久精品99| 极品少妇xxxx偷拍精品少妇| а 天堂 在线| 国产欧美精品日韩| 97久久久精品综合88久久| 国内性生活视频| 欧美精品电影在线播放| www.色偷偷.com| 一区二区三区国产| 欧美熟妇激情一区二区三区| 高清视频一区二区| 成人欧美一区二区| 污片在线观看一区二区| 潘金莲一级淫片aaaaaaa| 亚洲成人激情在线观看| 99超碰在线观看| 久久久久久久久久电影| 天堂中文av在线| 日韩一区二区在线观看视频| 免费中文字幕在线观看| 亚洲精品永久免费| 99久久国产精| 国产一区二区免费| 夜夜嗨av禁果av粉嫩avhd| 538在线一区二区精品国产| 国产精品免费一区二区| 男人天堂视频网| 精品久久久久久综合日本欧美 | 不卡毛片在线看| 久久久美女视频| 亚洲色图视频网| 日韩专区一卡二卡| 国产亚洲欧美久久久久| 亚洲 高清 成人 动漫| 国产欧美在线视频| 久久久久青草大香线综合精品| 一级二级三级欧美| 午夜不卡av在线| 国产三级av在线播放| 亚洲高清不卡av| 无码人妻丰满熟妇啪啪网站| 国产视频亚洲视频| 亚洲蜜臀av乱码久久精品| 37pao成人国产永久免费视频| 欧美亚一区二区| 日韩网站在线播放| 在线电影av不卡网址| 蜜桃一区二区三区在线观看| 亚洲成人天堂网| 激情视频小说图片| 国产精品一码二码三码在线| 久久精品国产亚洲7777| 久久久国产精品麻豆 | 国产一区二区女| 国产aaaaa毛片| 欧美大片免费观看| 99免费在线视频| 日韩欧美在线电影| 日韩欧美久久久| 精品一区在线看| 一区二区三区四区欧美| 欧美三区在线观看| 国内精品免费视频| 在线播放日韩av| 夜夜狠狠擅视频| 成人a免费视频| 九九久久精品视频| 国产黄色av网站| 日本一区免费| 欧美在线|欧美| 久久国产精品免费| 国产成人精品a视频一区www| 亚洲国产另类av| 亚洲影院在线播放| 国产一精品一aⅴ一免费| 亚洲午夜激情影院| 黄色av网址在线观看| 日韩中文字幕a| 久久免费一级片| 免费99精品国产自在在线| 免费观看在线综合| 欧美夫妇交换xxx| 国产精品大陆在线观看| 国产亚洲精品aa| 色姑娘综合天天| 欧美一级电影在线| 国产精品亚洲美女av网站| 欧美日韩免费观看一区二区三区| 中文字幕网址在线| 69久久久久久| 91免费在线观看网站| 91女厕偷拍女厕偷拍高清| 国产免费的av| 疯狂撞击丝袜人妻| 1024手机在线观看你懂的| 加勒比精品视频| 中文字幕一区二区三区四| 国产在线一区二区三区欧美| 欧美无人高清视频在线观看| 老牛嫩草一区二区三区日本| 亚洲天堂网一区二区| 国产精品日日做人人爱| 日本波多野结衣在线| 久久99九九| 欧美日韩激情美女| 91社区视频在线观看| 色综合天天色综合| 日本一级淫片演员| 欧美精品在线免费观看| 1区2区3区国产精品| 天天干天天爽天天操| 欧美精品99久久| 一本一道久久a久久综合蜜桃| 国模无码视频一区| 免看一级a毛片一片成人不卡| 特黄视频免费看| 久久亚洲精品成人| 一区二区三区丝袜| 成人免费看黄yyy456| 欧美久久久久中文字幕| 国产性做久久久久久| 免费av网站观看| 国产午夜手机精彩视频| 国产欧美一区二区三区另类精品| 91福利视频久久久久| 久久精品国产99国产| 久久99精品国产麻豆不卡| 精品无码av在线| 欧美 变态 另类 人妖| 欧美精品无码一区二区三区| 欧美激情久久久| 久久国产精品区| 国产精品成人69xxx免费视频| 成人综合色站| 91国偷自产一区二区三区观看| 亚洲男人天堂2021| 久久久亚洲精品无码| 国产亚洲精品自在久久| 亚洲xxxxx| 欧美大黑帍在线播放| 特级西西人体wwwww| 亚洲久久在线观看| 91丝袜一区二区三区| 国产超碰人人模人人爽人人添| 午夜成人亚洲理伦片在线观看| www..com日韩| 亚洲国产成人精品一区二区 | 91手机视频在线| 欧美精品情趣视频| 亚洲精品av在线| 日韩一区二区三免费高清| 亚洲欧美影音先锋| 国内av一区二区| 91综合免费在线| 人人爽人人爽av| 国产精品日日摸夜夜添夜夜av| 国产精品18久久久久久麻辣| 日韩精品极品视频免费观看| 亚洲免费观看高清在线观看| **性色生活片久久毛片| 一区二区三区四区在线播放| 欧美精品一区二区三区蜜臀| 4438全国成人免费| 青青草综合视频| 日本五十肥熟交尾| 中文字幕一区二区人妻| 国产人妖一区二区| 久操视频在线免费观看| 国产99久久久久久免费看| 91视频免费看片| 中文字幕激情视频| 美女伦理水蜜桃4| 欧美动漫一区二区| 亚洲精品乱码久久久久久动漫| 91av俱乐部| 人妻久久久一区二区三区| 日本老熟妇毛茸茸| 天堂中文视频在线| 国产九色91| 欧美日韩高清在线一区| 2019国产精品视频| 欧美激情精品久久久久久免费印度| 日韩欧美在线一区| 国产91精品一区二区| 懂色av中文字幕| 免费不卡av网站| 国产欧美综合精品一区二区| 日韩黄色高清视频| 国产精品国产三级国产aⅴ中文| 久久久黄色大片| 欧美又黄又嫩大片a级| 日本在线视频www色| 3d动漫精品啪啪一区二区三区免费 | 在线观看91精品国产入口| 日韩中文字幕免费观看| 日韩黄色片网站| 日韩在线观看视频一区二区| 男生和女生一起差差差视频| 免费观看国产视频在线| 91久久久精品| 欧美精品做受xxx性少妇| 欧美中文字幕久久| 中文在线资源观看网站视频免费不卡| 青草国产精品久久久久久| 欧美精品在欧美一区二区| 7777精品视频| 久久精品最新地址| 精品久久久久香蕉网| 亚洲人成精品久久久久久| 99这里只有久久精品视频| 开心九九激情九九欧美日韩精美视频电影| av资源免费看| 无码人妻久久一区二区三区| 成人免费视频网站入口::| 中文字幕99页| 女人扒开腿免费视频app| 东京热加勒比无码少妇| 日韩伦理在线免费观看| 男的插女的下面视频| 蜜臀av色欲a片无码精品一区| 一区二区免费在线视频| 综合视频免费看| 一级日韩一区在线观看| 色乱码一区二区三区熟女| 欧美日韩高清在线一区| 国产精品9999久久久久仙踪林| 成人在线观看av| 久久av免费一区| 日韩国产高清一区| 久久国产精品一区二区三区| 亚洲一区二区三区777| 51午夜精品| 国产在线观看一区| 在线日韩av永久免费观看| 看一级黄色录像| 日韩手机在线观看视频| 亚洲国产综合av| 制服丝袜在线第一页| 中文字幕av网址| 一二三四在线观看视频| 日韩精品视频一区二区| 日韩aaaaa| 国产又黄又猛又爽| av一区二区三| a美女胸又www黄视频久久| 一区二区久久久久久| 欧美午夜影院一区| 亚洲国产欧美一区二区三区同亚洲| 一本色道久久88精品综合| 久久亚洲精品毛片| 国产成人精品久久久| 亚洲视频第二页| 免费看黄色三级| 亚洲日本视频在线观看| 日韩一区精品字幕| 国产精品一区二区你懂的| 国产成人在线视频网址| 91一区在线观看| 欧美男生操女生| 欧美精品免费在线观看| 国产精品久久久久久久久| 午夜欧美一区二区三区免费观看| 鲁一鲁一鲁一鲁一av| 中文字幕一区二区三区精品 | www插插插无码免费视频网站| 国产精品熟妇一区二区三区四区| 国产又粗又长免费视频| 精品人妻无码一区二区三区蜜桃一| 国产不卡精品视频| 国产精品久久久久久久久动漫 | 欧洲精品在线播放| 好吊日在线视频| 国产乱码精品一区二区三区五月婷 | 热99精品里视频精品| 一二美女精品欧洲| 欧美精品999| 欧美激情第一页xxx| 97久久伊人激情网| 99久久99久久| 玛丽玛丽电影原版免费观看1977| 正在播放久久| 国产欧美久久久久| 九九免费精品视频| h片在线免费看| 一区二区三区在线不卡| 色综合男人天堂| 日韩毛片在线免费看| 精品伦精品一区二区三区视频密桃| 神马一区二区三区| 9191国产精品| 欧美中日韩一区二区三区| 逼特逼视频在线| 欧美特黄aaaaaa| 99久久久久久| 亚洲精品一区二区三区福利 | 最新日本中文字幕| 精品一区二区三区免费毛片爱 | 国产精品 日韩| 成人午夜福利一区二区| 风流老熟女一区二区三区| 亚洲精品免费看| 国内精品小视频在线观看| 波多野结衣免费观看| 国产一区二区按摩在线观看| 欧美色综合影院| 114国产精品久久免费观看| 成人av蜜桃| 国产成人免费在线观看视频| 中文字幕欧美日韩一区| 91亚洲人电影| 国产一级视频在线| 精品久久久久久亚洲国产300| 91丝袜美腿美女视频网站| 日本高清www| 懂色av中文一区二区三区| 欧美日韩国产二区| 在线免费观看污视频| 91香蕉视频污在线| 欧美夫妻性生活视频| 国产精品成人99一区无码| 成人免费不卡视频| 久久97精品久久久久久久不卡| www.久久久精品| av色综合久久天堂av综合| 国模gogo一区二区大胆私拍| 亚洲av无码专区在线播放中文| 青青草精品视频| 美女视频久久黄| 亚洲午夜久久久久久久国产| 午夜精品成人在线| 自拍亚洲欧美老师丝袜| www黄色在线观看| 丝袜美腿亚洲一区二区| 免费无码一区二区三区| 18成人在线视频| 亚洲精品不卡| 国产免费的av| 亚洲性生活视频在线观看| av免费观看不卡| 亚洲综合久久久| 亚洲欧美影院| 激情文学综合丁香| 91精品在线影院| 中文字字幕在线观看| 中文字幕亚洲欧美| 黄色香蕉视频在线观看| 亚洲欧洲日韩在线| 欧美极品少妇无套实战| 99国产精品久久久久久久久久久| 国产精品久久久久久久小唯西川| 国产伦理一区二区| 欧美激情综合色| 极品美妇后花庭翘臀娇吟小说| 精品国产精品三级精品av网址| 亚洲国产精品毛片av不卡在线| 91网站在线播放| 日本成人看片网址| 国产成人精品影视| 美女一区视频| 91欧美激情一区二区三区成人| 黄色一级片网址| 激情综合网av| 久久av一区二区三区漫画| 天天干,夜夜爽| 国产精品久久久久久久久久直播| 久久久夜夜夜| 国产欧美婷婷中文| 精品一区二区三区免费观看| 久久久久久久久久久久久9999| 国模一区二区三区白浆| 久久精品午夜福利| 午夜精品福利一区二区蜜股av| 日韩欧美一区二| 亚洲大片在线观看| 国产 中文 字幕 日韩 在线| 亚洲白虎美女被爆操| 国产盗摄x88av| 精品中文字幕在线2019| 黄色一级a毛片| 欧美高清视频一区| 大桥未久av一区二区三区中文| ww国产内射精品后入国产| 欧美日韩国产乱码电影| 欧美人与禽zozzo禽性配| 青青久久aⅴ北条麻妃| 可以看av的网站久久看| av磁力番号网| 色久优优欧美色久优优| 51调教丨国产调教视频| 精品自在线视频| 免费xxxx性欧美18vr| 奇米777四色影视在线看| 在线观看av一区二区| 97人妻人人揉人人躁人人| 久久久久久久久国产精品| 日韩高清不卡一区二区三区| www.在线观看av| 日韩免费一区二区| 西西44rtwww国产精品| 成人3d动漫一区二区三区91| 亚洲女人****多毛耸耸8| 日韩一卡二卡在线观看| 国产精品一区二区三区久久久| 国精产品一区一区三区mba视频| 黄色免费网址大全| 久久视频在线视频| 97久久精品人人爽人人爽蜜臀|