`
dashi129
  • 浏览: 37950 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts2中的数据校验

阅读更多

一. ActionSupport是个工具类,他实现了Action, Validatable等接口, Validatable提供validate()方法进行数据验证.Action只要继承ActionSupport类,重写validate()方法就可以进行数据验证

二. 校验的流程
     首先,Struts框架对输入数据进行类型转换,然后再进行数据校验,如果类型转换与数据校验都没有错误发生, 就进入execute(),否则请求将被转发到input视图

三. 注册实例
    首先新建RegistAcion.java

package com;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class RegistAction extends ActionSupport {
	private String userName;
		
	private Integer age;
	
	private Date birthday;
	
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	@Override
	public String execute() throws Exception {
		System.out.println("注册成功");
		return SUCCESS;
	}
	@Override
	public void validate() {
		if("".equals(userName)){
			addFieldError("userName", "username is empty");
		}
		if(null != age){
			if(1 > age || 150 < age){
				addFieldError("age", "age invalid");
			}
		}
	}
}

 配置Action

<action name="regist" class="com.RegistAction">
      <result name="success">/welcome.jsp</result>
      <result name="input">/regist.jsp</result>
 </action>

 接着是注册页面和注册成功页面

regist.jsp

<body>
  	<form action="regist.action" method="post">
  		<s:fielderror></s:fielderror>
  		<table><tr>
  				<td>userName:</td>
  				<td>
  					<input type="text" name="userName">
  				</td>
  			</tr>
  			<tr>
  				<td>age:</td>
  				<td>
  					<input type="text" name="age">
  				</td>
  			</tr>
  			<tr>
  				<td>birthday:</td>
  				<td>
  					<input type="text" name="birthday">
  				</td>
  			</tr>
  			<tr>
  				<td colspan="2">
  					<s:submit value="注册"></s:submit>
  				</td>
  			</tr>
   	</form>
  </body>

 如果不输入userName, age输入为abc,会提示
 Invalid field value for field "age".
 username is empty

1. 其中Invalid field value for field "age" 信息是struts2通过内置的类型转换器进行类型转换时,如果不能成功转换, struts2框架自动生成一条错误信息,并将该错误信息放到addFieldError里面,这种默认的输出信息格式是在  xwork-2.0.4.jar中定义的.  com/opensymphony/xwork2/xwork-messages.properties文件中有一条xwork.default.invalid.fieldvalue=Invalid field value for field "{0}".

2. 这是一种全局的错误提示方式,整个系统中只要是字段类型转换错误都会这样提示,我们也可以改变这种输出格式,只要在全局的国际资源文件中重写xwork.default.invalid.fieldvalue就可以了.

实现方式:
在struts.xml中加入<constant name="struts.custom.i18n.resources" value="messageResource"></constant> (此处i18n,不是l,是1)
或者也可以在struts.properties中加入struts.custom.i18n.resources=messageResource
指定国际化资源文件名为messageResource. Properties

新建messageResource. Properties资源文件并添加数据xwork.default.invalid.fieldvalue={0} failure
修改之后字段类型转换错误提示为 : {0} failure

3 所有的类型转换失败后,struts2会将基本类型设置为0,对象类型设置为null,这里的age的类型为Integer,当类型转换失败age值为null,如果age的类型为int,那么转换失败后值为0

4.这种提示信息不够友好,也可以定义局布的提示信息,为每一个Action新建一个properties文件,文件名为XXX.properties(Action名.properties)

实现方式:新建RegistAction.properties并添加
invalid.fieldvalue.age=age error
invalid.fieldvalue.birthday=birthday error
其中age和birthday分别为字段的名称

四.
Struts2也提供类似BaseDispatchAction的功能

package com;
import com.opensymphony.xwork2.ActionSupport;
public class Regist2Action extends ActionSupport {
	private String userName;
		
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String regist() throws Exception {
		System.out.println("注册成功-regist");
		return SUCCESS;
	}
	
	public void validateRegist() {
		if(userName.equals("")){
			addFieldError("userName", "请输入用户名-registValidate");
		}
	}
}

  <action name="regist2" class="com.Regist2Action" method="regist">
     <result name="success">/welcome.jsp</result>
     <result name="input">/regist2.jsp</result>
   </action>

指定了method为regist,当请求时会执行regist(),不会再去执行默认的execute()方法了,
validateRegist()方法是专门针对regist校验的.(格式为validate+方法名)

分享到:
评论

相关推荐

    struts2 简单数据校验

    在Struts2中,数据校验是一个重要的功能,它确保用户输入的数据符合预设的规范,从而保证系统的稳定性和安全性。这篇博客“Struts2 简单数据校验”可能详细介绍了如何在Struts2框架中实现对用户输入的有效性验证。 ...

    struts2的数据校验

    在Struts2中,数据校验是一项至关重要的功能,它确保了用户提交的数据符合预定义的规则和格式,从而提高应用的安全性和数据质量。下面我们将详细探讨Struts2中的数据校验机制。 首先,数据校验是Web应用开发中的...

    Struts2简单数据校验源码 20120417

    在Struts2中,数据校验是确保输入数据正确性和完整性的关键环节,它可以帮助开发者预防潜在的数据错误,提高应用的健壮性。本资料"Struts2_1100_SimpleDataValiation"提供了关于Struts2简单数据校验的源码,这将有助...

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

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

    Struts2 校验器

    在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...

    Struts2简单数据校验源码

    在Struts2中,数据校验是一个重要的功能,它确保了从用户界面接收到的数据符合业务规则,从而避免了无效或错误的数据进入系统。本资料“Struts2_1100_SimpleDataValiation.rar”提供了关于Struts2简单数据校验的源码...

    Struts 2 数据校验功能及校验问题的解决方案

    在Struts 2中,数据校验是实现业务逻辑的重要组成部分,确保输入的数据符合预设规则,从而提高应用程序的稳定性和安全性。数据校验功能是通过Struts 2的ActionSupport类和其他相关组件来实现的。 首先,...

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

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

    Struts2的输入校验

    通过这种方式,开发者可以轻松地在Struts2中实现输入校验,既保证了数据的正确性,又提高了应用的安全性。不仅如此,Struts2的灵活性还允许开发者扩展和定制自己的校验器,以满足不同项目的需求。总的来说,Struts2...

    Struts2输入校验总结

    输入校验的流程在Struts2中是结构化的,涉及多个步骤: 1. **类型转换**:首先,Struts2框架使用类型转换器将HTTP请求中的字符串参数转换为相应的Java类型,如Integer、Date等,并将这些值设置为Action类的属性。 ...

    Struts2中的validation_多国语言版 国际化i18n+struts2数据校验.zip

    在Struts2中,数据校验是确保输入数据有效性和安全性的重要环节。本资料包聚焦于Struts2中的数据校验以及国际化(i18n)支持。 首先,我们来探讨"Struts2中的validation_多国语言版",这是Struts2的数据校验功能。...

    Struts2数据校验与国际化

    在Struts2中,数据校验主要分为三类: 1. `validate()` 方法校验:这是最基本的验证方式,通常在Action类中定义。当用户提交表单时,Struts2会自动调用该方法,对所有字段进行验证。开发者可以在该方法中编写自定义...

    struts2数据校验

    根据提供的代码示例,我们可以深入探讨Struts2中的数据校验技术。 ### Struts2数据校验原理 Struts2的数据校验主要通过配置文件(通常为XML格式)进行定义,这些配置文件指定了哪些字段需要校验,以及具体的校验...

    struts2标签+校验+SSH

    与Struts1相比,Struts2具有显著的优势,包括更少的侵入性设计、支持AOP编程的拦截器、类型转换器、多样的表现层技术以及更灵活的数据校验机制。 首先,Struts2的无侵入式设计使得应用程序不再紧密依赖Servlet API...

    struts2 类型转换 数据校验

    在Struts2中,类型转换和数据校验是两个关键的特性,它们确保了用户输入的数据能够准确无误地被处理和验证,从而提高了应用的安全性和可靠性。 **类型转换(Type Conversion)** 在Struts2中,类型转换是自动进行...

    Struts2数据校验

    Struts2 数据校验是Java Web开发中一个重要的实践领域,尤其对于保证应用程序的数据质量和安全性至关重要。Struts2,作为一款流行的MVC框架,提供了一套强大的数据验证机制,允许开发者在用户输入提交到服务器之前...

    struts2中的输入校验

    在Struts2中,输入校验是确保用户提交的数据符合预设规范的重要环节,可以防止非法数据进入系统,保护数据的完整性和安全性。本文将详细探讨Struts2中的输入校验机制。 首先,Struts2提供了两种主要的校验方式:...

    struts2 数据校验

    Struts2 数据校验是Java Web开发中一个关键的组件,它主要用于确保应用程序接收到的数据是合法、有效的,从而防止因用户输入错误或恶意数据导致的问题。Struts2框架提供了强大的数据验证机制,使得开发者可以方便地...

    struts2输入校验

    本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。客户端校验主要通过JavaScript在用户端进行,可以提供即时反馈,但...

Global site tag (gtag.js) - Google Analytics