欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

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器包括requiredmask(匹配正則表達式),minLengthmaxLength,rangenativetypes, dateemail,和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教程
午夜先锋成人动漫在线| 天天看天天摸天天操| 一根才成人网| 麻豆视频观看网址久久| 欧美一级淫片007| 国产一区二区精品免费| v8888av| 欧美亚洲福利| 国产.精品.日韩.另类.中文.在线.播放| 亚洲国产精品va在看黑人| 欧美日韩无遮挡| 国产67194| 羞羞答答一区二区| 亚洲欧美在线视频观看| 午夜精品久久久久久99热| 国产精品入口免费软件| www.亚洲欧美| 另类调教123区 | 黄色一级大片在线免费观看| 电影一区二区在线观看| 中文字幕欧美区| 午夜精品久久17c| 999久久久精品视频| 香蕉成人av| 成人短视频下载| 久久久精品一区二区| 日本不卡在线观看视频| 国产免费久久久| 日韩激情一二三区| 亚洲国产精品女人久久久 | 一本色道久久| 欧美一区二区三区视频免费| 欧美一区二区三区四区夜夜大片 | 欧美特级黄色片| 亚洲私拍自拍| 91精品国产色综合久久久蜜香臀| 久久精品午夜一区二区福利| 日本a级片视频| 羞羞答答成人影院www| 欧洲在线/亚洲| 免费日韩av电影| 日韩欧美中文字幕一区二区| 欧美a级片网站| 制服丝袜亚洲色图| 一区不卡视频| 中文在线观看免费高清| 日韩**一区毛片| 亚洲丝袜av一区| 国产福利视频在线播放| 少妇精品高潮欲妇又嫩中文字幕| 国产精品白丝jk黑袜喷水| 精品国产一区二区三区在线观看 | 亚洲激情在线视频| 黄色成人在线免费观看| 国产强伦人妻毛片| 国产一区二区视频在线播放| 视频直播国产精品| 午夜久久福利视频| 国产精一区二区| 亚洲免费三区一区二区| 3d动漫精品啪啪一区二区三区免费 | 国产精品自拍电影| 日韩国产欧美在线观看| 亚洲欧洲一区二区三区久久| 无码aⅴ精品一区二区三区浪潮| 91麻豆成人精品国产| 久久成人综合网| 自拍偷拍亚洲精品| 日本人69视频| 欧美日韩黄网站| 一区二区三区毛片| 国产成人精品免费视频大全最热| 国产亚洲精品码| 99综合精品| 亚洲人成电影网站色xx| 一道本视频在线观看| 欧美三级电影网址| 亚洲黄色小视频| 成人一区二区在线| 久久久午夜影院| 日韩av在线播放中文字幕| 最好看的2019年中文视频| 日韩一级免费片| 欧洲精品99毛片免费高清观看| 亚洲一区二区三区在线播放| 国新精品乱码一区二区三区18| 国产又爽又黄的视频| 美腿丝袜在线亚洲一区| 久操成人在线视频| 国产精品嫩草99av在线| 国产高清亚洲一区| 欧美华人在线视频| 免费看污黄网站在线观看| 国产免费久久| 91精品国产色综合久久ai换脸| 激情六月天婷婷| 性高潮久久久久久久久久| 国产欧美一区二区三区在线看蜜臀 | 日韩精品一区国产麻豆| 欧美视频在线第一页| 无码国产精品一区二区免费16| 国产欧美va欧美不卡在线| 99国产高清| 黄色大全在线观看| 成人午夜大片免费观看| 国产精品视频xxxx| 国产 欧美 日韩 在线| 美洲天堂一区二卡三卡四卡视频| 欧美精品videossex性护士| 精品无人区无码乱码毛片国产| 亚洲五月综合| 亚洲图片欧美日产| 最新中文字幕日本| 欧美xxxxx视频| 日韩精品视频在线免费观看| 亚洲自拍第三页| 国产亚洲一区二区三区不卡| 日韩欧美区一区二| 亚洲国产日韩欧美在线观看| 美女一区二区在线观看| 日韩欧美中文字幕制服| 国产一二三四在线视频| 全球av集中精品导航福利| 欧美美女激情18p| 亚洲国产精品久久久久爰色欲| 欧美黄色一级| 欧美高清dvd| 欧美在线观看视频网站| 亚洲男人都懂第一日本| 日韩女优毛片在线| 福利片一区二区三区| 国产一区2区| 亚洲精品在线视频| 精品人妻伦一二三区久| 午夜精品久久| 久久综合伊人77777| 国产精品69久久久久孕妇欧美| 久久青草久久| 国模私拍一区二区三区| 青娱乐国产在线视频| 精品亚洲成a人| 国产日韩在线观看av| 国产在线一级片| 欧美国产日产图区| 日韩久久久久久久| 亚洲精品国产嫩草在线观看| 色哟哟在线观看一区二区三区| 性欧美大战久久久久久久| 午夜日韩影院| 欧美哺乳videos| 亚洲欧洲国产视频| 黄色一区二区三区四区| 欧美国产中文字幕| 久久机热这里只有精品| 成人免费三级在线| 精品国产一区二区三区四区vr | 99在线精品免费视频九九视| 欧美激情一区二区三区在线视频观看 | 国产精品亚洲a| 理论片一区二区在线| 亚洲成人av中文字幕| 91丨porny丨对白| 国产欧美日韩一区二区三区在线| 高清一区二区三区四区五区| 国产精品第一页在线观看| av在线不卡免费看| 欧美人与物videos另类| 国产精品流白浆视频| 在线免费观看污视频| 一区二区三区成人精品| 日韩免费观看网站| 中文在线观看av| 一区二区三区四区中文字幕| 成人一级生活片| 久久99青青| 精品国产一区二区三区在线观看| 国产精品老熟女一区二区| 不卡的av网站| 日本一区二区三区在线视频 | 日本高清视频一区二区三区| 成人国产一区| 欧美大胆人体bbbb| 亚洲av综合一区二区| 精品一区二区三区影院在线午夜 | 日韩精品免费在线视频| 免费污网站在线观看| 欧美xxav| 538国产精品一区二区免费视频| 伊人久久中文字幕| 亚洲黄一区二区三区| 欧美精品一区免费| 天天综合一区| 2021国产精品视频| 国产精品熟女久久久久久| 亚洲成a人v欧美综合天堂下载| 蜜臀av午夜一区二区三区| 亚洲一本二本| 国产aaa精品| 亚洲精品国偷拍自产在线观看蜜桃| 日韩欧美成人精品| 天天av天天操| 日韩影院在线观看| 国产视色精品亚洲一区二区| 久久精品xxxxx| 亚洲国产精品久久久久| 99热这里只有精品4| 91丨九色丨尤物| 91精品国产吴梦梦| 精品一区二区三区中文字幕老牛| 欧美激情亚洲国产| 中文字幕永久免费视频| 岛国av在线不卡| 亚洲一区二区三区三州| 日本不卡视频在线观看| 狠狠爱一区二区三区| 精品国产亚洲一区二区在线观看| 亚洲欧美日韩第一区| 欧美精品久久久久性色| 国产精品久久毛片av大全日韩| 国产免费黄色一级片| 综合一区二区三区| 国产精品日韩在线播放| 午夜av入18在线| 亚洲精品一区二区三区福利| 亚洲一级二级片| 日本一区二区三区在线观看| 欧美a v在线播放| 狠狠综合久久| 91精品国产91久久久久青草| 日韩久久99| 伊人久久精品视频| 亚洲婷婷综合网| 狠狠综合久久av一区二区小说 | 999精品视频在这里| 日韩在线高清视频| 国产一级片一区二区| 日本丶国产丶欧美色综合| 国产精品无码在线| a在线欧美一区| 国产中文字幕乱人伦在线观看| 中文在线日韩| 97久久天天综合色天天综合色hd| 天堂久久一区| 丝袜美腿亚洲一区二区| 亚洲天堂手机版| 在线亚洲人成电影网站色www| 中文字幕一二三四区| 99久久久精品| 国产视频一视频二| 亚洲视频1区| 三级亚洲高清视频| 青青草成人在线| 神马电影网我不卡| 国产一区二区三区在线观看视频| 久久亚洲天堂网| 色婷婷精品久久二区二区蜜臂av| 波多野结衣一本| 国产欧美精品国产国产专区| av视屏在线播放| 久久国产人妖系列| 99精品一区二区三区的区别| 欧美精品二区| 精品免费二区三区三区高中清不卡| 国产精品xxx在线观看| 国语对白做受69| 婷婷午夜社区一区| xvideos亚洲人网站| 国产探花精品一区二区| 亚洲成人国产精品| 欧美a视频在线观看| 欧美在线短视频| 国产67194| 午夜日韩在线电影| 国产jk精品白丝av在线观看| 中文字幕av一区 二区| 亚洲欧美天堂在线| 成人av中文字幕| 992kp快乐看片永久免费网址| 久久er99精品| 9色porny| 久久中文欧美| 大桥未久一区二区三区| 亚洲伦理一区| 亚洲精品欧洲精品| 国内自拍视频一区二区三区| 久热这里只精品99re8久| 欧美超碰在线| 精品国产一区二区三| 日韩精品dvd| 国产精品一区二区三区观看| 精品日韩毛片| 国产精品三区www17con| 欧美限制电影| 成人自拍爱视频| 国产aⅴ一区二区三区| 亚洲午夜精品一区 二区 三区| 日韩免费不卡av| 精品一区视频| 国产精品99一区| 99精品国产一区二区三区2021| 国产91久久婷婷一区二区| 久久综合偷偷噜噜噜色| 国产91在线播放| 综合成人在线| 国产精品自产拍在线观| 欧美变态挠脚心| 亚洲一区二区三区久久| 精品国产一区一区二区三亚瑟| 91在线视频精品| 国产欧美一区二区三区精品观看 | 日韩精品欧美大片| 亚洲自拍av在线| 91亚洲国产成人久久精品| 久久久久久艹| 欧美日韩精选| 最新欧美日韩亚洲| 日韩国产高清影视| 夫妻免费无码v看片| 岛国一区二区在线观看| 亚洲精品综合在线观看| 国产日本亚洲高清| 国产麻豆xxxvideo实拍| 亚洲伊人色欲综合网| 午夜国产福利视频| 欧美在线制服丝袜| 国产精品久久久久久人| 亚洲精品国产精品乱码不99按摩 | 欧美www在线| 亚洲精品tv| 国产精品一区av| 精品理论电影在线| 欧美欧美一区二区| 久久精品人人| 97xxxxx| 91美女在线观看| 女尊高h男高潮呻吟| 亚洲午夜视频在线观看| 国产a免费视频| 日韩美女主播在线视频一区二区三区| 一区二区三区黄色片| 自拍偷拍亚洲在线| 美女视频一区| 国产欧美一区二区三区四区| 日本电影一区二区| 亚洲 日韩 国产第一区| 日本人妖一区二区| 一区二区三区 日韩| 国产精品美女久久久久久| 少妇的滋味中文字幕bd| 欧美日韩一区二区在线观看| 亚洲男人天堂网址| 自拍偷拍亚洲精品| 亚瑟国产精品| 5566av亚洲| 亚洲成人中文| 国产一区二区在线视频播放| 99r精品视频| 中国美女乱淫免费看视频| 在线免费观看日韩欧美| 亚洲精品国产欧美在线观看| 最近2019中文字幕一页二页| 午夜精品久久久久久毛片| 5566av亚洲| 国产日韩综合| 久久久国产欧美| 日韩一区欧美小说| 久久久久久久久久久97| 日韩av一区在线观看| 日韩另类视频| 91网站在线免费观看| 亚洲免费高清| 天天操天天爽天天射| 亚洲日本在线a| 国产无遮无挡120秒| 亚洲欧美另类自拍| www.成人在线.com| 国产主播一区二区三区四区| 日韩激情在线观看| 最好看的中文字幕| 欧美日韩在线影院| 91在线视频国产| 久久久久免费视频| 欧美日韩在线网站| 免费看日本黄色| 久久久久久久久99精品| 国产黄色的视频| 亚洲视频在线免费观看| 久久久久亚洲精品中文字幕| 麻豆av福利av久久av| 狠狠色丁香九九婷婷综合五月| 在线观看欧美一区二区| 在线观看中文字幕不卡| 粉嫩av一区二区夜夜嗨| 国产精品毛片a∨一区二区三区|国| 一区二区三区在线观看免费| 日韩小视频在线播放| 亚洲手机成人高清视频| 久久亚洲天堂网| 精品中文字幕在线| 欧美亚洲在线日韩|