`
jushi1988
  • 浏览: 74441 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类
最新评论

Struts验证框架的简单应用

阅读更多
以前在别处看到了这个,由此想到了最初学习Struts的时候....
引用

首先说Struts中验证框架的使用
1,建一个Web Project用Struts包围,这个就不多说了,注意最好用struts1.2及以上版本
2,手动配置FormBean和Action
A,手动配置FormBean
    在此之前新建一个Jsp页面,如下:
    index.jsp 
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="strutsHtml" prefix="html" %>
<%@ taglib uri="strutsBean" prefix="bean" %>
<%@ taglib uri="strutsLogic" prefix="logic" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> 
   <title>Demo</title>
</head>
 
<body>
    <logic:messagesPresent>
       <ul>
       <html:messages id="error">
          <li><bean:write name="error"/></li>
       </html:messages>
       </ul><hr />
    </logic:messagesPresent>
  <center>
    <form action="check.do" method="post" >
       UserID:<input type="text" name="userID" />
       Password:<input type="password" name="userpass" />
       <input type="submit" name="cmd" value="login" />
    </form>
    </center>
</body>
</html> 

在这里使用了struts中的自定义标签,就不介绍了,在web.xml中加入以下代码即可:(加在servlet元素上边比较好)

<jsp-config>
  <taglib>
       <taglib-uri>strutsHtml</taglib-uri>
       <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
  </taglib>
  <taglib>
       <taglib-uri>strutsBean</taglib-uri>
       <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
  </taglib>
  <taglib>
       <taglib-uri>strutsLogic</taglib-uri>
       <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
  </taglib>
</jsp-config> 

然后在my包下新建一个类,如下:
        注意:要使用验证框架必须让类继承ValidatorForm

在FormBean中只需声明跟他相关联的JSP页面里<form>中的属性,和属性的get/set方法即可,本例中只需声明index.jsp中的userID,userpass。注意,属姓名一定要与jsp中的名字相同。代码如下:

package my;
 
import org.apache.struts.validator.ValidatorForm;
 
@SuppressWarnings("serial")
publicclass TestForm extends ValidatorForm {
 
    private String userID;
    private String userpass;
   
    public String getUserID() {
       returnuserID;
    }
   
    publicvoid setUserID(String userID) {
       this.userID = userID;
    }
   
    public String getUserpass() {
       returnuserpass;
    }
   
    publicvoid setUserpass(String userpass) {
       this.userpass = userpass;
    }


在struts-config.xml中添加<form-bean>,如下:
注:type的值要与建立的FormBean的名字相同,而且必须标明类所在的包,在此我就不把FormBean和Action分包了,都放在my包下。
<form-beans>
  <form-bean name="testForm" type="my.TestForm"></form-bean>
</form-beans> 




B.配置Action
    同样,在my包下新建一个类:名叫TestAction 如下:
    注意,此类继承自Action


在此类中实现execute方法。暂时把返回值设置成null
    代码如下:
package my;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
 
publicclass TestAction extends Action {
 
    public ActionForward execute(ActionMapping mapping, ActionForm form,
           HttpServletRequest request, HttpServletResponse response)
           throws Exception {
       return mapping.findForward("ok");
    }
 


    在struts-config.xml中配置Action:
    其中path是jsp表单中action的值,name,attribute关联的是FormBean的名字, type是Action完整的类名,scope为作用域,validate在这里要设置成true,因为要做验证,input为当验证出发时,显示错误的页面
<forward>中 name为Action转发的名称,path为转发的路径,此时我们要把Action中刚才返回null的地方替换成:return mapping.findForward("ok");让Action跳转到ok.jsp

代码:
<action-mappings>
  <action path="/check" name="testForm" attribute="testForm"
          type="my.TestAction" scope="request" validate="true"
          input="/index.jsp">
       <forward name="ok" path="/ok.jsp"></forward>
  </action>
</action-mappings> 

1,开始添加验证框架。
验证框架其实就是一个struts得插件,它依赖于validator-rules.xml和validation.xml以及项目本身的资源文件(ApplicationResources.properties)
      
       所以我们第一步先要在struts-config.xml中添加这个插件:
           将validator-rules.xml的这段话:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/>
</plug-in> 

       Copy到struts-config.xml中。即可完成添加,注意,插件要复制到文件的最后,当然要包含在根元素下.
       Values里边有两个值,说明它需要这两个文件来完成验证。
validator-rules.xml我们已经有了,下面我们需要新建一个validation.xml
在WEB-INF下新建一个xml文件。
建好之后把validator-rules.xml这段话:
<!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"> 

copy到validation.xml中。
注:validator_1_1_3.dtd 是validator-rules.xml和validation.xml文件约束文件。约束在xml文件中都有哪些元素和属性及它们之间的包含关系


Ok,暂时先不管它了,我们关注下ApplicationResources.properties 这个文件
它是整个项目的资源文件,说简单了就是起一个让你可以一劳永逸的作用,我们这里不多做解释了
Ok,我们在validator-rules.xml中找到被注释的部分中如以下标记:
# Struts Validator Error Messages
   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. 

这些是用来保存验证框架所提示的错误信息的,将他们copy到ApplicationResources.properties中
关于错误信息的注释:
1, 验证非空
2, 最小长度
3, 最大长度
4, 挂钩正则表达式的验证,(mask)
5, 验证为byte类型
6, 验证为short类型
7, 验证为integer类型
8, 验证为long类型
9, 验证为float类型
10,              验证为时间类型
11,              验证在xx-xx范围之内
12,              验证creditcard格式
13,              验证email格式 


注意,ApplicationResources文件要选择打开方法的,用文本编辑器或者properties file editor 打开都可以。


好了,这里搞定,我们跳回到validation.xml文件,开始手写validation.xml:
(程序员么,要有跳跃性思维……):

    1.写根元素 <form-validation>
    2.写 <formset> : 包含所有要被验证框架进行验证的表单
    3.写 <form name="testForm" > : name属性对应的值一定要是struts-config.xml的form-bean中声明
4.写 <field property="user" depends="required,mask" > property一定要是form中的属性
         property="user" :属性名
         depends="required,mask" :套用的验证标准这个验证标准必须是在validator-rules.xml的validator元素下声明的,套用两个验证标准,就用逗号将两个标准隔开。
       5.写需要传入提示信息的参数
           写法一:<arg key="user.name" position="0" />
           这里key属性里面的”user.name”需要在ApplicationResources文件里边定义一下。
           举个例子:
              我们要验证表单中用户ID这个输入框不能为空。
              第一步要在validation.xml关联,设定参数。如下:

<form-validation>
    <formset>
       <form name="testForm">
           <field property="userID" depends="required">
              <arg key="user.id" position="0" />
           </field>
       </form>
    </formset>
</form-validation> 

             

第二步要在ApplicationResources文件中定义一个参数:
user.id = User’s ID    这里需要注意,变量名要与validation.xml下的key值相同,User’s ID是要显示在页面上的内容。

发布,运行后的效果:



ApplicationResources文件中显示中文很麻烦,就不在这里介绍了。

           再举个例子,假如我们要验证密码不能为空且长度不能小于6位:
           我们所涉及的表单项为userpass,验证标准为minlength和required
errors. minlength={0} can not be greater than {1} characters. 

           正如我们所见,这个验证标准需要两个参数。Ok,我们分两种方法来做一下:
1, 在ApplicationResources中定义参数1:
<field property="userpass" depends="required,minlength">
              <arg key="user.pass" position="0"/>
              <arg key="pass.length" position="1"/>
           </field> 

              然后要在ApplicationResources中声明参数0,参数1:
user.pass = User''sPassword
    pass.length = 6    //定义参数1 

2, 在validation.xml中定义参数1:
<field property="userpass" depends="required,minlength">
              <arg key="user.pass" position="0"/>
              <arg key="${var:minlength}" position="1" resource="false"/>
                  <var>
                     <var-name>minlength</var-name>
                     <var-value>6</var-value>
                  </var>
           </field> 

用EL表达式将key的值传到ApplicationResources文件中,并且告诉ApplicationResources不用在那边声明变量了(resource="false")


Ok.至此,一个简单的验证框架就算完成了。

文章出处:http://www.diybl.com/course/3_program/java/javashl/2008123/96954.html
分享到:
评论
1 楼 ▄︻┳═一 2009-06-20  
用过几回,觉得也麻烦
又大部分是对javabean的校验
所以后来用了hibernate validator,一个javabean的定义和完整性约束都能在一个java文件里得到体现

相关推荐

    Struts2校验框架应用

    在`validationdemo`这个示例项目中,你可以看到一个完整的Struts2校验框架应用实例,包括Action类、校验规则配置、以及对应的视图展示。通过分析这个例子,你可以更好地理解和掌握Struts2的校验框架在实际开发中的...

    struts2验证框架简单实例

    总的来说,Struts2的验证框架提供了一种方便、灵活的方式来管理Web应用的数据验证。通过深入学习和实践,你可以更好地掌握它,提升应用程序的质量和用户体验。在实际开发中,不断遇到并解决各种问题,将有助于你成为...

    struts2验证框架

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

    Struts验证框架配置详解

    Struts验证框架是Java Web开发中的一个重要组成部分,它主要用于确保用户输入的数据符合应用程序设定的规则,从而提高数据的准确性和安全性。本篇文章将深入探讨Struts验证框架的配置过程,帮助开发者更好地理解和...

    struts2验证框架简单示例

    Struts2是一个非常流行的Java Web开发框架,它提供了一种优雅的方式来组织和控制MVC(模型-视图-控制器)应用程序。在Struts2中,验证框架...通过实践这个简单的示例,你应该能够更好地理解Struts2验证机制的工作原理。

    AJAX技术在Struts验证框架中的应用研究

    **AJAX技术与Struts验证框架的结合应用** 在现代Web开发中,AJAX(Asynchronous JavaScript and XML)技术已经成为提升用户体验的重要手段。它允许页面部分更新,无需刷新整个页面,从而实现更快、更流畅的交互。而...

    struts验证框架实例

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

    struts2验证框架示例

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

    struts验证框架的实例

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

    struts2校验框架使用心得.txt

    Struts2的校验框架提供了一种灵活而强大的方式来处理Web应用程序中的验证需求。通过合理地配置Struts2框架和正确地实现验证逻辑,可以显著提高应用程序的质量和用户体验。此外,Struts2还支持动态验证和国际化等多种...

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

    Struts2框架是一个基于Model...这个实例虽然简单,但对于初学者来说,它很好地展示了Struts2框架的基础工作原理和基本的Web应用开发流程。通过这个实例,可以进一步学习和理解Java Web开发,为后续复杂的项目打下基础。

    struts 验证框架 demo

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

    struts验证框架例子

    总的来说,Struts验证框架简化了Web应用中的数据验证过程,提高了代码的可读性和可维护性,是Java Web开发者处理表单验证不可或缺的工具。通过深入理解和熟练使用Validator框架,开发者可以更高效地构建安全、健壮的...

    Hibernate+struts2框架

    在"Hibernate+Struts2框架 实现简单的登陆和列表以及详细信息"的项目中,开发者构建了一个包含管理员和普通用户角色的基础应用。这个应用的核心功能包括用户登录、信息展示和详情查看,这些功能都是Web应用中的基本...

    struts2框架2016版资料day01

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

    java做的struts验证框架例子

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

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

    在Struts1中,验证框架是处理用户输入数据校验的重要组成部分,它帮助开发者确保用户提交的数据符合预定义的规则,从而提高应用程序的安全性和用户体验。下面将详细介绍Struts1验证框架的使用。 首先,我们来看一下...

    最新struts验证框架

    最新的Struts验证框架,如"最新struts验证框架"所述,旨在提供一种便捷、高效的方式来验证用户输入的数据,确保数据的完整性和安全性。在开发过程中,数据验证是必不可少的一环,它能有效防止恶意数据注入,保护系统...

    Struts2框架源码

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

    struts框架的最简单应用,懂的就不用下了

    在实际应用中,Struts框架还涉及拦截器(Interceptor)、国际化、异常处理、数据校验等方面。初学者通过这个压缩包,可以学习到如何集成这些功能,从而创建更复杂的Web应用程序。 总的来说,这个压缩包提供了Struts...

Global site tag (gtag.js) - Google Analytics