收藏 分销(赏)

Struts2温习(8)表单验证的两种方式.doc

上传人:仙人****88 文档编号:12004563 上传时间:2025-08-26 格式:DOC 页数:55 大小:350.50KB 下载积分:10 金币
下载 相关 举报
Struts2温习(8)表单验证的两种方式.doc_第1页
第1页 / 共55页
Struts2温习(8)表单验证的两种方式.doc_第2页
第2页 / 共55页


点击查看更多>>
资源描述
Struts2温习(8)--表单验证的两种方式 XMLSpringJSP浏览器 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"         " <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           第一个示例:XML配置式校验器---注册页面 acc_registe.jsp Html代码   1. <span style="font-size: medium;"><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   2. <%@ taglib uri="/struts-tags" prefix="s" %>   3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   4. <html>   5.   <head>   6.     <title>Struts2中基于XML配置式的校验器使用示例</title>   7.   </head>   8.   <body>   9. <h3>XML配置式校验器---注册页面</h3><hr/>   10.    11. <div style="color:red"><s:fielderror/></div>   12. <form action="acc_registe.action" method="post">   13.     <table>   14.         <tr>   15.             <td>ID</td>   16.             <td><input type="text" name="id" value="${param.id}"/></td>   17.         </tr>   18.         <tr>   19.             <td>登录名</td>   20.             <td><input type="text" name="name" value="${param.name}"/></td>   21.         </tr>   22.         <tr>   23.             <td>密码</td>   24.             <td><input type="password" name="pwd"/></td>   25.         </tr>   26.         <tr>   27.             <td>重复密码</td>   28.             <td><input type="password" name="pwd2"/></td>   29.         </tr>   30.         <tr>   31.             <td>时间</td>   32.             <td><input type="text" name="registed_date" value="${param.registed_date}"/></td>   33.         </tr>   34.         <tr>   35.             <td>email</td>   36.             <td><input type="text" name="email" value="${param.email}"/></td>   37.         </tr>   38.         <tr>   39.             <td>考试成绩</td>   40.             <td><input type="text" name="score" value="${param.score}"/></td>   41.         </tr>   42.         <tr>   43.             <td colspan="2"><input type="submit" value=" 提交 "/></td>   44.         </tr>   45.     </table>   46. </form>   47.   </body>   48. </html></span>    src/struts.xml Java代码   1. <span style="font-size: medium;"><?xml version="1.0" encoding="UTF-8" ?>   2. <!DOCTYPE struts PUBLIC   3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"   4.     "http://struts.apache.org/dtds/struts-2.1.7.dtd">   5.    6. <struts>   7.     <!-- 请求参数的编码方式 -->   8.     <constant name="struts.i18n.encoding" value="UTF-8"/>   9.     <!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开 -->   10.     <constant name="struts.action.extension" value="action,do,go,xkk"/>   11.     <!-- 当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开  -->   12.     <constant name="struts.configuration.xml.reload" value="true"/>   13.     <!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开  -->   14.     <constant name="struts.devMode" value="false"/>   15.     <!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭  -->   16.     <constant name="struts.serve.static.browserCache" value="false" />   17.     <!-- 是否允许在OGNL表达式中调用静态方法,默认值为false -->   18.     <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>   19.        20.     <!-- 指定由spring负责action对象的创建    21.     <constant name="struts.objectFactory" value="spring" />   22.     -->   23.     <!-- 是否开启动态方法调用 -->   24.     <constant name="struts.enable.DynamicMethodInvocation" value="false"/>   25.        26.     <package name="my" extends="struts-default" namespace="/">   27.         <action name="acc_*" class="com.javacrazyer.web.action.AccountAction" method="{1}">   28.             <result name="success">/info.jsp</result>   29.             <result name="input">/acc_{1}.jsp</result>   30.         </action>   31.            32.     </package>   33.        34. </struts>   35. </span>     AccountAction.java Java代码   1. <span style="font-size: medium;">package com.javacrazyer.web.action;   2.    3. import java.util.Date;   4.    5. import com.opensymphony.xwork2.ActionSupport;   6.    7.    8. public class AccountAction extends ActionSupport {   9.     private static final long serialVersionUID = -1418893621512812472L;   10.     private Integer id;   11.     private String name;   12.     private String pwd;   13.     private String pwd2;   14.     private Double score;   15.     private Date registed_date;   16.     private String email;   17.        18.     public String registe() throws Exception{   19.         System.out.println("registe-------------------");   20.         return SUCCESS;   21.     }   22.        23.     public String login()throws Exception{   24.         return SUCCESS;   25.     }   26.        27.     public Integer getId() {   28.         return id;   29.     }   30.     public void setId(Integer id) {   31.         this.id = id;   32.     }   33.     public String getName() {   34.         return name;   35.     }   36.     public void setName(String name) {   37.         this.name = name;   38.     }   39.     public Double getScore() {   40.         return score;   41.     }   42.     public void setScore(Double score) {   43.         this.score = score;   44.     }   45.     public Date getRegisted_date() {   46.         return registed_date;   47.     }   48.     public void setRegisted_date(Date registedDate) {   49.         registed_date = registedDate;   50.     }   51.     public String getEmail() {   52.         return email;   53.     }   54.     public void setEmail(String email) {   55.         this.email = email;   56.     }   57.    58.     public String getPwd() {   59.         return pwd;   60.     }   61.    62.     public void setPwd(String pwd) {   63.         this.pwd = pwd;   64.     }   65.    66.     public String getPwd2() {   67.         return pwd2;   68.     }   69.    70.     public void setPwd2(String pwd2) {   71.         this.pwd2 = pwd2;   72.     }   73. }</span>    AccountAction-validation.xml [与AccountAction同目录] Java代码   1. <span style="font-size: medium;"><?xml version="1.0" encoding="UTF-8"?>   2. <!DOCTYPE validators PUBLIC    3.     "-//OpenSymphony Group//XWork Validator 1.0.2//EN"    4.     "   5. <validators>   6.     <!-- 字段校验 -->   7.     <field name="id">   8.         <field-validator type="required" short-circuit="true">   9.             <message>ID必填的</message>   10.         </field-validator>   11.         <field-validator type="int">   12.             <param name="min">20</param>   13.             <param name="max">50</param>   14.             <message>ID必须在 ${min} 到 ${max} 之间</message>   15.         </field-validator>   16.     </field>   17.     <field name="name">   18.         <field-validator type="requiredstring" short-circuit="true">   19.             <message>姓名是必填的</message>   20.         </field-validator>   21.         <field-validator type="regex">   22.             <param name="expression"><![CDATA[(^[a-zA-Z_]\w{3,9}$)]]></param>   23.             <message>姓名不合法</message>   24.         </field-validator>   25.     </field>   26.     <field name="pwd">   27.         <field-validator type="requiredstring" short-circuit="true">   28.             <message>密码是必填的</message>   29.         </field-validator>   30.     </field>   31.        32.     <!-- 非字段校验 -->   33.     <validator type="fieldexpression">   34.         <param name="fieldName">pwd</param>   35.         <param name="fieldName">pwd2</param>   36.         <param name="expression"><![CDATA[pwd==pwd2]]></param><!-- OGNL表达式 -->   37.         <message>确认密码和密码输入不一致</message>   38.     </validator>   39.        40.     <field name="score">   41.         <field-validator type="double">   42.              <param name="minInclusive">0.0</param>   43.                <param name="maxInclusive">100.0</param>   44.                <message>成绩必须在${minInclusive}和${maxInclusive}之间</message>   45.         </field-validator>   46.     </field>   47.     <field name="email" >   48.         <field-validator type="regex">   49.              <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>   50.              <message>邮箱不合法</message>   51.         </field-validator>   52.     </field>   53.        54.     <field name="registed_date">   55.         <field-validator type="date">   56.              <param name="min">1970-01-01</param>   57.              <param name="max">2019-01-01</param>   58.              <message>注册日期不合法</message>   59.         </field-validator>   60.     </field>   61. </validators></span>       第二个示例:XML配置式校验器---登录和注册页面 user_login.jsp Html代码   1. <span style="font-size: medium;"><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   2. <%@ taglib uri="/struts-tags" prefix="s" %>   3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   4. <html>   5.   <head>   6.     <title>Struts2中基于XML配置式的校验器使用示例</title>   7.   </head>   8.   <body>   9. <h3>XML配置式校验器---登录页面</h3><hr/>   10. <div style="color:red"><s:fielderror/></div>   11. <form action="user_login.action" method="post">   12.     <table>   13.         <tr>   14.             <td>登录名</td>   15.             <td><input type="text" name="user.name" value="${param['user.name']}"/></td>   16.         </tr>   17.         <tr>   18.             <td>密码</td>   19.             <td><input type="password" name="user.pwd"/></td>   20.         </tr>   21.         <tr><td colspan="2"><input type="submit" value=" 提交 "/></td></tr>   22.     </table>   23. </form>   24.   </body>   25. </html></span>     user_registe.jsp Html代码   1. <span style="font-size: medium;"><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   2. <%@ taglib uri="/struts-tags" prefix="s" %>   3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   4. <html>   5.   <head>   6.     <title>Struts2中基于XML配置式的校验器使用示例</title>   7.   </head>   8.   <body>   9. <h3>XML配置式校验器---注册页面</h3><hr/>   10.    11. <div style="color:red"><s:fielderror/></div>   12. <form action="user_registe.action" method="post">   13.     <table>   14.         <tr>   15.             <td>ID</td>   16.             <td><input type="text" name="user.id" value="${param['user.id']}"/></td>   17
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服