`
easonfans
  • 浏览: 254153 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2.0 验证

阅读更多

一、struts2.0的输入验证:
A、手动验证:
1)重写validate()
2)重写validateXxx()
B、使用验证框架
  Action类都要继承ActionSupport类

二、为一个Action设置多个逻辑处理:
 
为了更具有针对性的处理业务逻辑与针对性的进行输入校验,可以采用指定业务逻辑处理方法的方法,即对同一个Action设置多个逻辑处理方法,也就是说对于某个表单,我们可以指定在Action中让哪个方法来处理它的相关业务
 
解决方法:struts.xml中通过method属性指定处理其逻辑的方法
 
例如:
LoginAction中有login()和regester()两个业务处理方法:
<action name="login" class="com.oristnad.login.LoginAction" method="login">
<action name="reg" class="com.oristnad.login.LoginAction"   method="regist">
 

A、如果重写了ActionSupport的validate()方法,则该方法会校验所有的处理逻辑。
B、为了实现校验指定逻辑方法,可以在Action中增加一个validateXxx()方法,其中Xxx即是Action对应的处理逻辑方法。同时不重写validate方法
 
例如:
  validateRegist()方法---专门校验regist()方法,即校验reg表单提交的内容
  validateLogin()---专门校验login()方法,即校验login表单提交的内容
 
三、struts2的输入校验流程:
1)、类型转换器负责对字符串的请求参数执行类型装换,并将这些值设置为Action的属性值
2)、在类型转换过程中如果出现异常,则将异常信息保存到ActionContext中,conversionError拦截器负责将其封装到fieldError里,然后执行第3步;如果没有异常,则直接进入第3步
3)、如果有validateXxx()方法,则调用该方法
4)、调用Action类中的validate()方法
5)、如果经过上面4步都没有出现fieldError,将调用Action里处理用户请求的处理方法;
     如果出现了fieldError,将转入input逻辑视图所指定的视图资源。
       

四、struts2的验证框架初步:
       只需要为Action指定一个校验文件即可,该文件指定了Action的属性必须满足怎样的规则。
每个Action都有一个校验文件,命名规则:Action名字-validation.xml;
该文件保存在与该Action类的相同路径下。
1、配置文件:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator1.0.2//EN" 
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
     <field name="username">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>用户名不能为空</message>
         </field-validator>
      </field>
      <field name="passwd">
         <field-validator type="requiredstring">
             <message key="error.password"></message>
         </field-validator>
     </field>
</validators>
 
 
1)<field name="username">--要验证的字段
2)<field-validator type="requiredstring">--验证规则(校验器)
3)<param name="trim">true</param>--校验参数
4)<message>用户名不能为空</message>--验证失败的输出信息

2、配置文件中使用国际化显示错误信息:
 
A、message元素的key属性:<message key="error.password"></message>
B、使用${getText("message-key")}: <message>${getText("error.username")}</message>

3、客户端验证:
  在<s:form>表单中添加validate="true"即可,struts2客户端验证仍是基于JavaScript的,struts2将服务器验证转为客户端验证。
  
<s:form action="login" validate="true">
   
 注意:
      A、如果验证文件中错误信息使用<message key="error.password"></message>形式输出的话,则页面会出现FreeMarker template error!的错误。
       故必须使用${getText("message-key")}形式
     
 B、不是所有的服务器端验证都可以转为客户端验证
 
4、校验器的配置风格:
 
1)字段校验器:字段优先
字段的校验遵循以下规则:
 
<validators>
	<field name="被校验的字段名">
 	   <field-validator type="校验器名">
 	       <param name="参数名">参数值</param>
 	       <message>校验失败的提示信息</message>
	</field-validator>
	</field>   
</validators>     
 
      
2)非字段校验器配置风格:校验器优先

 <validators>
  	 <validator type="校验器">
  	    <param name="fieldName">需要被校验的字段</param>
  	    <param name="参数">参数值</param>
  	    <message>校验失败的提示信息</message>
  	 </validator>
</validators>
 
 
5、常用的校验器:
required--必填校验器
requiredstring--必填字符串校验器
int--整数校验器
double--双精度校验器
date--日期校验器
expression--表达式校验器
email--电子邮件校验器
url--网址校验器
stringlength--字符串长度校验器
regex--正则表达式校验器

 
Struts2 验证框架不起作用的几种可能
1、命名是否符合约定:
<actionClass>-validation.xml 
<actionClass>-<actionAlias>-validation.xml
2.   validation.xml的标签是否正确。
3.   fieldName 命名是否和jsp以及 action中的属性一致
4.检查是否在同一个field里面配置了重复的参数,重复的参数也可能会使你的信息显示不出来
5、有可能是版本问题,今天用2.1.16的版本做了很久都不起作用,最后改成2.0.14版本,问题解决。
 

 

 

之所以转载这篇文章,是因为前一阵子,有个单位考我Struts2的验证,问到当error出现的时候,怎么写入ActionContext,其实人家的问题问的很深,我理解的是问Struts2框架验证怎么讲验证信息返回客户端,当时我是按照Servlet的write方法回答的,后来觉得没必要这么回答,只要简单的把其验证的流程说一下就好了!真问道实现机制……不会就不会了!

不过Validate()方法里面的this.addFieldError()方法要是能表述出来就更清晰了,当时我把这个方法名字给忘记了……  

分享到:
评论
1 楼 huangjinsheng1988 2013-01-29  
   请问一下如果两个
    <action name="login" class="com.oristnad.login.LoginAction" method="login"> 
    <action name="reg" class="com.oristnad.login.LoginAction"   method="regist">
如何配置?配置一个没有问题,但是两个都要验证就是说要在LoginAction同目录下写两个验证文件,我试过一个可以,一个没有效果

相关推荐

    struts 2.0 验证框架

    综上所述,Struts 2.0的验证框架通过定义XML配置文件和资源文件,实现了对用户输入的有效性检查,提高了应用程序的安全性和用户体验。通过合理配置和使用,开发者可以构建出更加健壮和可靠的Web应用。

    Struts2.0视频教程+struts2.0中文教程

    Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0视频教程+struts2.0中文教程"包含的资源旨在...

    struts2.0的特点

    Struts2.0采用了拦截器(Interceptor)机制,这是一种非常强大的特性,允许开发者在Action执行前后进行一系列操作,如参数填充、验证、事务控制等。拦截器的设计遵循AOP(Aspect Oriented Programming)思想,可以...

    struts2.0用户验证

    struts2.0用户验证struts2.0用户验证struts2.0用户验证struts2.0用户验证struts2.0用户验证struts2.0用户验证struts2.0用户验证struts2.0用户验证struts2.0用户验证struts2.0用户验证struts2.0用户验证

    Struts2.0的api

    Struts2.0是Java Web开发中的一个热门框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建动态Web应用程序的强大工具。API文档是理解任何框架核心功能的关键,对于Struts2.0也不例外。让我们深入...

    Struts2.0 Jar包

    Struts2.0是一款强大的Java Web框架,它在MVC(Model-View-Controller)设计模式的基础上,提供了灵活且强大的架构来构建企业级的Web应用程序。这个“Struts2.0 Jar包”包含了所有必要的库文件,使得开发者可以便捷...

    三大框架中文文档中的struts2.0开发手册(程序员必看)

    5. **插件机制**:Struts2.0有丰富的插件库,如Freemarker和Velocity模板引擎,JSON和XML数据处理,以及各种验证框架的集成,大大增强了框架的功能和灵活性。 6. **异常处理**:Struts2.0提供了全局的异常处理机制...

    初识[Struts2.0]并[使用Struts2.0]进行SSH集成

    用户登录通常包括用户输入验证、数据库查询等操作,这些可以通过Struts2.0的Action实现,而数据库交互则通过Hibernate完成,Spring则负责连接管理、事务处理等。 在实际开发中,我们首先需要配置Struts2.0的struts....

    struts 2.0 详细配置

    ### Struts 2.0 详细配置解析 #### 一、Struts 2.0 简介 Struts 2.0 是一个基于 Java 的开源框架,用于开发 Web 应用程序。它继承了 Struts 1.x 的优点,并在架构上进行了改进,更加灵活且易于扩展。Struts 2.0 ...

    Struts2.0学习系列 以及 Struts2.0安装包

    Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0学习系列"旨在帮助初学者及进阶者深入理解并...

    Struts 2.0全攻略之Struts 2.0参考手册

    拦截器是Struts 2.0的一个核心特性,它们在Action执行前后执行,可以用于日志记录、权限验证、数据校验等。开发者可以通过自定义拦截器扩展框架功能。 6. **OGNL(Object-Graph Navigation Language)** Struts ...

    Struts_2.0从入门到精通

    Struts2.0引入了一系列新的表单标签,如、、等,它们提供了更丰富和灵活的表单元素,支持客户端验证和服务器端验证的无缝集成。 十三、Struts2.0与AJAX的融合 AJAX技术的兴起,为Web应用带来了全新的交互体验。...

    struts2.0环境配置

    Struts2.0是Java Web开发中一个非常重要的框架,它基于MVC(Model-View-Controller)设计模式,提供了一种结构化的解决方案,用于构建更健壮、可维护的Web应用程序。本教程将详细讲解如何在Myeclipse集成开发环境中...

    struts2.0英文文档

    ### Struts2.0 关键知识点解析 #### 一、Struts2.0 概述 Struts2.0 是一款基于 Java 的开源 Web 应用框架,它继承了 Struts1.x 的设计理念并在此基础上进行了大幅改进。Struts2.0 主要面向企业级应用开发,提供了一...

    Struts 2.0的Action讲解

    总的来说,Struts 2.0的Action模型通过`ActionSupport`类提供了一套完整的解决方案,包括业务逻辑处理、错误处理、验证和国际化等功能。开发者可以根据需求选择继承`ActionSupport`或自定义Action类,以实现更灵活的...

    struts2.0的基本jar包

    Struts2.0是一个强大的Java Web应用程序框架,它基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用的开发流程。这个压缩包包含的是Struts2.0的核心库和其他必要的JAR文件,这些文件对于创建一个基于...

    struts2.0源代码

    Struts2.0是Apache软件基金会的一个开源框架,主要用于构建基于Java EE的Web应用程序。它在原有的Struts1.x的基础上进行了重大改进,引入了更多现代Web开发的最佳实践和设计模式,提高了开发效率和代码可维护性。这...

    struts2.0所有jar包

    Struts2.0是Java Web开发中非常流行的一个MVC框架,它基于Model-View-Controller(模型-视图-控制器)设计模式,为开发者提供了强大的功能和灵活的架构。这个压缩包包含了Struts2.0框架运行所需的所有jar包,使得...

Global site tag (gtag.js) - Google Analytics