日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Struts2-表单验证的两种方式

發布時間:2025/6/15 编程问答 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts2-表单验证的两种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. Struts2中的輸入校驗

2. 編碼方式校驗
? 1) Action一定要繼承自ActionSupport
? 2) 針對某個要進行校驗的請求處理方法編寫一個 public void validateXxx()方法,在方法內部進行表單數據校驗.
? 3) 也可針對所有的請求處理方法編寫public void validate()方法。
? 4) 在校驗方法中,可以通過addFieldError()方法來添加字段校驗錯誤消息。
? 5) 當校驗失敗時,Struts框架會自動跳轉到name為input的Result頁面。在校驗失敗頁面中,可以使用<s:fielderror/>來顯示錯誤消息
? 6) 簡單,靈活。但重用性不高。
??
3. XML配置方式校驗。在編碼方式之前被執行。
? 1) 針對要校驗的Action類,在同包下編寫一個名為:Action類名-validation.xml校驗規則文件。
? 2) 在校驗規則文件中添加校驗規則:具體的校驗器名,參數可參看Struts2的reference或Struts2的API。
???? a) Field校驗:針對Action類中每個非自定義類型的Field進行校驗的規則。
??? <field name="要校驗的Field名">
???? <field-validator type="校驗規則器名" short-circuit="是否要短路徑校驗(默認是false)">
???????? <param name="校驗器要使用的參數名">值</param>
??????????? <message>校驗失敗時的提示消息</message>
??</field-validator>
??<!-- 還可添加其它的校驗規則 -->
?</field>
?
???? b) 非Field校驗:針對Action類的某些Field使用OGNL表達進行組合校驗。
??? <validator type="fieldexpression">
??<param name="fieldName">pwd</param>
??? ?<param name="fieldName">pwd2</param>
??? ?<param name="expression"><![CDATA[pwd==pwd2]]></param><!-- OGNL表達式 -->
??? ?<message>確認密碼和密碼輸入不一致</message>
?</validator>
?
???? c) visitor校驗:主要是用來校驗Action類中的自定義類型Field。(針對使用模型驅動方式時)
?????? i) 在Action類的的校驗規則文件中針對自定義類型Field使用visitor校驗規則。
??? <!-- 針對自定義Field使用visitor校驗 -->
?<field name="user">
??<field-validator type="required" short-circuit="true">
??????????? <message>用戶的信息必填</message><!-- 消息前綴 -->
??</field-validator>
??<field-validator type="visitor"><!-- 指定為visitor校驗規則 -->
???<param name="context">userContext</param><!-- 指定本visitor校驗的上下文名 -->
??????????? <param name="appendPrefix">true</param><!-- 是否要添加校驗失敗消息的前綴 -->
??????????? <message>用戶的</message><!-- 消息前綴 -->
??</field-validator>
?</field>
??? ii) 針對visitor的Field編寫一個校驗規則文件.文件名為: visitor字段類型名[-visitor校驗的上下文名]-validation.xml. 例如: 本例中的文件名為User-userContext-validation.xml
????????????????? 注意: 此文件要存放到visitor字段類型所在的包下.
??? iii) 在visitor的Field校驗規則文件中針對要校驗的Field添加校驗規則.
?? 3) 在校驗失敗頁面(名為input的result頁面)中,可以使用<s:fielderror/>來顯示錯誤消息。
?? 4) 默認情況下,XML的校驗規則對Action中所有的請求處理方法生效.此時應該只針對每個要校驗的請求處理方法指定校驗。有兩種方式:
????? i) 只為Action中的指定方法指定校驗規則文件,配置文件命名為:Action類型名-別名-validation.xml,
????????????????????? 別名是要校驗的方法對應的Action標簽的name屬性值。
????????????????????? 如:UserAction在struts2.xml的配置為:
??? <package name="my" extends="struts-default" namespace="/">
??<action name="user_*" class="com.javacrazyer.web.action.UserAction" method="{1}">
???<result name="success">/info.jsp</result>
???<result name="input">/user_{1}.jsp</result>
??</action>
??? </package>??????????????
??????????????? ● UserAction中有registe方法和login方法,要對registe方法進行校驗,則它的校驗規則文件名為:UserAction-user_registe-validation.xml。
???????????????? ● 如果使用visitor校驗器,必需指定visitor校驗的上下文名。
????? ii) 在校驗攔截器中指定要驗證的方法。不太實用。
?? <action name="user_*" class="com.javacrazyer.web.action.UserAction" method="{1}">
??? <result name="success">/info.jsp</result>
??? <result name="input">/user_{1}.jsp</result>
???? <interceptor-ref name="defaultStack">
??????? <!-- 給校驗攔截器指定不進行校驗的方法列表:用逗號隔開 -->
??????? <param name="validation.excludeMethods">*</param>
??????? <!-- 給校驗攔截器指定要進行校驗的方法列表:用逗號隔開 -->
??????? <param name="validation.includeMethods">regist</param>
????? </interceptor-ref>
?? </action>
?? 5) 同時使用客戶端校驗和服務器端校驗
????? i) 設置<s:form>標簽的validate屬性:
???????? false:默認值。校驗框架只執行服務器端校驗。
???????? true:先執行客戶端校驗,然后再執行服務器端校驗。
???????? form標簽會根據你在服務器端配置的驗證規則生成對應的JavaScript驗證代碼。
????????????????????? 目前支持的內置校驗器:required、requiredstring、stringlength、regex validator、email、url、int、double
????? ii) 不太好用,不建議使用。建議使用jQuery進行頁面表單校驗。
?? 6) 自定義校驗器:
????? i) 繼承自FieldValidatorSupport抽象類。重寫validate(Object obj)方法
????? ii) 注冊校驗器類. 在應用程序的classpath下新建一校驗器注冊文件。名為validators.xml,內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
??????? "-//OpenSymphony Group//XWork Validator Config 1.0//EN"
??????? "
http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">
<validators>
? <validator name="校驗器名" class="校驗器類的全限定名"/>?
</validators>

?

4. Annotation方式校驗: Struts2提供了注解的方式校驗
? 1) @Validation 指明這個類或者接口將使用基于注解的校驗。Struts2.1中已被標識為過時。
? 2) @Validations() 在同一個方法上要使用多個注解校驗時。
? 3) @SkipValidation 指定某個方法不需要校驗。否則所有方法都會使用校驗。也可以在檢驗攔截器中使用validateAnnotatedMethodOnly
? 4) 13個內置校驗器的注解版本:(注:這些注解都只能用在方法級別上) 具體參數參見Struts2的API或Reference。
@RequiredFieldValidator
@RequiredStringValidator
@StringLengthFieldValidator
@IntRangeFieldValidator
@DoubleRangeFieldValidator
@DateRangeFieldValidator
@ExpressionValidator
@FieldExpressionValidator
@RegexFieldValidator
@EmailValidator
@UrlValidator
@VisitorFieldValidator
@ConversionErrorFieldValidator

?


acc_registe.jsp

