zoukankan      html  css  js  c++  java
  • Struts2--验证框架

      Struts2的验证通过配置xml或者注解的方式。依赖与validationheworkflow接口(被默认的拦截器桟引入)。validation接口执行验证并且创建一些列的错误域。workflow接口检查验证错误的状态,一旦发现,就默认返回"input",

    先看一个简单的验证实例:

     View Code
     View Code
     View Code
     View Code
     View Code

    执行结果:

    从系统自带的验证器配置文件validators.xml文件可以看出,系统能够自带了以下的配置文件

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE validators PUBLIC
            "-//Apache Struts//XWork Validator Config 1.0//EN"
            "http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd">
     
    <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>
    复制代码

    自定义验证 

      在struts2中要想实现验证,可以实现通过实现以下几个接口的方式来实现

    • com.opensymphony.xwork2.validator.validators.ValidatorSupport
    • com.opensymphony.xwork2.validator.validators.FieldValidatorSupport
    • com.opensymphony.xwork2.validator.validators.RangeValidatorSupport
    • com.opensymphony.xwork2.validator.validators.RepopulateConversionErrorFieldValidatorSupport

    实例:

    复制代码
    package com.fuwh.model;
    
    public class Student {
        
        //首先编写一个学生实体类
        
        private String name;
        private int age;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        @Override
        public String toString() {
            return "Student [name=" + name + ", age=" + age + "]";
        }
        
    }<%@ page language="java" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %>
    复制代码
    复制代码
    <%@ page import="java.util.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>表单界面</title>
    </head>
    <body>
        <p>然后编写一个前台注册页面</p>
    <s:fielderror></s:fielderror>
    <s:form method="post" action="validationAction"> <s:textfield name="stu.name" label="名字"/> <s:textfield name="stu.age" label="年龄"/> <s:submit value="注册"></s:submit> </s:form> </body> </html>
    复制代码
    复制代码
    package com.fuwh.model;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class ValidationAction extends ActionSupport{
    
        private static final long serialVersionUID = 1L;
        
        private Student stu;
        
        public Student getStu() {
            return stu;
        }
    
        public void setStu(Student stu) {
            this.stu = stu;
        }
        //这是action的默认入口方法
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            System.out.println("execute the default method!!!-->>"+stu);
            return SUCCESS;
        }
        
        
    }
    复制代码
    复制代码
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
    
    <struts>
        <!-- 开启debug模式,会自动加载配置文件等等,不用每次更改了配置文件就去重新启动下服务器 -->
        <constant name="struts.devMode" value="true" />
        
        <!-- 配置action -->
        <package name="validation" extends="struts-default">
            <action name="validationAction" class="com.fuwh.model.ValidationAction">
                <result name="success">success.jsp</result>
                <!-- 必须要有input -->
                <result name="input">index.jsp</result>
            </action>
        </package>
    
    </struts>
    复制代码
    复制代码
    package com.fuwh.model;
    
    import com.opensymphony.xwork2.validator.ValidationException;
    import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;
    
    public class MyValidator extends FieldValidatorSupport{
    
        
        @Override
        public void validate(Object object) throws ValidationException {
            // TODO Auto-generated method stub
            String fieldName=this.getFieldName();    //取得字段名
            String fieldValue=this.getFieldValue(fieldName, object).toString();    //取得字段值
            
            if(fieldValue.indexOf("日")!=-1){
                //添加错误信息
                this.addFieldError(fieldName, object);
            }
        }
    }
    复制代码
    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE validators PUBLIC
            "-//Apache Struts//XWork Validator Config 1.0//EN"
            "http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd">
     
    <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文件添加到classpath,然后在里面添加自己的验证器MyValidator
            name:就是自己的验证器的名字,以后在action名-validation.xml文件中配置验证的时候需要使用
         -->
        <validator name="myvalidator" class="com.fuwh.model.MyValidator"/>    
    </validators>
    复制代码
    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" 
                                    "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
    
    <!-- 配置验证器,文件和action类放在一个地方,命名为action的类名+"-validaiont.xml" -->
    <validators>
        <field name="stu.name">
            <!-- 
                对名字字段,
                    同时使用系统自带的requiredstring来验证熊为空
                    和自定义的验证,来验证不能包含敏感词汇
            -->
            <field-validator type="requiredstring">
                <message>年龄不能为空</message>
            </field-validator>
            <field-validator type="myvalidator">
                <message>姓名不能包含敏感词汇</message>
            </field-validator>
        </field>
        <field name="stu.age">
            <field-validator type="int">
                <param name="min">12</param>
                <param name="max">18</param>
                <message>年龄只能在12到18岁之间</message>
            </field-validator>
        </field>
    </validators>
    复制代码

  • 相关阅读:
    POJ 2236 Wireless Network(并查集)
    POJ 2010 Moo University
    POJ 3614 Sunscreen(贪心,区间单点匹配)
    POJ 2184 Cow Exhibition(背包)
    POJ 1631 Bridging signals(LIS的等价表述)
    POJ 3181 Dollar Dayz(递推,两个long long)
    POJ 3046 Ant Counting(递推,和号优化)
    POJ 3280 Cheapest Palindrome(区间dp)
    POJ 3616 Milking Time(dp)
    POJ 2385 Apple Catching(01背包)
  • 原文地址:https://www.cnblogs.com/wangsicongde/p/7574265.html
Copyright © 2011-2022 走看看