`
wiley
  • 浏览: 254364 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

按步就班使用struts验证框架

阅读更多
使用动态FormBean与struts验证框架

第一步,安装插件,在struts-config.xml中配置

<message-resources parameter="ApplicationResources" />

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEBINF/validation.xml" />
</plug-in>

validator-rules.xml是struts自带的,validation.xml须要自已新建

第二步,将validator-rules.xml中以下代码
#------------------------ERROR-----------------
errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} is invalid.

errors.byte={0} must be a byte.
errors.short={0} must be a short.
errors.integer={0} must be an integer.
errors.long={0} must be a long.
errors.float={0} must be a float.
errors.double={0} must be a double.

errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is an invalid credit card number.
errors.email={0} is an invalid e-mail address.

拷贝到ApplicationResources.properties中,为了支持国际化ApplicationResources.properties同目录下新建ApplicationResources_zh_CN.properties需注意的是中文内容需通过native2ascii.exe进行转换。
命令使用格式:native2ascii 原文件 目标文件
我自已的常用做法是在JDK的ben目录下建一个.bat文件
内容:
cd %java_home%/bin/
native2ascii ApplicationResources_chinese.properties ApplicationResources_zh_CN.properties

如:ApplicationResources_chinese.properties中的文本:
errors.invalid={0} 无效.
errors.required={0} 不能为空.
转换后ApplicationResources_zh_CN.properties中的文本:
errors.required={0} \u4e0d\u80fd\u4e3a\u7a7a.
errors.invalid={0} \u65e0\u6548.

第三步,新建formBean与action
<!--使用动态的验证表单-->
<form-bean name="regForm"
        type="org.apache.struts.validator.DynaValidatorForm">
        <form-property name="username" type="java.lang.String" />
        <form-property name="password" type="java.lang.String" />
        <form-property name="password2" type="java.lang.String" />
</form-bean>
......
<!--需注意得是validate属性必须为true-->
<action attribute="regForm" name="regForm" parameter="method"
        path="/userReg" scope="request" input="/view/user/regedit.jsp"
        type="org.springframework.web.struts.DelegatingActionProxy"
        validate="true">
        <forward name="regFail" path="/view/user/regedit.jsp" redirect="false" />
        <forward name="regSuccess" path="/view/user/login.jsp" redirect="false" />
</action>

第四步,在validator.xml中定义验证规则
struts自带一些验证规则可供使用:
Byte、CreditCard、Date、Double、Email、Float、Integer、Long、Mask、MinLength、MaxLength、Range、Required、Short
通过field元素的depends属性指定依赖
当然struts也提供了自定义验证类的使用:
如验证密码一致性,编写以下类(引自struts中的例子)
package com.note.validator;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.validator.Field;
import org.apache.commons.validator.GenericValidator;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.ValidatorUtil;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.validator.Resources;

public class CustomValidator {
        public CustomValidator() {
                super();
        }

        /**
         * 功能:验证密码一致性(函数名必须以validate开头)
         * @param bean
         * @param va
         * @param field
         * @param errors
         * @param request
         * @return
         */
        public static boolean validateTwoFields(Object bean, ValidatorAction va,
                        Field field, ActionErrors errors, HttpServletRequest request) {
                String value = ValidatorUtil
                                .getValueAsString(bean, field.getProperty());
                String sProperty2 = field.getVarValue("secondProperty");
                String value2 = ValidatorUtil.getValueAsString(bean, sProperty2);
                if (!GenericValidator.isBlankOrNull(value)) {
                        try {
                                if (!value.equals(value2)) {
                                        errors.add(field.getKey(), Resources.getActionError(
                                                        request, va, field));
                                        return false;
                                }
                        } catch (Exception e) {
                                errors.add(field.getKey(), Resources.getActionError(request,
                                                va, field));
                                return false;
                        }
                }
                return true;
        }

}

validator.xml文件示例



<form-validation>
        <global>
                <!-- 自定义验证器 -->
                <validator name="twoFields"
                        classname="com.note.validator.CustomValidator"
                        method="validateTwoFields"
                        methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                        msg="errors.twofields" />
                <!-- 自定义验证器 -->
                <!-- 全局常量 -->
                        <constant>
                                <constant-name>string6_20</constant-name>
                                <!--正则表达式-->
                                <constant-value>^\w{6,20}$</constant-value>
                        </constant>
                <!-- 全局常量 -->
        </global>

        <formset>
                <!-- 注册表单验证 -->
                <form name="regForm">
                        <field property="username" depends="required,mask">
                                <!--resource为true时将去ApplicationResources中查找对应key的值-->
                                <arg0 key="lable.username" resource="true" />
                                <var>
                                        <var-name>mask</var-name>
                                        <var-value>${string6_20}</var-value>
                                </var>
                        </field>
                        <field property="password"
                                depends="required,mask,twoFields">
                                <arg0 key="lable.password" resource="true" />
                                <var>
                                        <var-name>mask</var-name>
                                        <var-value>${string6_20}</var-value>
                                </var>
                                <var>
                                        <var-name>secondProperty</var-name>
                                        <var-value>password2</var-value>
                                </var>
                        </field>
                </form>
        </formset>
</form-validation>

第五步,结合action一起使用
        /**
         * 功能:新用户注册
         * 
         * @param mapping
         * @param form
         * @param request
         * @param response
         * @return
         */
        public ActionForward regedit(ActionMapping mapping, ActionForm form,
                        HttpServletRequest request, HttpServletResponse response) {
                DynaActionForm regForm = (DynaActionForm) form;
                String username = (String) regForm.get("username");
                String password = (String) regForm.get("password");
                Users user = this.ius.getUserByName(username);
                ActionErrors errors = new ActionErrors();
                if (user == null) {
                        user = new Users();
                        user.setUsername(username);
                        user.setPassword(password);
                        user.setLevel(0);
                        user.setAddtime(new java.util.Date());
                        user.setLastime(new java.util.Date());
                        this.ius.addUser(user);
                } else {
                        errors.add("username", new ActionError("errors.username.exist"));
                        this.saveErrors(request, errors);
                        return mapping.findForward("regFail");
                }
                return mapping.findForward("regSuccess");
        }

到此为止,struts验证框架的使用基本完成。
分享到:
评论

相关推荐

    Struts2校验框架应用

    Struts2作为一款流行的Java Web开发框架,提供了一套强大的校验框架,使得开发者能够方便地对用户输入数据进行验证,确保数据的准确性和安全性。本文将深入探讨Struts2校验框架的应用,包括其核心概念、配置方式、...

    struts2验证框架

    Struts2 验证框架详解 Struts2 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制...

    struts2校验框架使用心得.txt

    ### Struts2校验框架使用心得 #### 一、Struts2校验框架概述 Struts2是一款基于Java的企业级Web应用开发框架,它能够帮助开发者构建出结构清晰、易于维护的应用程序。其中,Struts2提供的校验框架是其核心特性之一...

    仅使用了struts1框架

    Struts1框架是Java Web开发中的一个经典框架,由Apache软件基金会维护,它基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用的开发。在本项目中,仅使用了Struts1来实现一个未连接数据库的简单登录功能...

    struts2.0的数据校验框架struts2.0的数据校验框架

    struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架

    Struts验证框架配置详解

    这两个库需要添加到项目的类路径(ClassPath)中,以便于项目能够识别并使用Struts验证框架。 接下来,我们来详细讨论配置步骤: 1. **配置struts.xml** 在Struts2的应用中,`struts.xml` 是主要的配置文件。在...

    struts验证框架实例

    Struts验证框架通过提供一种结构化的验证机制,使得开发者能够更方便地对用户提交的数据进行校验。 Struts验证框架实例通常包括以下几个部分: 1. **ValidatorForm**: 这是Struts验证框架的基础,继承自`org....

    struts2验证框架简单实例

    本实例将带你深入理解Struts2验证框架的使用,以及在实际操作中可能遇到的问题和解决方案。 首先,Struts2的验证框架主要基于两个组件:`Validation`和`Validator`。`Validation`是Action类的注解,而`Validator`则...

    struts1验证框架相当好的经典例子

    通过以上步骤,我们就配置好了Struts1的验证框架,并对用户输入进行了有效的校验。当用户提交表单时,Struts1会根据`validation.xml`中的规则进行验证,如果失败,将跳转到错误页面显示相应的错误消息。如果验证成功...

    struts验证框架的实例

    Struts验证框架是Java开发中一个非常重要的工具,主要用于处理Web应用中的用户输入验证。它提供了模型驱动的数据验证机制,确保从用户接收到的数据在被处理前满足预定义的业务规则,从而避免了无效数据引发的错误。...

    struts验证框架例子

    使用Struts验证框架的过程通常包括以下几个步骤: 1. **定义验证规则**:在项目的资源文件(如validation.xml)中,开发者需要定义每个表单字段的验证规则。规则可以包括正则表达式、最大值、最小值等。 2. **创建...

    struts 验证框架 demo

    通过这个Demo,开发者可以了解Struts验证框架的工作原理,学习如何在实际项目中应用它来提高数据质量和安全性。不过,"请不要下载哈..."的描述可能意味着这个示例可能已经过时或者不再可用,建议寻找官方的或者更新...

    struts7验证框架 struts7验证框架

    Struts7验证框架是用于Java Web开发中的一个关键组件,主要负责处理用户输入数据的验证。这个框架在学习和实际项目开发中具有广泛的应用,因为它能够有效地提高代码的可维护性和减少开发工作量。 传统的Struts框架...

    java做的struts验证框架例子

    这个"java做的struts验证框架例子"是为了展示如何在Struts中实现数据验证。在Java Web开发中,数据验证通常分为客户端验证和服务器端验证两部分。客户端验证可以在用户提交表单前通过JavaScript进行,而服务器端验证...

    Struts2框架做的用户登录的简单实例

    Struts2框架是一个基于Model-View-Controller(MVC)设计模式的开源Java Web应用程序框架。它简化了Java Servlet API的使用,提供了处理HTTP请求、转发控制和视图渲染的能力。在这个简单的用户登录实例中,我们主要...

    Hibernate+struts2框架

    例如,当用户提交登录表单时,Struts2会调用LoginAction的execute方法,该方法负责校验用户输入并根据验证结果返回不同的结果视图,如登录成功跳转到主页面,失败则返回错误提示页面。 管理员和普通用户的区分可能...

    Struts2框架源码

    Struts2框架是Java Web开发中的一个流行框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化和可扩展的方式来构建应用程序。此压缩包文件包含的是Struts2的源码,特别适合初学者研究和学习...

    struts2框架2016版资料day01

    5. **拦截器**:拦截器是Struts2的一大特色,它允许开发者在Action调用前后插入自定义逻辑,比如日志记录、权限验证、数据校验等。在day01的课程中,你可能会学习如何定义和使用拦截器,以及如何在配置文件中配置...

    struts2框架的使用

    在本压缩包中,你可能会找到关于Struts2框架配置和使用的一些关键文件,这将帮助你在未来回顾或重新学习Struts2时快速上手。 首先,让我们深入了解一下Struts2的核心概念: 1. **Action类**:在Struts2中,业务...

    struts2验证框架示例

    在Struts2中,验证框架是其核心特性之一,它允许开发者对用户输入的数据进行校验,确保数据的完整性和安全性。这个“struts2验证框架示例”提供了深入理解并实际操作Struts2验证功能的机会。 首先,让我们了解一下...

Global site tag (gtag.js) - Google Analytics