`

struts2 基于XML配置方式实现输入校验

 
阅读更多

对action的所有方法进行输入校验

 

使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一包下,文件取名格式为:ActionClassName-validation.xml,其中ActionClassName为action的简单类名(不包括包名),-validation为固定写法。如果action类为com.siln.action.PersonAction,那么文件该取名为:PersonAction-validation.xml。

 

    PersonAction-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
  		"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
  		"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
	<field name="username">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>姓名不能为空</message>
		</field-validator>
	</field>
	<field name="mobile">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>手机号不能为空</message>
		</field-validator>
		<field-validator type="regex">
			<param name="expression"><![CDATA[^1[358]\d{9}]]></param>
			<message>手机号码格式不正确</message>
		</field-validator>
	</field>
	
</validators>

 

  <field>指定action中要校验的属性,<field-validator>指定校验器,上面指定的校验器requirestring是由系统提供的,系统提供了能满足大部分校验需求的校验器,这些校验器的定义可以在xwork-2.x.jar中的com.opensymphony.xwork2.validator.validators下的default.xml中找到。

   <message>为校验失败后的提示信息,如果需要国际化,可以为message指定key属性,key的值为资源文件中的key。

     在这个校验文件中,对action中字符串类型的username属性进行校验,首先要求调用trim()方法去掉空格,然后判断用户名是否为空。

 

package com.siln.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class PersonAction extends ActionSupport{
  
	private String username;
	private String mobile;
	
	public String update() {
		ActionContext.getContext().put("message", "更新成功");
		return "success";
	}
	
	public String save() {
		ActionContext.getContext().put("message", "保存成功");
		return "success";
	}
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
}

 

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首页</title>
</head>
<body>
<s:fielderror></s:fielderror>
 <form action="${pageContext.request.contextPath}/person/personAction_save.action" method="post">
 姓名:<input type="text" name="username"><br>
 手机号:<input type="text" name="mobile"><br>
 <input type="submit" value="提交">
 </form>
</body>
</html>

 

 

 

基于XML配置方式对指定action方法实现输入校验

当校验文件的取名为ActionClassName-validation.xml时,会对 action中的所有处理方法实施输入验证。如果你只需要对action中的某个action方法实施校验,那么,校验文件的取名应为:ActionClassName-ActionName-validation.xml,其中ActionName为访问该action的名称。例如:在实际应用中,常有以下配置:
<action name="user_*" class="cn.itcast.action.UserAction" method="{1}“ >
 <result name="success">/WEB-INF/page/message.jsp</result>
 <result name="input">/WEB-INF/page/addUser.jsp</result>
</action>
UserAction中有以下两个处理方法:
public String add() throws Exception{
   ....
}
public String update() throws Exception{
   ....
}
要对add()方法实施验证,校验文件的取名为: UserAction-user_add-validation.xml
要对update()方法实施验证,校验文件的取名为: UserAction-user_update-validation.xml

 


基于XML校验的一些特点

当应用为某个action提供了两种规则的校验文件ActionClassName-validation.xml和ActionClassName-ActionName-validation.xml,系统按下面顺序寻找校验文件:
1、ActionClassName-validation.xml
2、ActionClassName-ActionName-validation.xml
系统寻找到第一个校验文件时还会继续搜索后面的校验文件,当搜索到所有校验文件时,会把校验文件里的所有校验规则汇总,然后全部应用于action方法的校验。如果两个校验文件中指定的校验规则冲突,则只使用后面文件中的校验规则。

当action继承了另一个action,父类action的校验文件会先被搜索到。

假设UserAction继承BaseAction:
<action name="user" class="cn.itcast.action.UserAction" method="{1}">
</action>
访问上面action,系统先搜索父类的校验文件:BaseAction-validation.xml, BaseAction-user-validation.xml,接着搜索子类的校验文件: UserAction-validation.xml, UserAction-user-validation.xml。应用于上面action的校验规则为这四个文件的总和。

分享到:
评论

相关推荐

    Struts2输入校验总结

    综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。

    基于XML配置方式实现对action的所有方法进行输入校验

    通过上述步骤,我们实现了基于XML配置的方式对Struts2框架中的Action类的所有方法进行输入数据校验的功能。这种方法不仅简化了开发过程,还使得校验逻辑更加清晰易懂,有助于提高应用程序的整体质量和可维护性。在...

    23基于XML配置方式实现对指定action方法校验.zip

    通过上述步骤,我们可以利用Struts2的XML配置方式实现对指定Action方法的校验,从而保证输入数据的有效性和一致性,提高应用程序的质量和用户体验。理解并熟练掌握这种校验机制对于任何Struts2开发者来说都是非常...

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

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

    struts2的输入校验

    struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...

    struts2输入校验深入总结

    Struts2提供了多种方式进行输入校验,包括Action级别校验、拦截器级别校验以及基于Validator框架的校验。 二、Action级别校验 Action级别校验是在Action类中定义校验逻辑,通常通过在Action类的属性上添加注解实现...

    Struts2的输入校验

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

    struts2输入校验

    Struts2提供了内置的验证框架,基于XML配置或者注解实现。这个框架允许开发者定义一组规则来检查用户提交的数据,这些规则可以在Action类中应用。 2. **XML输入校验**: - **创建校验文件**:首先,你需要创建一...

    Struts2 校验器

    3. **配置校验规则**:Struts2的校验规则可以通过XML或注解方式定义。XML方式通常在struts.xml或相应的action类配置文件中定义,而注解方式则直接在Action类的属性上标注,例如使用`@RequiredString`、`@Size`等。 ...

    22基于XML配置方式实现对action的所有方法进行校验.zip

    Struts2提供了两种校验方式:基于注解的校验和基于XML的校验。这里我们关注基于XML的方式。在Struts2的配置文件中,我们可以添加一个`&lt;validators&gt;`元素来定义全局的验证规则,或者在每个Action内定义特定的校验规则...

    struts2中的输入校验

    - **XML配置文件**:Struts2支持基于XML的校验配置文件,分为局部校验配置文件和全局校验配置文件。局部校验文件针对单个Action类,而全局校验文件适用于整个应用。配置文件内容包括字段校验(field validation)和...

    Struts2 输入校验

    Struts2提供了多种进行输入校验的方式,包括Action级别校验、Validator框架校验、拦截器校验以及使用JSR303/JSR349 Bean Validation标准。这些方法可以单独使用,也可以结合使用,以满足不同项目的需求。 1. Action...

    struts2输入校验总结

    总结,Struts2的输入校验机制提供了手动和自动两种方式,结合配置文件和内置校验器,能够实现灵活且强大的数据校验,有效地防止了非法数据的流入,提升了系统的安全性。在实际开发中,开发者可以根据业务需求选择...

    使用struts2进行输入校验

    本篇文章将详细介绍如何在Struts2中进行输入校验,包括两种主要实现方式:使用Action中的`validate()`方法和使用XML文件。 1. 使用Action中的`validate()`方法: 在Struts2中,每个Action类都可以包含一个名为`...

    struts2的数据校验

    Struts2提供了多种数据校验方式,包括基于注解的校验、基于XML配置的校验和自定义校验。 1. **基于注解的校验**: Struts2集成Spring的Validation框架,允许开发者在Action类的属性上使用JSR303/JSR349(Bean ...

    struts2基于xml验证(最常用的三种类型String、Date、int验证).doc

    综上所述,Struts2的XML验证机制为开发者提供了一套强大的工具,用于处理各种数据类型的输入验证。通过对String、Date、int三种常见类型的具体分析,我们可以看出,Struts2不仅支持基本的非空和范围检查,还允许...

Global site tag (gtag.js) - Google Analytics