`

struts2在学习(十二)--表单验证的两种方式

阅读更多

第四个示例:注解方式校验器---用户注册页面

user2_registe.jsp

<%@ 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="user2_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> 

 src/struts.xml
<?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="/">  
            <!-- 使用Annotation配置校验的Action -->  
            <action name="user2_*" class="com.javacrazyer.web.action.User2Action" method="{1}">  
                <result name="success">/info.jsp</result>  
                <result name="input">/user2_{1}.jsp</result>  
            </action>  
        </package>  
          
    </struts>  

User2Action.java
package com.javacrazyer.web.action;  
      
    import com.javacrazyer.domain.User;  
    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 User2Action extends ActionSupport {  
        private static final long serialVersionUID = -2554018432709689579L;  
        private User user; //自定义类型Field  
          
        @Validations(  
                requiredStrings= {@RequiredStringValidator(fieldName="user.name",message="你的用户名是必须的",shortCircuit=true,trim=true,type=ValidatorType.FIELD),  
                        @RequiredStringValidator(fieldName="user.pwd",message="人的密码是必须的",shortCircuit=true,trim=true,type=ValidatorType.FIELD)},  
                fieldExpressions={@FieldExpressionValidator(fieldName="user.pwd", message="两次密码不相同",expression="user.pwd==user.pwd2")},  
                regexFields={@RegexFieldValidator(fieldName="user.email",message="邮箱不合法",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;  
        }  
          
        public String login() throws Exception{  
            return SUCCESS;  
        }  
      
        public User getUser() {  
            return user;  
        }  
      
        public void setUser(User user) {  
            this.user = user;  
        }  
    }
 

另附:

User.java
package com.javacrazyer.domain;  
      
    import java.util.Date;  
      
      
    public class User {  
        private Integer id;  
        private String name;  
        private String pwd;  
        private String pwd2;  
        private Double score;  
        private Date registed_date;  
        private String email;  
          
        public User(){}  
      
        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 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;  
        }  
      
        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;  
        }  
          
          
    }

 

与user.java同一目录的User-userContext-validation.xml
<?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>

与User.java同一目录下的User-userLoginContext-validation.xml
<?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="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>  
    </validators>

分享到:
评论

相关推荐

    struts2官方例子7-表单验证 xml形式的验证

    Struts2提供了两种主要的验证方式:基于注解的验证和基于XML的验证。本例子主要关注XML形式的验证。 XML验证的优点在于其灵活性和可读性。开发者可以在Action类旁创建一个与Action类同名的.xml文件,比如Action类名...

    Struts2表单验证

    首先,Struts2的输入验证分为两种方式:手动验证和使用验证框架。 **手动验证**主要包括两种方法: 1. **重写validate()方法**:这是最基础的方式,所有Action类都需要继承ActionSupport类,然后在validate()方法中...

    struts的表单验证

    在Struts框架中,表单验证通常通过两个主要方式实现:客户端验证和服务器端验证。 1. 客户端验证: 客户端验证发生在用户的浏览器上,通常使用JavaScript或jQuery等库来执行。这种方式可以即时反馈错误,提高用户...

    Struts2极速表单验证框架(注解)

    Struts2的验证框架主要有两种方式:XML配置和注解配置。本篇重点介绍注解方式。注解方法允许开发者在Action类的属性上直接定义验证规则,减少了XML配置文件的繁琐工作。 ### 3. 注解基础 - `@Validated`:这个注解...

    Struts动态表单验证

    Struts提供了两种验证方式:ActionForm验证和Validator框架验证。ActionForm验证是早期版本中的方法,通过在ActionForm类中定义验证逻辑。Validator框架则是Struts 1.x中的增强功能,允许更灵活的XML配置和可重用的...

    整合了struts2 jquery的formValidator表单验证的页面代码

    这个项目中的代码示例可以作为学习和参考,帮助开发者理解如何在实际项目中整合Struts2和jQuery的formValidator,提高表单验证的效率和用户体验。对于初学者来说,深入研究这个示例有助于掌握Struts2和jQuery在实际...

    struts2 表单验证 注册

    Struts2提供了两种验证方式:客户端验证和服务器端验证。客户端验证通常通过JavaScript在浏览器端进行,可以即时反馈错误信息,但容易被绕过;而服务器端验证是必不可少的安全环节,无论客户端验证是否通过,服务器...

    struts结合js的表单验证

    本文将详细介绍如何在 Struts2 框架中利用 JavaScript(JS)进行客户端表单验证,并结合实际代码示例来解释具体的实现方式。 #### 一、基本概念 Struts2 是一个基于 Java 的企业级应用框架,它支持多种技术栈,...

    struts2-core-2.1.6.jar

    7. **配置文件**:Struts2的配置通常分为XML配置和注解配置两种方式。struts.xml文件用于定义Action、Result、Interceptor等,而注解配置可以直接在Action类上声明,简化配置过程。 8. **异常处理**:Struts2提供了...

    struts表单验证讲解视频教程

    1. 验证规则定义:Struts的验证通常有两种方式,一种是在ActionForm类中添加校验方法,另一种是使用XML配置文件定义验证规则。XML配置文件通常位于`struts-config.xml`或`struts-validation.xml`中,包含字段名称、...

    struts2 学习资料

    3. **配置灵活性**:Struts2支持XML和注解两种配置方式。XML配置通常用于大型项目,而注解则适用于快速开发和小型项目。这两种方式可以混合使用,以适应不同的需求。 4. **结果类型(Result Type)**:Struts2允许...

    struts-2.3.16-all-1

    5. **表单(Forms)**:Struts 2提供了一种声明式的方式处理表单输入,通过Action类的属性与表单字段对应,简化了验证和数据绑定的过程。 6. **国际化(Internationalization, i18n)**:Struts 2支持多语言环境,...

    struts2防止表单重复提交--重定向

    这两种结果类型都可以在处理完表单后使浏览器跳转到新的URL,从而避免再次提交。 1. **redirect** 结果类型: 这种结果类型会发送一个HTTP 302重定向响应到客户端,浏览器接收到这个响应后,会发起一个新的GET请求...

    struts2学习笔记.doc

    - **下载原理**:Struts2提供了一种简单的方式来响应客户端的下载请求。 - **配置与实现**: - 设置下载Action的方法。 - 在`struts.xml`中配置下载相关的参数。 #### 六、国际化 **6.1 国际化配置** - **资源...

    struts框架验证---输入校验器大全

    在Struts2中,输入校验器是一种实现数据验证的组件,它们通过配置在XML文件(如`default.xml`)中来定义,并与Action类的属性关联。`default.xml`文件通常位于`com/opensymphony/xwork2/validator/validators`路径下...

    Struts1.2动态表单注册 验证实例(2)

    Struts1.2提供了一种称为“Validator框架”的验证机制,它可以验证用户输入的数据是否符合预设的规则。这通常涉及到两部分:ValidatorForm接口的实现和验证规则文件(validation.xml)的编写。在UserBean中实现...

    struts 1.2 ActionFrom表单验证

    表单验证有两种主要方式:客户端验证和服务器端验证。客户端验证通过JavaScript在浏览器中执行,可以提供即时反馈,但容易被绕过;服务器端验证是必需的,因为它是安全的,但可能会增加服务器负载。 客户端验证可以...

    struts-tiles和validator-strut2教程pdf

    Validator是Struts 1的一个插件,负责处理表单验证。它提供了数据验证规则,可以在客户端或服务器端对用户输入进行检查,确保数据的有效性和安全性。Validator配置文件定义了验证规则,如必填字段、长度限制、数据...

    struts2-login-example.rar_struts2 example_struts2 login

    在struts2-login-example中,可能有"success"和"input"两种结果,分别对应登录成功和失败的情况。 9. **异常处理**:Struts2提供了全局异常处理机制,可以通过配置文件定义如何处理未捕获的异常,以提供统一的错误...

    struts2验证框架示例

    在视图层,Struts2提供了一种方便的方式来展示这些验证错误。你可以使用OGNL(Object-Graph Navigation Language)表达式来获取并显示错误信息,例如: ```jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; ... ()...

Global site tag (gtag.js) - Google Analytics