`
PerfectPlan
  • 浏览: 122319 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多

 

Struts2 -validate验证框架(客户端验证 及服务端验证)


一、为什么要使用struts2的validate验证框架

:使用struts2的验证框架,能够提高客户端提交的数据的安全性。通过验证,确保保存进数据库的信息是正确的

二、使用struts2的validate框架?

: 1.我们需要配置struts2项目的最基本的jar包。(validate验证框架是有"xwork-core"包提供的

: 2.使用struts2自带的validate验证有两种方法

 

a):使用代码实现 验证功能 (也就是重写ActionSupport中的validate()方法) 在validate方法中进行编写我们需

要的验证功能 这里需要提几点的就是:

1.当我们需要对action中的某一个指定的方法使用validate()方法验证时我们需要自定义一个validate

2.当我们使用自定义的validate方法时,最好将重写的ActionSupport的validate方法去掉 (这是为了避免

引起冲突,因为如果action类中存在重写的validate()方法 程序会自动调用我们自定义的validate方法 之

后再调用它 这样就验证了多次,非常不利于程序的效率。而且容易出现冲突)

3.在创建自定义的validate方法时需要注意该方法的 方法名! 该方法名由 validate+对应的表单提交的

action中的 执行方法名称(首字母大写)

附上一段代码:

	struts.xml:
	<action name="*/*" class="*" method="test">
       //这里的method指定action对象调用哪一个方法执行
				//..此处省略
	</action>
							
 对应的action类中的片段:
	public String test(){//action操作的方法
			//..此处省略
		return "";
		}  
								
	public void validateTest()
             //这是我们自定义的validate方法 (validateTest) 这便是方法名
	{			  //一定要记住大写test的首字母
			//..此处省略
	}
								
	@override
	Public String execute()//这是重写ActionSupport的方法
		{
			//..此处省略
			return "";
	}
								
	@override
	public void validate()//这是重写ActionSupport的方法  如果我们需要有
        //execute方法并且还要对它接收的数据信息进行验证
	{
         //那么我们可以将方法名改成 valiateExecute()便可以了
	//..此处省略
       }

         b):使用xml文件进行配置验证功能(建议使用xml配置文件进行validate的验证)

 

   : 1.需要使用到xwork-core包下的  xwork-validate.dtd(版本根据项目进行选择,不过大体相同)

: 2.关于使用Xml进行验证 的两种情况: 全局验证 和局部验证

a):关于全局验证

全局就是针对整个action对象进行xml验证

当我们使用全局验证时候需要在  action对象的同目录下创建一个xml配置文件

文件名是由 : action对象的名称+(-validation.xml)

b):关于局部验证

局部验证是针对action对象中的某一个方法进行xml验证

使用局部验证的时候同样要在 action对象的同目录下创建一个xml配置文件

不过使用局部验证需要在struts.xml 中进行配置

代码如下:(struts.xml)

<constant name="struts.enable.DynamicMethodInvocation" value="false" />

<package name="struts2" extends="struts-default">
				//这一个<action>主要针对整个action对象
	<action name="register"class="org.viancent.action.RegisterAction">
		<result name="success">/show.jsp</result>
		<result name="input"> /register.jsp</result>
	</action>
	//这个<action>主要针对action的某一个方法 (采用了通配符 * 与 {1} 的值是相同的)
        <action name="register_*" class="org.viancent.action.RegisterAction"method="{1}">
		<result name="success">/show.jsp</result>
		<result name="input"> /register.jsp</result>
	</action>
</package>

  //如果我们需要访问action类中的test方法 则表单上可以这样写 <s:action="register_test">

所以该validate框架的xml配置文件名就是:action对象名+(-register_test-validation.properties)

 

:3.使用struts2的validate框架有两种验证类型

a):在服务端进行验证。
b):在客户端进行验证。
: 1.如果需要使用validate框架在客户端进行验证的话,一定要使用 struts2 的s标签
并且<s:form> 表单的theme不能为:simple

下面给出一个实例:
	action对象:
   package org.viancent.action;
	import java.util.Date;
	import com.opensymphony.xwork2.ActionSupport;

	public class RegisterAction extends ActionSupport {
		private String username;
		private String password;
		private String repassword;
		private int age;
		private Date birthday;

		private String users;
		public String getUsers() {
			return users;
		}

		public void setUsers(String users) {
			this.users = users;
		}

		public String getUsername() {
			return username;
		}

		public void setUsername(String username) {
			this.username = username;
		}

		public String getPassword() {
			return password;
		}

		public void setPassword(String password) {
			this.password = password;
		}

		public String getRepassword() {
			return repassword;
		}

		public void setRepassword(String repassword) {
			this.repassword = repassword;
		}

		public int getAge() {
			return age;
		}

		public void setAge(int age) {
			this.age = age;
		}

		public Date getBirthday() {
			return birthday;
		}

		public void setBirthday(Date birthday) {
			this.birthday = birthday;
		}

		@Override
		public String execute() throws Exception {
			// TODO Auto-generated method stub
			return super.execute();
		}

		// 自定义的执行方法
		public String test() throws Exception {
			System.out.println("test method invoked!");
			// TODO Auto-generated method stub
			return super.execute();
		}

		// 自定义的校验方法
		public void validateTest() {
			System.out.println("validateTest method invoked!");
		}

		 @Override
		public void validate() {
		System.out.println("validate method invoked!");
		 if (null == this.getPassword()
		|| "".equals(this.getPassword()) || null == 
                this.getRepassword()
		 || "".equals(this.getRepassword())) {
		 return;
	        }

		 if (!this.getPassword().equals(this.getRepassword())) {
		 this.addFieldError("repassword",
		 "repassword should be same password");
		 }
		 }
	}
 struts.xml的信息:
			
<struts>
	<constant name="struts.enable.DynamicMethodInvocation" value="false" />

<package name="struts2" extends="struts-default">
<action name="register" class="org.viancent.action.RegisterAction">
	<result name="success">/show.jsp</result>
	<result name="input"> /register.jsp</result>
</action>
<action name="register_*" class="org.viancent.action.RegisterAction"
						method="{1}">
	<result name="success">/show.jsp</result>
	<result name="input"> /register.jsp</result>
</action>
</package>			
</struts>

 局部validate框架的xml配置信息(RegisterAction-register_test-validation.xml)

			
<validators>
	
	<field name="username"> //指明是对哪一个属性进行验证
	     <field-validator type="requiredstring"> //验证的类型
	     <param name="trim">true</param>
	     <message>username should be notblank!</message>
              //如果错误显示给客户端的信息
	</field-validator>
	<field-validator type="stringlength">
		<param name="minLength">6</param>
		<param name="maxLength">10</param>
		<message>username should be not between${minLength} and ${maxLength}</message>
	</field-validator>
	</field>

	<field name="age">
		<field-validator type="required">
		<message>age should be not blank!</message>
		</field-validator>

		<field-validator type="int">
		<param name="min">1</param>
		<param name="max">150</param>
		<message>age should be between ${min} and ${max}</message>
		</field-validator>
	</field>

	<field name="birthday">
		<field-validator type="required">
		<message>birthday should be not blank!</message>
		</field-validator>

		<field-validator type="date">
		<param name="min">1990-10-10</param>
		<param name="max">2011-3-14</param>
		<message>birthday should be between ${min} and ${max} </message>
				</field-validator>
	</field>
</validators>

 全局validate框架的xml配置信息(RegisterAction-validation.xml)

			
<validators>
		<field name="users">
			<field-validator type="requiredstring">
			<message>users should be not blank!</message>
			</field-validator>

			<field-validator type="stringlength">
			<param name="minLength">6</param>
			<param name="maxLength">10</param>
			<message>users should be between ${minLength} and ${maxLength}</message>
		       </field-validator>
		</field>
</validators>

 view 界面的jsp信息: 

	register.jsp:
				
	<body style="text-align: center">
		<s:form action="register_test">//服务端验证
		<s:textfield name="username" id="username" label="username"></s:textfield>
		<s:password name="password" id="password" label="password"></s:password>
		<s:password name="repassword" id="repassword" label="repassword"></s:password>
		<s:textfield name="age" id="age" label="age"></s:textfield>
		<s:textfield name="birthday" id="birthday" label="birthday"></s:textfield>
		<s:submit></s:submit>
		<s:reset></s:reset>
</s:form>

		<s:form action="register" validate="true">//客户端验证  validate="true"(关键点)
		<s:textfield name="users" label="users" id="users"></s:textfield>
		<s:submit></s:submit>
		</s:form>
	</body>

 show.jsp:

				
		<body>
			<s:property value="username"/>
			<s:property value="password"/>
			<s:property value="age"/>
			<s:property value="birthday"/>
			<s:property value="users"/>
		</body>

 这里说明一下 validate xml验证的规则

<field name=""></field>  //自动校验器
<validator type=""></validator> //非自动校验器
验证规则:
requiredstring  验证是属性是否为("")   不需要设置参数
required   验证是属性是否为(null) 不需要设置参数
int   验证属性是否为整数 可以这是在什么数之间 需要参数 (min,max)
stringlength     验证字符串的长度   可以设置字符串需要的长度 需要参数(minLength,maxLength)
date 验证对象是否在某时段  可以设置时间段 需要参数(min,max)
regex 使用正则验证
其他具体可以参看xwork-core包中的com.opensymphony.xwork2.validator.validators 下面的类以及
xwork-default.xml
分享到:
评论

相关推荐

    Struts2的validate验证框架

    这个validate验证框架中的actiionerror级别的错误的验证提示,并包含了如何在一个Action中处理多个业务逻辑,(struts1.x 中的DispatcheAction),例子比较简单,希望对大家学习struts有所帮助。

    Struts-Validate-Reset

    "Struts-Validate-Reset"主题主要关注的是在Struts验证框架中如何实现表单数据的重置操作。 验证(Validate)在Struts中通常是通过ActionForm类的子类来完成的。ActionForm是MVC模式中的模型层组件,它负责接收并...

    Struts 结合 Validate框架验证详解

    本文将深入探讨如何结合Validate框架在Struts中实现有效的数据验证。 首先,我们需要理解Struts中的验证流程。当用户提交表单时,Struts会调用ActionForm对象的validate()方法进行验证。这个方法通常是根据业务逻辑...

    struts2 -2.3.15.3-验证框架简单实现mode

    在Struts2的2.3.15.3版本中,集成的验证框架是其核心功能之一,帮助开发者确保用户输入的数据质量和安全性。本篇将详细讲解如何在Struts2中实现一个简单的验证框架模式。 首先,我们需要了解Struts2验证框架的基本...

    struts1.x使用common-validator验证框架

    此外,Struts1.x的验证框架不仅限于服务器端验证,也可以结合JavaScript进行客户端验证,以提高用户体验。客户端验证可以通过在JSP页面中引入Struts的JavaScript库,然后利用`&lt;html:javascript&gt;`标签生成相应的验证...

    struts的validate框架验证

    Struts的Validate框架是Java Web开发中用于处理用户输入验证的一种工具,它是Struts框架的重要组成部分,主要用于在MVC(Model-View-Controller)架构中确保用户提交的数据满足应用程序设定的规则。在MyEclipse 6.0...

    struts-验证框架

    总的来说,`struts-validate`标签表明这是一个关于Struts验证框架的项目,包含的基础文件`validator_1_1_3.dtd`和`validator-rules.xml`是确保框架正常运行的关键组件。理解和熟练运用这个框架,对于提高Java Web...

    Struts的验证框架Validate使用[2]

    Struts的验证框架Validate是Java Web开发中一个关键的组件,尤其在构建MVC(Model-View-Controller)架构的应用程序时。这个框架主要用于确保用户输入的数据满足预定义的业务规则,从而提升应用的安全性和数据的准确...

    struts2验证框架简单示例

    在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...

    struts2 validate 验证

    在Struts2中,`validate`是用于处理用户输入验证的重要机制,它可以帮助开发者确保从客户端提交的数据满足预设的业务规则,从而提高应用程序的安全性和用户体验。 1. **Struts2 验证基础** Struts2的验证分为两种...

    struts2最全验证框架

    ### Struts2 最全验证框架知识点详解 #### 一、Struts2 验证框架概述 Struts2 是一个基于MVC模式的Java Web开发框架,它提供了丰富的功能来简化Web应用的开发过程。其中,Struts2的验证框架是其重要的组成部分之一...

    struts2验证框架示例

    这个“struts2验证框架示例”提供了深入理解并实际操作Struts2验证功能的机会。 首先,让我们了解一下Struts2验证框架的基本概念。验证框架基于两个主要组件:Validation拦截器和Action类中的验证配置。Validation...

    自定义 validate验证 struts1框架

    自定义`validate`验证是Struts1框架的一个关键特性,允许开发者根据业务需求定制特定的验证规则。通常,这个过程包括以下几个步骤: 1. **创建Validator ActionForm**:在Struts1中,表单数据通常是通过ActionForm...

    struts-validate

    `struts-validate`机制是Struts框架中非常关键的一部分,它使得数据验证过程变得既灵活又强大。通过合理的配置,可以轻松地实现各种复杂的验证逻辑,确保只有合法的数据才能被提交到服务器端进一步处理。这不仅提高...

    Struts的验证框架Validate使用[1]

    Struts的验证框架Validate是Apache Struts框架中的一个重要组成部分,主要用于处理用户输入的数据验证。在Web应用程序中,数据验证是确保用户提交的信息符合业务规则的关键步骤,防止非法数据进入数据库或引发程序...

    Struts1.x的验证框架示例

    2. **配置验证框架** 验证框架的配置通常在`struts-config.xml`文件中完成。你需要定义一个或多个`action-mappings`,并为每个映射指定一个对应的验证配置文件(通常是`.validate`文件),如`loginAction-validate....

    Struts2用validate方法进行表单验证

    Struts2作为一款流行的Java Web框架,为开发者提供了强大的MVC(Model-View-Controller)支持,其中表单验证是其重要组成部分。在Struts2中,我们可以利用validate方法进行高效且灵活的前端数据验证,确保用户输入的...

    Struts的验证框架Validate使用续一

    Struts的验证框架Validate是Java Web开发中一个重要的组件,它是Apache Struts框架的一部分,用于处理用户输入数据的验证。这个框架提供了一种简洁而强大的方式来确保从表单提交的数据满足应用程序设定的规则和约束...

Global site tag (gtag.js) - Google Analytics