• Struts2数据校验


    1.表单数据的验证:

    前台验证:主要是通过JS验证, 表达数据是否合法!

    后台验证:通过后台java代码进行验证!

      Struts也提供了数据效验的方式!

      Struts数据效验,通过拦截器完成:<interceptor      name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/>

    ①:代码方式验证Action中所有的方法:

        步骤:

        1. 搭建struts环境

        2. login.jsp

    <s:form action="validation_ex" method="post" theme="simple">
        账户:<s:textfield name="username"/><s:fielderror name="username"></s:fielderror>
        密码:<s:password name="pwd"/>
        <s:submit value="提交"></s:submit>
    </s:form>

        3.ValidationAction.java

    public class ValidationAction extends ActionSupport {
        private static final long serialVersionUID = 1L;
        private String username;
        private String pwd;
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
        public String execute() throws Exception {
            return SUCCESS;
        }
        public void validate() {
            // 如果用户名为空,返回用户名不能为空
            if (username == null||"".equals(username)) {
                super.addFieldError(username, "用户名不能为空");
            }
            // 如果密码为空,返回密码不能为空
            if (pwd == null||"".equals(pwd)) {
                super.addFieldError(pwd, "密码不能为空");
            }
        }
        public String add(){
            System.out.println("ValidationTest.add()");
            return SUCCESS;
        }
    }

       4.Struts.xml配置:

    <struts>
        <include file="struts-default.xml"></include>
        <package name="validations" extends="struts-default">
            <action name="validation_ex"  class="com.gxxy.filetransport.validationtext.ValidationTest" method="execute">
                <result>/JSP/validation/mainpage.jsp</result>
                <result name="input">/JSP/validation/register.jsp</result>
            </action>
            <action name="validation_add"  class="com.gxxy.filetransport.validationtext.ValidationTest" method="add">
                <result>/JSP/validation/register.jsp</result>
            </action>
        </package>
    </struts>    

    注意:这样写,validate会验证Action类中所有的方法.

    ②:代码方式验证Action类中指定的方法:

        写验证方法命名规则:

        validate + 要验证的方法名

        如:

        ---->public void validateExecute() {

            只会验证当前actionexecute方法!

    ③:XML方式验证Action类中所有的方法:

        总结代码方式验证:繁琐,设计很多重复的验证逻辑!例如:非空验证、数值验证、email、等。

        Struts对于常用的验证,进行了封装,即提供了验证器, 验证指定的常用业务逻辑!

        Struts提供的所有验证器:

        路径:-->xwork-core-2.3.4.1.jar/com.opensymphony.xwork2.validator.validators/default.xml

    <validators>
        <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
        <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
        <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
        <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
        <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
        <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
        <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
        <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
        <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
        <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
        <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
        <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
        <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
        <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
        <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
        <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
    </validators>

        如果写xml,从而定义验证规则:

        1XML文件名称语法: ActionClassName-validation.xml

        注意:此xml需要与当期要验证的action在同一个目录:

        举例:ValidationAction-validation.xml

        2) 写XML

    <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE validators PUBLIC
              "-//Apache Struts//XWork Validator 1.0.3//EN"
              "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
              
    <validators>
    <!-- 验证的每一个字段用field表示 -->    
    <field name="username">
    <!-- 指定使用的验证器 -->
        <field-validator type="requiredstring">
        <!-- 验证失败的错误提示信息 -->
            <message>用户名不能为空</message>
        </field-validator>
    </field>
    <!-- 验证的每一个字段用field表示 -->    
    <field name="pwd">
    <!-- 指定使用的验证器 -->
        <field-validator type="requiredstring">
        <!-- 验证失败的错误提示信息 -->
            <message>密码不能为空</message>
        </field-validator>
    </field>
    </validators>

    ④:XML验证Action中指定的方法:

      与上面xml验证方式大致相同: 验证xml文件内容不变;

      文件命名:

      语法:ActionClassName-ActionName-validation.xml

      举例:ValidationAction-validation_ex-validation.xml-validation.xml

      验证ValidationAction中的execute方法

    验证总结

    代码:

         ①:重写validate()   ,  验证action所有方法

       ②:Validate方法名(),  验证指定“方法名”的方法

    Xml

       ①:验证所有方法: ActionClassName-validation.xml

       ②:验证指定方法: ActionClassName-actionName-validation.xml

    代码验证:比较灵活,可以满足所有的需求.但是它比较繁琐,要写重复的验证判断逻辑!适用于表单字段较少的情况用!

    XML验证:通用,但不够灵活; 可以验证特定简单的业务.适合于验证表单字段较多,可以大大简化代码!缺点就是(配置文件过多)

    验证错误处理

    Struts在进行数据效验的时候,验证失败,会返回input视图,要求我们要在struts.xml中配置input视图对应的错误页面!

  • 相关阅读:
    bash命令
    集群解析
    临时配置网络(ip,网关,dns)+永久配置
    nginx反向代理三台web
    源码安装nginx
    nginx反向代理+三台web+nfs共享存储实现集群配置
    jQuery学习笔记(一):入门【转】
    你是怎么把字符串“2016-11-16” 变为 “16/11/2016” 的? 【转】
    用css画出三角形【转】
    JS中常遇到的浏览器兼容问题和解决方法【转】
  • 原文地址:https://www.cnblogs.com/zhang-bo/p/6539277.html
Copyright © 2020-2023  润新知