[html] view plaincopy
  • <span?style="font-size:?medium;"><%@?page?language="java"?import="java.util.*"?pageEncoding="utf-8"%>??
  • <%@?taglib?uri="/struts-tags"?prefix="s"?%>??
  • <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??
  • <html>??
  • ??<head>??
  • ????<title>Struts2中基于XML配置式的校驗器使用示例</title>??
  • ??</head>??
  • ??<body>??
  • <h3>XML配置式校驗器---注冊頁面</h3><hr/>??
  • ??
  • <div?style="color:red"><s:fielderror/></div>??
  • <form?action="acc_registe.action"?method="post">??
  • ????<table>??
  • ????????<tr>??
  • ????????????<td>ID</td>??
  • ????????????<td><input?type="text"?name="id"?value="${param.id}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>登錄名</td>??
  • ????????????<td><input?type="text"?name="name"?value="${param.name}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>密碼</td>??
  • ????????????<td><input?type="password"?name="pwd"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>重復密碼</td>??
  • ????????????<td><input?type="password"?name="pwd2"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>時間</td>??
  • ????????????<td><input?type="text"?name="registed_date"?value="${param.registed_date}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>email</td>??
  • ????????????<td><input?type="text"?name="email"?value="${param.email}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>考試成績</td>??
  • ????????????<td><input?type="text"?name="score"?value="${param.score}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td?colspan="2"><input?type="submit"?value="?提交?"/></td>??
  • ????????</tr>??
  • ????</table>??
  • </form>??
  • ??</body>??
  • </html></span>??
  • ?src/struts.xml

    [html] view plaincopy
  • <span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"??>??
  • <!DOCTYPE?struts?PUBLIC??
  • ????"-//Apache?Software?Foundation//DTD?Struts?Configuration?2.1.7//EN"??
  • ????"http://struts.apache.org/dtds/struts-2.1.7.dtd">??
  • ??
  • <struts>??
  • ????<!--?請求參數的編碼方式?-->??
  • ????<constant?name="struts.i18n.encoding"?value="UTF-8"/>??
  • ????<!--?指定被struts2處理的請求后綴類型。多個用逗號隔開?-->??
  • ????<constant?name="struts.action.extension"?value="action,do,go,xkk"/>??
  • ????<!--?當struts.xml改動后,是否重新加載。默認值為false(生產環境下使用),開發階段最好打開??-->??
  • ????<constant?name="struts.configuration.xml.reload"?value="true"/>??
  • ????<!--?是否使用struts的開發模式。開發模式會有更多的調試信息。默認值為false(生產環境下使用),開發階段最好打開??-->??
  • ????<constant?name="struts.devMode"?value="false"/>??
  • ????<!--?設置瀏覽器是否緩存靜態內容。默認值為true(生產環境下使用),開發階段最好關閉??-->??
  • ????<constant?name="struts.serve.static.browserCache"?value="false"?/>??
  • ????<!--?是否允許在OGNL表達式中調用靜態方法,默認值為false?-->??
  • ????<constant?name="struts.ognl.allowStaticMethodAccess"?value="true"/>??
  • ??????
  • ????<!--?指定由spring負責action對象的創建???
  • ????<constant?name="struts.objectFactory"?value="spring"?/>??
  • ????-->??
  • ????<!--?是否開啟動態方法調用?-->??
  • ????<constant?name="struts.enable.DynamicMethodInvocation"?value="false"/>??
  • ??????
  • ????<package?name="my"?extends="struts-default"?namespace="/">??
  • ????????<action?name="acc_*"?class="com.javacrazyer.web.action.AccountAction"?method="{1}">??
  • ????????????<result?name="success">/info.jsp</result>??
  • ????????????<result?name="input">/acc_{1}.jsp</result>??
  • ????????</action>??
  • ??????????
  • ????</package>??
  • ??????
  • </struts>??
  • </span>??

  • AccountAction.java

    [java] view plaincopy
  • <span?style="font-size:?medium;">package?com.javacrazyer.web.action;??
  • ??
  • import?java.util.Date;??
  • ??
  • import?com.opensymphony.xwork2.ActionSupport;??
  • ??
  • ??
  • public?class?AccountAction?extends?ActionSupport?{??
  • ????private?static?final?long?serialVersionUID?=?-1418893621512812472L;??
  • ????private?Integer?id;??
  • ????private?String?name;??
  • ????private?String?pwd;??
  • ????private?String?pwd2;??
  • ????private?Double?score;??
  • ????private?Date?registed_date;??
  • ????private?String?email;??
  • ??????
  • ????public?String?registe()?throws?Exception{??
  • ????????System.out.println("registe-------------------");??
  • ????????return?SUCCESS;??
  • ????}??
  • ??????
  • ????public?String?login()throws?Exception{??
  • ????????return?SUCCESS;??
  • ????}??
  • ??????
  • ????public?Integer?getId()?{??
  • ????????return?id;??
  • ????}??
  • ????public?void?setId(Integer?id)?{??
  • ????????this.id?=?id;??
  • ????}??
  • ????public?String?getName()?{??
  • ????????return?name;??
  • ????}??
  • ????public?void?setName(String?name)?{??
  • ????????this.name?=?name;??
  • ????}??
  • ????public?Double?getScore()?{??
  • ????????return?score;??
  • ????}??
  • ????public?void?setScore(Double?score)?{??
  • ????????this.score?=?score;??
  • ????}??
  • ????public?Date?getRegisted_date()?{??
  • ????????return?registed_date;??
  • ????}??
  • ????public?void?setRegisted_date(Date?registedDate)?{??
  • ????????registed_date?=?registedDate;??
  • ????}??
  • ????public?String?getEmail()?{??
  • ????????return?email;??
  • ????}??
  • ????public?void?setEmail(String?email)?{??
  • ????????this.email?=?email;??
  • ????}??
  • ??
  • ????public?String?getPwd()?{??
  • ????????return?pwd;??
  • ????}??
  • ??
  • ????public?void?setPwd(String?pwd)?{??
  • ????????this.pwd?=?pwd;??
  • ????}??
  • ??
  • ????public?String?getPwd2()?{??
  • ????????return?pwd2;??
  • ????}??
  • ??
  • ????public?void?setPwd2(String?pwd2)?{??
  • ????????this.pwd2?=?pwd2;??
  • ????}??
  • }</span>??

  • AccountAction-validation.xml [與AccountAction同目錄]

    [html] view plaincopy
  • <span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"?>??
  • <!DOCTYPE?validators?PUBLIC???
  • ????"-//OpenSymphony?Group//XWork?Validator?1.0.2//EN"???
  • ????"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">??
  • <validators>??
  • ????<!--?字段校驗?-->??
  • ????<field?name="id">??
  • ????????<field-validator?type="required"?short-circuit="true">??
  • ????????????<message>ID必填的</message>??
  • ????????</field-validator>??
  • ????????<field-validator?type="int">??
  • ????????????<param?name="min">20</param>??
  • ????????????<param?name="max">50</param>??
  • ????????????<message>ID必須在?${min}?到?${max}?之間</message>??
  • ????????</field-validator>??
  • ????</field>??
  • ????<field?name="name">??
  • ????????<field-validator?type="requiredstring"?short-circuit="true">??
  • ????????????<message>姓名是必填的</message>??
  • ????????</field-validator>??
  • ????????<field-validator?type="regex">??
  • ????????????<param?name="expression"><![CDATA[(^[a-zA-Z_]\w{3,9}$)]]></param>??
  • ????????????<message>姓名不合法</message>??
  • ????????</field-validator>??
  • ????</field>??
  • ????<field?name="pwd">??
  • ????????<field-validator?type="requiredstring"?short-circuit="true">??
  • ????????????<message>密碼是必填的</message>??
  • ????????</field-validator>??
  • ????</field>??
  • ??????
  • ????<!--?非字段校驗?-->??
  • ????<validator?type="fieldexpression">??
  • ????????<param?name="fieldName">pwd</param>??
  • ????????<param?name="fieldName">pwd2</param>??
  • ????????<param?name="expression"><![CDATA[pwd==pwd2]]></param><!--?OGNL表達式?-->??
  • ????????<message>確認密碼和密碼輸入不一致</message>??
  • ????</validator>??
  • ??????
  • ????<field?name="score">??
  • ????????<field-validator?type="double">??
  • ?????????????<param?name="minInclusive">0.0</param>??
  • ???????????????<param?name="maxInclusive">100.0</param>??
  • ???????????????<message>成績必須在${minInclusive}和${maxInclusive}之間</message>??
  • ????????</field-validator>??
  • ????</field>??
  • ????<field?name="email"?>??
  • ????????<field-validator?type="regex">??
  • ?????????????<param?name="expression"><![CDATA[(^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+((\.com)|(\.cn)|(\.net)|(\.org)|(\.info)|(\.edu)|(\.mil)|(\.gov)|(\.biz)|(\.ws)|(\.us)|(\.tv)|(\.cc)|(\.aero)|(\.arpa)|(\.coop)|(\.int)|(\.jobs)|(\.museum)|(\.name)|(\.pro)|(\.travel)|(\.nato)|(\..{2,3})|(\..{2,3}\..{2,3}))$)]]></param>??
  • ?????????????<message>郵箱不合法</message>??
  • ????????</field-validator>??
  • ????</field>??
  • ??????
  • ????<field?name="registed_date">??
  • ????????<field-validator?type="date">??
  • ?????????????<param?name="min">1970-01-01</param>??
  • ?????????????<param?name="max">2019-01-01</param>??
  • ?????????????<message>注冊日期不合法</message>??
  • ????????</field-validator>??
  • ????</field>??
  • </validators></span>??

  • 第二個示例:XML配置式校驗器---登錄和注冊頁面

    user_login.jsp

    [html] view plaincopy
  • <span?style="font-size:?medium;"><%@?page?language="java"?import="java.util.*"?pageEncoding="utf-8"%>??
  • <%@?taglib?uri="/struts-tags"?prefix="s"?%>??
  • <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??
  • <html>??
  • ??<head>??
  • ????<title>Struts2中基于XML配置式的校驗器使用示例</title>??
  • ??</head>??
  • ??<body>??
  • <h3>XML配置式校驗器---登錄頁面</h3><hr/>??
  • <div?style="color:red"><s:fielderror/></div>??
  • <form?action="user_login.action"?method="post">??
  • ????<table>??
  • ????????<tr>??
  • ????????????<td>登錄名</td>??
  • ????????????<td><input?type="text"?name="user.name"?value="${param['user.name']}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>密碼</td>??
  • ????????????<td><input?type="password"?name="user.pwd"/></td>??
  • ????????</tr>??
  • ????????<tr><td?colspan="2"><input?type="submit"?value="?提交?"/></td></tr>??
  • ????</table>??
  • </form>??
  • ??</body>??
  • </html></span>??
  • user_registe.jsp

    [html] view plaincopy
  • <span?style="font-size:?medium;"><%@?page?language="java"?import="java.util.*"?pageEncoding="utf-8"%>??
  • <%@?taglib?uri="/struts-tags"?prefix="s"?%>??
  • <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??
  • <html>??
  • ??<head>??
  • ????<title>Struts2中基于XML配置式的校驗器使用示例</title>??
  • ??</head>??
  • ??<body>??
  • <h3>XML配置式校驗器---注冊頁面</h3><hr/>??
  • ??
  • <div?style="color:red"><s:fielderror/></div>??
  • <form?action="user_registe.action"?method="post">??
  • ????<table>??
  • ????????<tr>??
  • ????????????<td>ID</td>??
  • ????????????<td><input?type="text"?name="user.id"?value="${param['user.id']}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>登錄名</td>??
  • ????????????<td><input?type="text"?name="user.name"?value="${param['user.name']}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>密碼</td>??
  • ????????????<td><input?type="password"?name="user.pwd"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>重復密碼</td>??
  • ????????????<td><input?type="password"?name="user.pwd2"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>時間</td>??
  • ????????????<td><input?type="text"?name="user.registed_date"?value="${param['user.registed_date']}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>email</td>??
  • ????????????<td><input?type="text"?name="user.email"?value="${param['user.email']}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>考試成績</td>??
  • ????????????<td><input?type="text"?name="user.score"?value="${param['user.score']}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td?colspan="2"><input?type="submit"?value="?提交?"/></td>??
  • ????????</tr>??
  • ????</table>??
  • </form>??
  • ??</body>??
  • </html></span>??
  • src/struts.xml [html] view plaincopy
  • <span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"??>??
  • <!DOCTYPE?struts?PUBLIC??
  • ????"-//Apache?Software?Foundation//DTD?Struts?Configuration?2.1.7//EN"??
  • ????"http://struts.apache.org/dtds/struts-2.1.7.dtd">??
  • ??
  • <struts>??
  • ????<!--?請求參數的編碼方式?-->??
  • ????<constant?name="struts.i18n.encoding"?value="UTF-8"/>??
  • ????<!--?指定被struts2處理的請求后綴類型。多個用逗號隔開?-->??
  • ????<constant?name="struts.action.extension"?value="action,do,go,xkk"/>??
  • ????<!--?當struts.xml改動后,是否重新加載。默認值為false(生產環境下使用),開發階段最好打開??-->??
  • ????<constant?name="struts.configuration.xml.reload"?value="true"/>??
  • ????<!--?是否使用struts的開發模式。開發模式會有更多的調試信息。默認值為false(生產環境下使用),開發階段最好打開??-->??
  • ????<constant?name="struts.devMode"?value="false"/>??
  • ????<!--?設置瀏覽器是否緩存靜態內容。默認值為true(生產環境下使用),開發階段最好關閉??-->??
  • ????<constant?name="struts.serve.static.browserCache"?value="false"?/>??
  • ????<!--?是否允許在OGNL表達式中調用靜態方法,默認值為false?-->??
  • ????<constant?name="struts.ognl.allowStaticMethodAccess"?value="true"/>??
  • ??????
  • ????<!--?指定由spring負責action對象的創建???
  • ????<constant?name="struts.objectFactory"?value="spring"?/>??
  • ????-->??
  • ????<!--?是否開啟動態方法調用?-->??
  • ????<constant?name="struts.enable.DynamicMethodInvocation"?value="false"/>??
  • ??????
  • ????<package?name="my"?extends="struts-default"?namespace="/">??
  • ????????<action?name="user_*"?class="com.javacrazyer.web.action.UserAction"?method="{1}">??
  • ????????????<result?name="success">/info.jsp</result>??
  • ????????????<result?name="input">/user_{1}.jsp</result>??
  • ????????</action>??
  • ????</package>??
  • ??????
  • </struts>??
  • </span>??

  • UserAction.java

    [java] view plaincopy
  • <span?style="font-size:?medium;">package?com.javacrazyer.web.action;??
  • ??
  • ??
  • import?com.javacrazyer.domain.User;??
  • import?com.opensymphony.xwork2.ActionSupport;??
  • ??
  • ??
  • public?class?UserAction?extends?ActionSupport?{??
  • ????private?static?final?long?serialVersionUID?=?-2554018432709689579L;??
  • ????private?User?user;?//自定義類型Field??
  • ??????
  • ??????
  • ??????
  • ????public?String?registe()?throws?Exception{??
  • ????????System.out.println("registe======================");??
  • ????????return?SUCCESS;??
  • ????}??
  • ??????
  • ????public?String?login()?throws?Exception{??
  • ????????return?SUCCESS;??
  • ????}??
  • ????/*?
  • ????public?void?validate(){?
  • ????????System.out.println("調用validate方法");?
  • ????}?
  • ?????
  • ????//執行exceute方法前調用?
  • ????public?void?validateRegiste(){?
  • ????????System.out.println("調用validateRegiste方法");?
  • ????????String?lname?=?user.getLoginname();?
  • ?????????if(null?!=?lname?&&?!lname.trim().matches("[a-zA-Z_]\\w{3,19}")){?
  • ????????????????this.addFieldError("loginname",?"用戶名不能為空,且只能由4-20個字母和數字組成");?
  • ????????????????//this.addActionError("用戶名不能為空,且只能由4-20個字母和數字組成");?
  • ????????}?
  • ????}?
  • ?????
  • ????public?void?validateLogin(){?
  • ????????System.out.println("調用validateLogin方法");?
  • ????}?
  • */??
  • ????public?User?getUser()?{??
  • ????????return?user;??
  • ????}??
  • ??
  • ????public?void?setUser(User?user)?{??
  • ????????this.user?=?user;??
  • ????}??
  • ??????
  • }</span>??
  • UserAction-user_login-validation.xml

    [html] view plaincopy
  • <span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"?>??
  • <!DOCTYPE?validators?PUBLIC???
  • ????"-//OpenSymphony?Group//XWork?Validator?1.0.2//EN"???
  • ????"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">??
  • <validators>??
  • ????<!--?針對自定義Field使用visitor校驗?-->??
  • ????<field?name="user">??
  • ????????<field-validator?type="required"?short-circuit="true">??
  • ????????????<message>用戶的信息必填</message><!--?消息前綴?-->??
  • ????????</field-validator>??
  • ????????<field-validator?type="visitor">??
  • ????????????<param?name="context">userLoginContext</param><!--?指定本visitor校驗的上下文?-->??
  • ????????????<param?name="appendPrefix">true</param><!--?是否要添加校驗失敗消息的前綴?-->??
  • ????????????<message>用戶的</message><!--?消息前綴?-->??
  • ????????</field-validator>??
  • ????</field>??
  • </validators></span>??

  • UserAction-user_registe-validation.xml [html] view plaincopy
  • <span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"?>??
  • <!DOCTYPE?validators?PUBLIC???
  • ????"-//OpenSymphony?Group//XWork?Validator?1.0.2//EN"???
  • ????"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">??
  • <validators>??
  • ????<!--?針對自定義Field使用visitor校驗?-->??
  • ????<field?name="user">??
  • ????????<field-validator?type="required"?short-circuit="true">??
  • ????????????<message>用戶的信息必填</message><!--?消息前綴?-->??
  • ????????</field-validator>??
  • ????????<field-validator?type="visitor">??
  • ????????????<param?name="context">userContext</param><!--?指定本visitor校驗的上下文?-->??
  • ????????????<param?name="appendPrefix">true</param><!--?是否要添加校驗失敗消息的前綴?-->??
  • ????????????<message>用戶的</message><!--?消息前綴?-->??
  • ????????</field-validator>??
  • ????</field>??
  • </validators></span>??
  • 第三個示例:注解方式校驗器---注冊頁面
    acc2_registe.jsp
    [html] view plaincopy
  • <span?style="font-size:?medium;"><%@?page?language="java"?import="java.util.*"?pageEncoding="utf-8"%>??
  • <%@?taglib?uri="/struts-tags"?prefix="s"?%>??
  • <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">??
  • <html>??
  • ??<head>??
  • ????<title>Struts2中基于Annotation配置式的校驗器使用示例</title>??
  • ??</head>??
  • ??<body>??
  • <h3>Annotation配置式校驗器---注冊頁面</h3><hr/>??
  • ??
  • <div?style="color:red"><s:fielderror/></div>??
  • <form?action="acc2_registe.action"?method="post">??
  • ????<table>??
  • ????????<tr>??
  • ????????????<td>ID</td>??
  • ????????????<td><input?type="text"?name="id"?value="${param.id}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>登錄名</td>??
  • ????????????<td><input?type="text"?name="name"?value="${param.name}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>密碼</td>??
  • ????????????<td><input?type="password"?name="pwd"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>重復密碼</td>??
  • ????????????<td><input?type="password"?name="pwd2"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>時間</td>??
  • ????????????<td><input?type="text"?name="registed_date"?value="${param.registed_date}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>email</td>??
  • ????????????<td><input?type="text"?name="email"?value="${param.email}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td>考試成績</td>??
  • ????????????<td><input?type="text"?name="score"?value="${param.score}"/></td>??
  • ????????</tr>??
  • ????????<tr>??
  • ????????????<td?colspan="2"><input?type="submit"?value="?提交?"/></td>??
  • ????????</tr>??
  • ????</table>??
  • </form>??
  • ??</body>??
  • </html></span>??

  • src/struts.xml

    [html] view plaincopy
  • <span?style="font-size:?medium;"><?xml?version="1.0"?encoding="UTF-8"??>??
  • <!DOCTYPE?struts?PUBLIC??
  • ????"-//Apache?Software?Foundation//DTD?Struts?Configuration?2.1.7//EN"??
  • ????"http://struts.apache.org/dtds/struts-2.1.7.dtd">??
  • ??
  • <struts>??
  • ????<!--?請求參數的編碼方式?-->??
  • ????<constant?name="struts.i18n.encoding"?value="UTF-8"/>??
  • ????<!--?指定被struts2處理的請求后綴類型。多個用逗號隔開?-->??
  • ????<constant?name="struts.action.extension"?value="action,do,go,xkk"/>??
  • ????<!--?當struts.xml改動后,是否重新加載。默認值為false(生產環境下使用),開發階段最好打開??-->??
  • ????<constant?name="struts.configuration.xml.reload"?value="true"/>??
  • ????<!--?是否使用struts的開發模式。開發模式會有更多的調試信息。默認值為false(生產環境下使用),開發階段最好打開??-->??
  • ????<constant?name="struts.devMode"?value="false"/>??
  • ????<!--?設置瀏覽器是否緩存靜態內容。默認值為true(生產環境下使用),開發階段最好關閉??-->??
  • ????<constant?name="struts.serve.static.browserCache"?value="false"?/>??
  • ????<!--?是否允許在OGNL表達式中調用靜態方法,默認值為false?-->??
  • ????<constant?name="struts.ognl.allowStaticMethodAccess"?value="true"/>??
  • ??????
  • ????<!--?指定由spring負責action對象的創建???
  • ????<constant?name="struts.objectFactory"?value="spring"?/>??
  • ????-->??
  • ????<!--?是否開啟動態方法調用?-->??
  • ????<constant?name="struts.enable.DynamicMethodInvocation"?value="false"/>??
  • ??????
  • ????<package?name="my"?extends="struts-default"?namespace="/">??
  • ????????????<action?name="acc2_*"?class="com.javacrazyer.web.action.Account2Action"?method="{1}">??
  • ????????????<result?name="success">/info.jsp</result>??
  • ????????????<result?name="input">/acc2_{1}.jsp</result>??
  • ????????</action>??
  • ????</package>??
  • ??????
  • </struts>??
  • </span>??

  • Account2Action.java

    [java] view plaincopy
  • <span?style="font-size:?medium;">package?com.javacrazyer.web.action;??
  • ??
  • import?java.util.Date;??
  • ??
  • import?org.apache.struts2.interceptor.validation.SkipValidation;??
  • ??
  • import?com.opensymphony.xwork2.ActionSupport;??
  • import?com.opensymphony.xwork2.validator.annotations.FieldExpressionValidator;??
  • import?com.opensymphony.xwork2.validator.annotations.RegexFieldValidator;??
  • import?com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;??
  • import?com.opensymphony.xwork2.validator.annotations.Validations;??
  • import?com.opensymphony.xwork2.validator.annotations.ValidatorType;??
  • ??
  • /**?
  • ?*?使用注解來配置校驗的示例?
  • ?*?
  • ?*/??
  • public?class?Account2Action?extends?ActionSupport?{??
  • ????private?static?final?long?serialVersionUID?=?-1418893621512812472L;??
  • ????private?Integer?id;??
  • ????private?String?name;??
  • ????private?String?pwd;??
  • ????private?String?pwd2;??
  • ????private?Double?score;??
  • ????private?Date?registed_date;??
  • ????private?String?email;??
  • ??????
  • ??????
  • ????@Validations(??
  • ????????????requiredStrings={@RequiredStringValidator(fieldName="name",message="我的用戶名是必須的",shortCircuit=true,trim=true,type=ValidatorType.FIELD),??
  • ????????????????????@RequiredStringValidator(fieldName="pwd",message="我的密碼是必須的",shortCircuit=true,trim=true,type=ValidatorType.FIELD)},??
  • ????????????fieldExpressions={@FieldExpressionValidator(fieldName="pwd",?message="兩次密碼不相同",expression="pwd==pwd2")},??
  • ????????????regexFields={@RegexFieldValidator(expression="^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+((\\.com)|(\\.cn)|(\\.net)|(\\.org)|(\\.info)|(\\.edu)|(\\.mil)|(\\.gov)|(\\.biz)|(\\.ws)|(\\.us)|(\\.tv)|(\\.cc)|(\\.aero)|(\\.arpa)|(\\.coop)|(\\.int)|(\\.jobs)|(\\.museum)|(\\.name)|(\\.pro)|(\\.travel)|(\\.nato)|(\\..{2,3})|(\\..{2,3}\\..{2,3}))$")}??
  • ????)??
  • ????public?String?registe()?throws?Exception{??
  • ????????System.out.println("registe-------------------");??
  • ????????return?SUCCESS;??
  • ????}??
  • ??????
  • ????@SkipValidation??
  • ????public?String?login()throws?Exception{??
  • ????????return?SUCCESS;??
  • ????}??
  • ??????
  • ????public?Integer?getId()?{??
  • ????????return?id;??
  • ????}??
  • ????public?void?setId(Integer?id)?{??
  • ????????this.id?=?id;??
  • ????}??
  • ????public?String?getName()?{??
  • ????????return?name;??
  • ????}??
  • ????public?void?setName(String?name)?{??
  • ????????this.name?=?name;??
  • ????}??
  • ????public?Double?getScore()?{??
  • ????????return?score;??
  • ????}??
  • ????public?void?setScore(Double?score)?{??
  • ????????this.score?=?score;??
  • ????}??
  • ????public?Date?getRegisted_date()?{??
  • ????????return?registed_date;??
  • ????}??
  • ????public?void?setRegisted_date(Date?registedDate)?{??
  • ????????registed_date?=?registedDate;??
  • ????}??
  • ????public?String?getEmail()?{??
  • ????????return?email;??
  • ????}??
  • ????public?void?setEmail(String?email)?{??
  • ????????this.email?=?email;??
  • ????}??
  • ??
  • ????public?String?getPwd()?{??
  • ????????return?pwd;??
  • ????}??
  • ??
  • ????public?void?setPwd(String?pwd)?{??
  • ????????this.pwd?=?pwd;??
  • ????}??
  • ??
  • ????public?String?getPwd2()?{??
  • ????????return?pwd2;??
  • ????}??
  • ??
  • ????public?void?setPwd2(String?pwd2)?{??
  • ????????this.pwd2?=?pwd2;??
  • ????}??
  • }</span>?
  • 總結

    以上是生活随笔為你收集整理的Struts2-表单验证的两种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    亚洲成人av电影在线 | 亚洲黄色免费网站 | 免费精品久久久 | 天堂av观看 | 欧美另类成人 | 日韩电影中文字幕在线观看 | 狠狠色丁香久久婷婷综合丁香 | 亚洲色图色 | 国产一区二区精品在线 | 亚洲午夜大片 | 少妇bbw搡bbbb搡bbb | 久二影院 | 精品亚洲免费 | 日日夜av| 国产精品三级视频 | 最新av网址在线观看 | 成人在线你懂得 | 91精品一区二区在线观看 | 久久激情影院 | 亚洲精品看片 | 中文乱码视频在线观看 | 国产精品成人在线 | 久草视频免费 | 日日爱网址 | 久久毛片高清国产 | 欧美性生交大片免网 | 婷婷精品国产一区二区三区日韩 | www.久久视频 | 中文av网站 | 欧美激情精品久久久 | 最新av观看 | 日日干天夜夜 | 中文字幕精品一区二区三区电影 | 久久99久久精品国产 | 鲁一鲁影院 | 丰满少妇在线观看网站 | 黄色大片免费网站 | 黄色大片日本免费大片 | 国产成人免费网站 | 日本精品一区二区三区在线播放视频 | 久香蕉 | 婷婷婷国产在线视频 | 狠狠色丁香久久婷婷综 | 亚洲a网| 国产精品久久一区二区无卡 | 免费在线观看黄网站 | 天天干夜夜干 | av在线进入| 九九视频网站 | 久久久999免费视频 日韩网站在线 | 国产精品一区二区吃奶在线观看 | 国产一区二区三精品久久久无广告 | 日韩av手机在线观看 | 日韩av影视在线观看 | 日韩视频三区 | 精品美女久久久久久免费 | 国产午夜免费视频 | 欧美在线视频免费 | 国产视频一二三 | 国产精品一区二区美女视频免费看 | 久久精品最新 | 国产在线第三页 | 九九交易行官网 | 国产三级精品在线 | 亚洲我射av| 成人黄色大片 | 成人动图| 99精品免费网 | 久久公开免费视频 | 狠狠狠色丁香婷婷综合久久五月 | 欧美性免费 | 日韩综合一区二区 | 欧美高清视频不卡网 | 国产精品亚洲a | .国产精品成人自产拍在线观看6 | 亚洲综合视频在线观看 | 久久天堂精品视频 | 91色视频 | 国产精品久久久久久久av电影 | 国产精品久久久久久久久大全 | 久久国产电影 | 天天综合网国产 | 精品久久精品久久 | 色综合天天天天做夜夜夜夜做 | 久久综合导航 | 国产一区在线免费观看视频 | 久久黄色影院 | 免费黄色av电影 | 国产精品自在欧美一区 | 麻豆视频在线观看免费 | 欧美久久久影院 | 特及黄色片 | 奇米先锋 | 免费国产一区二区 | 日韩av免费一区 | 丰满少妇一级片 | 三上悠亚在线免费 | 亚洲国产免费看 | 天天干夜夜擦 | 午夜精品一区二区三区可下载 | 国产精品久久久久久久久久久久久 | 天天综合91| 国产成人福利在线观看 | wwwav视频| 久久综合亚洲鲁鲁五月久久 | 看国产黄色片 | 国产麻豆视频网站 | a天堂在线看 | 天天干天天操天天入 | 成人免费一级片 | 成人一区二区三区在线 | 91tv国产成人福利 | 国产高清专区 | 成人91av| 香蕉一区 | 韩国一区二区三区视频 | 一本大道久久精品懂色aⅴ 五月婷社区 | 欧美在线1| 天天草天天干天天射 | 国产精品日韩在线 | 日韩精品在线看 | 亚洲国产精品500在线观看 | 黄色av成人在线 | av一区在线播放 | 国产一区二区在线观看免费 | 韩国一区二区av | 成年人视频在线免费 | 91免费版成人 | 国产婷婷视频在线 | 日日干美女 | 国产日韩精品一区二区在线观看播放 | 麻豆影视在线观看 | 久久久精品 一区二区三区 国产99视频在线观看 | 五月天综合网 | 国产一区二区在线视频观看 | 国产精品女同一区二区三区久久夜 | 日韩电影中文 | 免费av网站在线看 | 免费91在线| 久草在线免费资源 | 中文字幕在线不卡国产视频 | 免费午夜网站 | 亚洲va欧洲va国产va不卡 | 色在线中文字幕 | 伊人色**天天综合婷婷 | 中文字幕av电影下载 | 亚洲视频第一页 | 精品久久网站 | 久久a v电影 | 天天爽天天搞 | 日韩av一区二区三区在线观看 | 日韩伦理片一区二区三区 | 在线观看视频国产一区 | 婷婷丁香av | 国产91精品高清一区二区三区 | av大片网站 | 免费精品在线视频 | 激情综合狠狠 | 亚洲最大av网站 | 中文字幕免| 国产精品嫩草影院123 | 日日天天干 | 精品国产一二三四区 | 国产大尺度视频 | 美女av在线免费 | 久久激情日本aⅴ | 国产精品毛片一区二区在线看 | 欧美极品少妇xbxb性爽爽视频 | 91视频在线国产 | 色婷婷成人网 | 免费高清在线观看成人 | 激情久久久久久久久久久久久久久久 | 激情久久婷婷 | 欧美精品免费一区二区 | 视频一区二区精品 | 国产精品一区二区三区久久久 | 在线看日韩 | 美女黄濒 | 日韩欧美在线视频一区二区三区 | 香蕉视频久久 | 韩国精品视频在线观看 | 国产高清成人 | 国产91成人在在线播放 | 深夜免费福利 | 麻豆国产视频 | 日本中文字幕在线观看 | 久久er99热精品一区二区三区 | 亚洲精品影视 | 欧美aaa一级 | 蜜桃传媒一区二区 | 99免费在线播放99久久免费 | 色婷婷激情电影 | 成年人视频在线观看免费 | 亚洲国产精品va在线看 | 一区二区中文字幕在线播放 | 精品一区免费 | 婷婷99| 国产一区免费在线观看 | 久久国产午夜精品理论片最新版本 | 久久久久亚洲天堂 | 亚洲网久久 | 国产一级在线 | 国内精品美女在线观看 | 国产精品免费看久久久8精臀av | 香蕉网在线观看 | 日韩中文字幕在线 | 奇米777777 | 成人免费在线播放视频 | 免费色视频在线 | 欧美日韩首页 | 久久久久久久久免费 | 99久久综合国产精品二区 | 99久久精品电影 | 97色国产| 综合国产在线观看 | 成人免费视频观看 | 色视频成人在线观看免 | 在线播放 日韩专区 | 91视频免费网址 | 国产日韩欧美在线观看视频 | 久草在线视频在线观看 | 天天射天天干天天爽 | www.久久婷婷 | a黄色| 精品国产99国产精品 | 亚洲精品中文字幕视频 | 久草在线在线视频 | 久久久96| 免费观看丰满少妇做爰 | 日日夜夜人人天天 | 在线国产视频观看 | 激情婷婷在线观看 | 日韩大陆欧美高清视频区 | 午夜的福利 | 国产精品1区2区 | 国产精品正在播放 | 婷婷久月| 黄色小说在线免费观看 | 97成人在线观看 | 久久观看免费视频 | 天天干天天玩天天操 | 日韩极品在线 | av中文字幕在线电影 | 国内少妇自拍视频一区 | 天天色天天操天天爽 | 探花视频免费观看 | www.com操| 91精品国产高清自在线观看 | 免费在线观看av不卡 | 久久伊人色综合 | 国产短视频在线播放 | 亚洲成a人片77777kkkk1在线观看 | 久久久久久久亚洲精品 | 国产资源在线视频 | 精品视频在线视频 | 777xxx欧美 | 青青草国产免费 | 日韩在线一区二区免费 | 久久久久久97三级 | 7777精品伊人久久久大香线蕉 | 久久久久免费电影 | 狠狠狠狠狠狠狠狠 | 2021国产在线 | 97香蕉超级碰碰久久免费软件 | 91成人免费观看视频 | 亚洲aⅴ在线 | 日韩欧美一区二区三区视频 | 2022国产精品视频 | 欧美一级电影 | 成年人三级网站 | 亚洲九九九在线观看 | 97在线视频免费看 | 色综合中文综合网 | 亚洲精品国产精品国自产观看浪潮 | 国产在线视频一区二区三区 | av中文字幕在线电影 | 99精品国产aⅴ | 日韩av在线影视 | 在线免费亚洲 | 在线观看视频你懂得 | av黄色大片| 亚洲色五月 | av成人免费在线观看 | 亚洲欧美国产日韩在线观看 | 91成人在线观看高潮 | 99视频精品视频高清免费 | 免费在线观看污网站 | 色婷婷精品大在线视频 | 婷婷国产v亚洲v欧美久久 | 在线观看涩涩 | 日韩 国产 | 亚洲免费av一区二区 | 97在线观看免费高清完整版在线观看 | 中文字幕精品一区久久久久 | 日韩电影一区二区三区在线观看 | 中文字幕一区在线 | 日韩大片在线免费观看 | 一二区电影 | 91久久丝袜国产露脸动漫 | 国产麻豆成人传媒免费观看 | 亚洲国产精品久久 | 日韩国产精品一区 | 日韩视频在线播放 | 亚洲作爱视频 | 狠狠狠干狠狠 | 天天操夜夜想 | 中文字幕丰满人伦在线 | 在线不卡的av | av日韩在线网站 | 国产一区在线不卡 | 福利视频一二区 | 国产日韩精品一区二区在线观看播放 | 欧美日韩精品综合 | 婷婷久久精品 | 国产黄网站在线观看 | 欧美一级性生活视频 | 欧美一区二区三区在线看 | 欧美一级视频在线观看 | 日日操天天射 | 国产视频日韩 | 亚洲免费在线看 | 久久久影片 | 在线观看久草 | 日本美女xx| 欧美极度另类性三渗透 | 亚洲精品乱码久久 | 国产一级片在线播放 | 99久久这里只有精品 | 国产精品久久久久久久免费观看 | 午夜电影久久久 | 免费看一级黄色 | 国产精品mv | 在线观看视频国产一区 | 中文字幕文字幕一区二区 | 丁香婷婷射 | 97av色| 日韩精品一区二区三区第95 | 国产精品久久人 | 亚洲午夜小视频 | 中文字幕日韩在线播放 | 久久久久美女 | 久久精品麻豆 | 91在线观看高清 | 成年人免费观看在线视频 | 国产精品国产三级国产aⅴ无密码 | 亚洲久草视频 | 中文字幕 国产 一区 | 五月婷婷伊人网 | 国产精品视屏 | 国内精品久久久久久久久 | 4p变态网欧美系列 | 天天躁日日躁狠狠躁av中文 | 在线成人观看 | 久久视精品| 在线看国产日韩 | 国产精品毛片一区二区 | 国产精品国产自产拍高清av | 国产精品美女久久久久久久 | 九九九毛片 | 亚洲人成人在线 | 免费合欢视频成人app | 国产男男gay做爰 | 久久在线精品视频 | 91手机视频 | 国产又粗又硬又爽视频 | 国产大片黄色 | 亚洲伊人色| 国产xxxx做受性欧美88 | 日韩特级片 | 久久黄色美女 | 99视频国产精品免费观看 | 在线成人高清电影 | 欧美成人精品xxx | 四虎www| 操操色 | 一级成人免费 | 日韩av在线高清 | 国产精品福利av | 亚州国产视频 | 久久超级碰 | 亚洲精品乱码久久 | 96av麻豆蜜桃一区二区 | 久艹视频免费观看 | 久久特级毛片 | 亚洲aⅴ免费在线观看 | 久久视频网 | 久久99久久99精品中文字幕 | 久草精品视频在线观看 | 成人国产精品久久久春色 | 狠狠干狠狠艹 | 操操操com | 日日操天天操夜夜操 | av一级片在线观看 | 美女视频黄在线观看 | 欧美色综合久久 | 色综合天天色综合 | 亚洲人在线 | 在线看的av网站 | 成年人免费观看在线视频 | 亚洲一区不卡视频 | 日韩精品久久中文字幕 | 在线观看免费91 | 婷婷六月天丁香 | 天天草天天插 | 欧美做受69 | 日韩电影在线观看一区二区 | 521色香蕉网站在线观看 | 国产精品美女999 | 九九免费精品视频 | 黄色网址av | 一区久久久 | 亚洲国产综合在线 | 日本久热| 亚洲精品一区二区网址 | 国产高清成人在线 | 99久久er热在这里只有精品66 | 国产这里只有精品 | 亚洲精品国产精品国自产观看浪潮 | 国产免费xvideos视频入口 | 麻豆一精品传二传媒短视频 | 日韩美女高潮 | 综合网天天色 | 青青草视频精品 | 亚洲国产成人精品在线 | 国产精品久久久久一区 | a久久久久久 | 精品一区二区在线免费观看 | 五月天婷亚洲天综合网精品偷 | 三级免费黄 | 欧美最新大片在线看 | 国产精品欧美久久久久久 | 日韩视频中文字幕在线观看 | 日韩中文字幕第一页 | 亚洲欧洲久久久 | 成人黄色视| 成人毛片网 | 国产高清在线a视频大全 | 中文字幕 国产视频 | 成 人 黄 色 视频 免费观看 | 最近中文字幕免费av | 色激情在线 | 欧美天堂视频在线 | 国产精品自产拍在线观看蜜 | 中文字幕日韩有码 | 日韩手机在线 | 免费大片黄在线 | 久草在线视频资源 | 日韩精品视频在线观看网址 | 日韩精品亚洲专区在线观看 | 国产中文欧美日韩在线 | 亚洲五月激情 | 黄网站色成年免费观看 | 日韩久久一区二区 | 欧美精品你懂的 | 97精品国产97久久久久久 | 色老板在线视频 | 99热999| 日日夜夜天天久久 | 久久久在线观看 | 六月天综合网 | www.久久com| 日本精品免费看 | 91完整版观看 | av黄色免费网站 | 狠狠搞,com| 麻豆综合网| 久久官网 | 久久观看 | 亚洲美女久久 | 曰本免费av| 视频一区二区在线观看 | 91av在线不卡| 日韩视频在线播放 | 国产网红在线观看 | 亚州精品天堂中文字幕 | 91精品在线观看视频 | 天天干夜夜干 | 日韩在线观看第一页 | 亚洲精品五月 | 麻豆mv在线观看 | 中文免费观看 | 九九热精 | 国产精品久久麻豆 | 国产欧美日韩精品一区二区免费 | 久久黄视频 | 黄在线免费观看 | 欧美黄色高清 | 最近中文字幕免费观看 | 狠狠操狠狠干天天操 | 免费看av在线 | 视频在线观看国产 | 日韩久久久 | 色国产精品一区在线观看 | 欧美日韩免费一区 | 99久久激情视频 | 日韩欧美在线影院 | 亚洲欧美一区二区三区孕妇写真 | 中文字幕刺激在线 | av韩国在线 | www久草| 波多野结衣最新 | 91丨九色丨丝袜 | 91av播放 | 精品不卡av| 成人一区二区在线观看 | 久久免费毛片视频 | 一区二区三区电影在线播 | 亚洲精品一区二区三区四区高清 | 国产在线日本 | 久久精品国产精品亚洲精品 | 中文字幕一区二区三区四区久久 | 亚洲女人天堂成人av在线 | 欧美网站黄色 | 国产精品一区二区久久久 | 片网站| 国产欧美精品在线观看 | 精品999在线 | 日三级在线| 日韩18p| 色婷婷啪啪免费在线电影观看 | 又黄又刺激又爽的视频 | 国产香蕉视频 | 91亚洲精品久久久中文字幕 | 中文字幕在线观看2018 | 久久国产日韩 | 波多野结衣在线视频免费观看 | 91成人网在线播放 | 在线看片一区 | 久久男人免费视频 | 特级西西www44高清大胆图片 | 超碰在线公开免费 | 九九热免费在线视频 | 国产美女视频网站 | 中文字幕在线中文 | 国产资源在线视频 | 国产精品一区二区在线播放 | 视频在线精品 | 欧美一级片免费在线观看 | av电影在线免费 | 夜又临在线观看 | 中文字幕在线一二 | 国产成人精品午夜在线播放 | 色综合天天干 | 久久久这里有精品 | 久久中文字幕在线视频 | 日韩亚洲欧美中文字幕 | 国产亚洲精品久久久久久移动网络 | 欧美大片在线看免费观看 | 国产精品自产拍在线观看桃花 | 欧美日本一二三 | 精品国产电影一区二区 | 国产99久久久欧美黑人 | 亚洲精品欧美精品 | 色av色av色av| 日日操天天操狠狠操 | 一本一道久久a久久精品蜜桃 | 久久精品久久精品久久精品 | 视频在线播放国产 | 国内精品久久久久国产 | 正在播放国产精品 | 四虎小视频| 欧美精品免费在线观看 | 亚洲精品在线看 | 色婷婷影视 | 国产美女主播精品一区二区三区 | www麻豆视频 | 欧美俄罗斯性视频 | 中文字幕在线看视频 | 久久精品99国产精品酒店日本 | 国产一级做a爱片久久毛片a | 丁香六月婷婷开心婷婷网 | 欧美日韩亚洲一 | 黄网站免费大全入口 | 999视频在线播放 | 国产精品久久久久久久久久99 | 久久久久久久久久久久国产精品 | 九九久| 99麻豆久久久国产精品免费 | 美女黄色网在线播放 | 日韩视频中文字幕 | 国产免费片| 久久精品综合一区 | 人人艹视频 | 国产看片网站 | 久久一区91| 成人久久18免费网站麻豆 | 草久视频在线观看 | 中文字幕视频 | 欧美一区二区三区四区夜夜大片 | 天天操天天拍 | 亚洲欧美在线综合 | 激情久久综合 | 天天拍天天草 | 97色综合| 国产精品一区二区免费在线观看 | 激情丁香综合 | 欧美一级免费黄色片 | 欧美a级片网站 | 精品国产伦一区二区三区观看方式 | 日本精品一区二区 | 超碰成人免费电影 | 人人射网站 | 粉嫩av一区二区三区四区五区 | 狠狠狠色狠狠色综合 | 免费av网址在线观看 | 久久精品一区二区 | 在线免费观看黄色小说 | 免费h漫在线观看 | 色视频在线观看免费 | 最新日韩中文字幕 | 久久久久久国产一区二区三区 | 久久这里只有精品视频首页 | 国内小视频在线观看 | 99久久久久久国产精品 | 黄色视屏免费在线观看 | 久久视频国产精品免费视频在线 | 在线亚洲高清视频 | 日日夜夜天天射 | 亚洲乱亚洲乱亚洲 | 久久婷婷一区二区三区 | 成人网页在线免费观看 | 久久激情精品 | 成人免费看黄 | www.夜夜干.com | 久久久久久久久久久久亚洲 | 欧美日韩在线网站 | 成年人在线观看视频免费 | 五月激情视频 | 日韩在线国产精品 | 日本韩国精品一区二区在线观看 | 在线中文视频 | 日韩欧美精品一区 | 99精品国产免费久久久久久下载 | 香蕉久草 | 日本在线中文在线 | 超碰资源在线 | 特级黄色视频毛片 | 色婷婷综合视频在线观看 | 国产免费又爽又刺激在线观看 | 国产黄色一级片在线 | av大片免费在线观看 | 97精品国产97久久久久久免费 | 国产在线一线 | 日韩av看片 | 国产精品久久久网站 | 久久精品视频2 | 草久久影院 | 久久精品一区二区三区四区 | 日本久久久久久久久 | 亚洲欧美va | www.久草视频 | 91视频在线免费下载 | 日日草夜夜操 | 亚洲成人av在线播放 | 久久大视频 | 亚洲综合欧美日韩狠狠色 | 88av视频 | 97综合在线 | 欧美日韩有码 | 亚洲精品麻豆 | 欧美性生爱 | 国产特级毛片aaaaaaa高清 | 成年人视频免费在线 | 久久成人综合 | 夜夜爱av| 在线小视频国产 | 麻豆视频国产精品 | 天天干夜夜爽 | 成人h视频在线播放 | www99久久 | 国内精品久久久久影院优 | 欧美日韩中文字幕视频 | 国产一区二区免费在线观看 | 久久艹国产 | 久久99国产精品免费 | 成人av高清在线观看 | 日韩精品一区二区免费视频 | 亚洲三区在线 | av线上免费观看 | 在线电影av | 欧亚日韩精品一区二区在线 | 高潮毛片无遮挡高清免费 | 97在线观看免费 | 麻豆精品传媒视频 | 91精品国产91热久久久做人人 | 久久久免费高清视频 | 欧美视频一区二 | 国产精品专区在线 | 久久免费美女视频 | 91精品国自产在线观看 | 国产又粗又猛又黄视频 | 亚洲干视频在线观看 | 四虎免费av | 国产精品一区专区欧美日韩 | 在线观看免费黄色 | www.天堂av| 国产成人福利在线观看 | av在线免费网站 | 91精品在线播放 | 久久免费视频3 | 天天射天天添 | 97中文字幕 | 久久高清 | 啪嗒啪嗒免费观看完整版 | 91成人免费视频 | 国产精品99视频 | 国产黄色精品视频 | 日本丰满少妇免费一区 | 久久视频在线观看 | 久久夜夜操 | 天堂在线一区二区三区 | 综合国产视频 | 中文亚洲欧美日韩 | 黄色av电影在线 | 亚洲永久精品在线 | 亚洲精品五月 | 免费男女羞羞的视频网站中文字幕 | 国产视频色 | 国产日韩在线视频 | 在线观看av免费 | 色丁香久久 | 少妇视频在线播放 | 又爽又黄又刺激的视频 | 美女露久久 | 网站在线观看日韩 | 精品国产一区二区三区久久久 | 欧美激情视频一区 | 亚洲自拍偷拍色图 | 人人澡人| 国产亚州精品视频 | 亚洲精品黄网站 | 综合久久久久久 | 免费一级片在线 | 国产精品成人一区二区三区吃奶 | 国产九九在线 | 精品91 | 一本一本久久a久久 | 国产涩涩网站 | 午夜精品久久久久久中宇69 | 成年人免费av网站 | 91成人观看| 久久久人人爽 | 久久久国产精品麻豆 | 国产精品日韩在线 | 国产在线观看污片 | av资源免费在线观看 | 欧美日韩视频在线观看免费 | 国产高清视频在线播放 | 四虎欧美| 成人午夜剧场在线观看 | 国产精品视频全国免费观看 | 欧美 亚洲 另类 激情 另类 | 久久精品一区二区 | 欧美在线观看视频 | 人人爽人人av | 亚洲天天在线 | 日韩三级视频在线观看 | 欧美一级视频一区 | 波多野结衣在线视频免费观看 | 久久久久欧美精品 | 国产精品成人av久久 | www日韩在线 | 婷婷色综合色 | 天天操夜夜叫 | 色婷婷综合久久久久中文字幕1 | 日韩在线观看中文字幕 | 懂色av一区二区在线播放 | 伊甸园av在线 | 久久视频精品在线 | 国产你懂的在线 | 国产精品福利午夜在线观看 | 欧美在线不卡一区 | 国产精华国产精品 | 波多野结衣电影一区 | 成人免费视频网 | 久久成人午夜视频 | 毛片基地黄久久久久久天堂 | 99视频在线精品免费观看2 | 香蕉91视频 | 国产99精品在线观看 | 综合在线色 | 国产 日韩 欧美 在线 | 免费午夜视频在线观看 | 久久国产精品小视频 | 国产成人精品女人久久久 | 欧美一级免费片 | 欧美国产日韩一区二区三区 | 波多野结衣在线观看一区 | 国产精品wwwwww | 国产美女精品 | 亚洲 欧美 成人 | 亚洲欧美偷拍另类 | 在线观看黄色免费视频 | 中文一区二区三区在线观看 | 精品国产精品一区二区夜夜嗨 | 精品一二区 | 91免费网站在线观看 | 亚洲一二视频 | 91在线观看视频 | 国产黄色成人av | 伊人婷婷在线 | 国产福利精品一区二区 | 亚洲黄a| 中文字幕乱码电影 | 久久婷婷综合激情 | 嫩模bbw搡bbbb搡bbbb | 亚洲欧美日韩一级 | 蜜臀91丨九色丨蝌蚪老版 | 99免费在线观看视频 | 日本中文字幕观看 | 国产免费区 | 国产视频每日更新 | 国产一区二区三区久久久 | www.com黄| 97狠狠干 | 欧美日韩国产一区二区在线观看 | www.天天干.com| 久久免费视频在线观看 | 亚洲精品国精品久久99热一 | 日本特黄特色aaa大片免费 | 亚洲精品在线看 | 成人h动漫在线看 | 黄污网站在线观看 | 国产精品一区在线播放 | 麻豆极品 | 免费中午字幕无吗 | 99久久精品久久亚洲精品 | 天天操夜夜操 | 91精品国产欧美一区二区 | 五月激情婷婷丁香 | 天天射天天色天天干 | 日韩中文字幕亚洲一区二区va在线 | 一级欧美一级日韩 | 欧美久久久久久久久久 | 国产一区不卡在线 | 2019中文在线观看 | 深夜激情影院 | 不卡精品视频 | 五月天com | 麻豆视频入口 | 懂色av懂色av粉嫩av分享吧 | 婷婷丁香视频 | 亚洲一级黄色av | 精品无人国产偷自产在线 | 2023天天干 | 欧美日韩裸体免费视频 | 国产高潮久久 | 国产精品福利午夜在线观看 | 一区在线播放 | 国产成人三级在线观看 | 欧美日韩另类视频 | 美女视频又黄又免费 | 91精品国产99久久久久久红楼 | 欧美一区二区在线刺激视频 | 欧美日本不卡视频 | 91免费视频网站在线观看 | 激情小说久久 | 亚洲激情 欧美激情 | 日韩欧美99 | 成人在线免费小视频 | 深爱综合网 | 国产日本高清 | 99色免费视频 | 国产精品毛片久久久久久久久久99999999 | 国产一级免费播放 | 欧美色婷 | 久久国产网站 | 在线观看精品一区 | 欧美日韩二三区 | 国内精品久久久久影院男同志 | 999视频网站| 欧美aa级| 日韩大片在线 | 黄色大片免费播放 | 操夜夜操 | 精品久久久久一区二区国产 | 天天想夜夜操 | 久久精品国产免费看久久精品 | 欧美成年人在线观看 | 六月丁香在线视频 | 四虎小视频 | 日日夜夜精品免费观看 | 欧美做受高潮1 | 欧美精品一区二区在线播放 | 亚洲第一av在线 | 国产一区二区三精品久久久无广告 | 天天舔天天射天天操 | a在线v| www国产精品com | 99色在线 | 麻豆视频在线 | 在线有码中文字幕 | 欧美少妇xxx| 91在线视频免费播放 | 国产99免费视频 | 狠狠狠色狠狠色综合 | 国产中文在线观看 | 久草在线在线视频 | 香蕉在线视频播放网站 | 99视频免费 | 欧美成人区 | 亚洲精品国产品国语在线 | 久久人网 | 国产婷婷一区二区 | 9久久精品| 91丨九色丨91啦蝌蚪老版 | 久久免费视频4 | 在线www色| 91在线视频在线观看 | 欧美经典久久 | 国产高清免费视频 | 在线看成人av | 中文字幕在线观看国产 | 国产精品mm | 丁香六月中文字幕 | 国产精品久久电影网 | 国产91全国探花系列在线播放 | 日韩精品一区二区三区高清免费 | 免费黄色在线网址 | 69xxxx欧美 | 在线观看播放av | 成人a视频片观看免费 | 亚洲国产精品久久久久婷婷884 | 久草在线免费资源 | 91视频-88av | 成人免费在线网 | www.久久com| 久久久久福利视频 | 四虎永久免费网站 | av女优中文字幕在线观看 | 国产精品久久久久亚洲影视 | 久久久久久久久久伊人 | 久久最新 | 国产在线播放观看 | 国产日韩欧美中文 | 伊人狠狠色 | 日韩电影中文字幕在线 | 在线看毛片网站 | 日韩欧美一区二区三区在线 | 亚洲日本va中文字幕 | 久久精品99久久久久久2456 | 四虎伊人| 天天干天天干天天操 | 国产视频午夜 | 亚洲一区二区视频 | 国产午夜av | 午夜电影一区 | 久久成人18免费网站 | 97综合视频 | 国产精品一区二区久久久久 | 欧美日韩免费视频 | 又污又黄网站 | 狠狠色狠狠色综合日日92 | 国产精品白浆 | 亚洲精品乱码白浆高清久久久久久 | 精品999国产 | 精品麻豆| 久久天天躁夜夜躁狠狠85麻豆 | 九九免费观看全部免费视频 | 国产久视频| 嫩草av影院 | 久草视频手机在线 | zzijzzij亚洲成熟少妇 | 亚洲黄色片在线 | 91久久精品一区二区二区 | 中文亚洲欧美日韩 | 国产精品久久av | 一区二区三区四区在线 | 一区二区精品国产 | 二区三区在线视频 | 日韩av综合网站 | 日韩毛片在线一区二区毛片 | 久久精品国产亚洲精品2020 | 精品国产区| 久久精品国产一区二区三 | 又色又爽的网站 | 亚洲黄色在线观看 | 亚洲影音先锋 | 最新99热| 最近免费中文字幕大全高清10 | 日日夜日日干 | 免费av在 | 精品国产成人在线影院 | 久久免费99 | 久久久免费毛片 | 免费看黄在线观看 | 中文字幕av最新 | 精品中文字幕在线播放 | 一色屋精品视频在线观看 | 911精品视频 | 韩国在线视频一区 | 中文字幕丝袜一区二区 | 国产日产高清dvd碟片 | 视频国产精品 | 日本黄色免费大片 | 黄色网www | 国产精品无 | 天堂va在线观看 |