Struts校验可以分为两种类型:Annotation型,XML配置型
Annotation型主要使用Annotation来配置Action中的属性,这里我们做过多的介绍,需要看的请参看我的其他相关文章。XML配置型主要是指,使用XML来描述配置信息,之后提供给Struts框架做校验。使用Struts2,XML配置型的校验可以使用三种方式:普通的服务器端校验方式,客户纯JavaScript方式端校验,和Ajax方式的校验。
普通的服务器端校验方式:
客户端提交信息到服务器,在服务器上使用XML配置信息,校验客户端提交的信息,错误的情况下,返回input页面,显示校验错误信息。
客户端纯JavaScript校验方式:
在输入画面上,根据XML文件中的配置内容生成对应的JavaScript校验脚本,在提交数据的时候首先使用这些生成的JavaScript校验输入信息,错误情况下在画面上显示错误信息,不需要向服务器提交内容,只有输入数据校验正确的情况下才向服务器提交请求。这种方式的校验不支持所有Struts2内置的校验,只支持一部分校验:
required validator
requiredstring validator
stringlength validator
regex validator
email validator
url validator
int validator
double validator
Ajax方式校验
在提交请求的时候,首先使用AJAX的方式将数据提交到服务器,在校验出错的情况下在页面显示错误信息,但是不刷新页面,在校验成功的情况下,才向服务器提交请求。
三种方式比较
普通的服务端校验方式 客户端纯JavaScript Ajax方式
位置 服务器 客户端 服务器
是否刷新页面 是 否 否
校验代码 Java JavaScript Java
具体实现 1 定义Action类
Action.java
2 定义配置文件
Action-validation.xml
3 在struts.xml中定义action,注意由于使用了validation,所以必须定义input名字的result。
<action name="" class="">
<result></result>
<result name="input"></result>
</action>
4 定义JSP页面的Form,例如:
<s:form action="quizAction" >
<s:textfield label="Name" name="name"/>
<s:textfield label="Age" name="age"/>
<s:textfield label="Favorite color" name="answer"/>
<s:submit/>
</s:form>
与“普通的服务端校验方式”基本相同,但是需要在form定义的时候添加validate="true",例如:
<s:form action="quizAction" validate="true">
<s:textfield label="Name" name="name"/>
<s:textfield label="Age" name="age"/>
<s:textfield label="Favorite color" name="answer"/>
<s:submit/>
</s:form>
与“普通的服务端校验方式”基本相同,但是需要做如下修改:
1 安装dojo plugin
2 JSP中使用dojo plugin
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
3 在head内部追加head标签(引入dojo的js库)
<sx:head />
4 修改form定义
<s:form method="post" theme="ajax" action="quizAjax" id="form">
<s:textfield label="Name" name="name" />
<s:textfield label="Age" name="age" />
<s:textfield label="Favorite color" name="answer"/>
<sx:submit validate="true" />
</s:form>
说明:struts-dojo-plugin在2.1.0的时候可能会Release。现在使用需要从Subversion中去除2.1.0SNAPSHOT代码:
svn http://svn.apache.org/repos/asf/struts/struts2/trunk
代码示例
// QuizAction 类
package example;
import com.opensymphony.xwork2.ActionSupport;
/**
* Created by IntelliJ IDEA.
* User: ma.zhao@dl.cn
* Date: 2007-9-8
* Time: 13:58:16
* To change this template use File | Settings | File Templates.
*/
public class QuizAction extends ActionSupport {
private static final long serialVersionUID = -7505437345373234225L;
private String name;
private int age;
private String answer;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
public String execute() {
return SUCCESS;
}
}
// QuizValidation.xml 校验配置文件
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<message>You must enter a name</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">13</param>
<param name="max">19</param>
<message>Only people ages 13 to 19 may take this quiz</message>
</field-validator>
</field>
</validators>
// struts.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="example" namespace="/example" extends="struts-default">
<action name="quizAction" class="example.QuizAction">
<result name="input">/example/quiz-ajax.jsp</result>
<result>/example/quiz-success.jsp</result>
</action>
</package>
</struts>
// JSP 文件
<%--
Created by IntelliJ IDEA.
User: ma.zhao@dl.cn
Date: 2007-9-8
Time: 14:02:17
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>Quiz Action Validation</title></head>
<body>
<s:form action="quizAction" namespace="/example" validate="true">
<s:textfield label="Name" name="name"/>
<s:textfield label="Age" name="age"/>
<s:textfield label="Favorite color" name="answer"/>
<s:submit/>
</s:form>
</body>
</html>
特别说明(Ajax Validation):
为什么使用AJAX 校验?
纯的JavaScript校验不刷新页面,但是也不能使用所有的Struts2校验方法;服务端校验可以使用所有Struts2的校验方法,但是需要刷新页面。
Struts2 Ajax校验,既不需要刷新页面,又可以使用Struts2内置的所有的校验方法,所以我们比较倾向于使用Ajax校验。
分享到:
相关推荐
### 常用Struts校验器解析 在Java Web开发中,Struts框架因其强大的MVC架构支持而被广泛采用。其中,表单验证是Web应用开发中的一个关键环节,Struts通过其内置的验证机制提供了丰富的校验功能。本文将详细介绍...
在这个“一个简单的Struts校验例子”中,我们将探讨如何在Struts框架中实现数据验证,这对于确保用户输入的正确性和安全性至关重要。 在Web应用程序中,数据验证通常在客户端和服务器端进行。客户端验证可以提供...
本资源“Struts编程之struts校验源代码”提供了一个完整的示例,帮助开发者深入理解Struts框架中的数据验证机制。 在Struts框架中,数据验证是非常重要的一环,它确保了用户输入的数据符合预设的规则,防止了无效或...
这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架是基于Apache Commons Validator库的,它允许开发者定义一系列的验证规则来检查用户的输入。这些规则可以是简单...
在用户注册登录的场景中,Struts 提供了强大的验证功能,通过校验器(Validator)来确保用户输入的数据符合预设的规则,从而提高应用的安全性和用户体验。 在这个例子中,我们关注的是如何使用Struts的校验框架来...
Struts2是一个流行的Java web开发框架,它提供了一套强大的输入校验机制,确保用户提交的数据符合业务逻辑的要求。在本文中,我们将深入探讨Struts2的输入校验功能,包括手动输入校验和基于验证框架的输入校验。 ##...
总之,Struts2的数据校验是其强大功能之一,结合XWork框架,可以有效地保证数据的质量和应用的安全性。对于初学者,通过实践这个项目,不仅可以学习到如何配置和使用Struts2的验证机制,还能提升对Web开发中数据校验...
### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...
struts2校验器,字段,非字段校验器的语法规则……
Struts2作为一款流行的Java Web开发框架,提供了一套强大的校验框架,使得开发者能够方便地对用户输入数据进行验证,确保数据的准确性和安全性。本文将深入探讨Struts2校验框架的应用,包括其核心概念、配置方式、...
本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。客户端校验主要通过JavaScript在用户端进行,可以提供即时反馈,但...
Struts2提供了多种方式进行输入校验,包括Action级别校验、拦截器级别校验以及基于Validator框架的校验。 二、Action级别校验 Action级别校验是在Action类中定义校验逻辑,通常通过在Action类的属性上添加注解实现...
Struts2_02_Verify这个压缩包文件可能包含了关于Struts2中使用直接编码方式进行校验的示例代码和教程,通过学习和理解这些示例,开发者可以更好地掌握Struts的校验机制,并对比理解更现代的校验方式。
Struts2是一个流行的Java web框架,它为开发者提供了丰富的功能,包括输入校验。输入校验是确保应用程序安全性和数据完整性的关键环节,Struts2为此提供了强大的支持。以下是关于Struts2输入校验的详细解释: 首先...
### Struts2校验框架使用心得 #### 一、Struts2校验框架概述 Struts2是一款基于Java的企业级Web应用开发框架,它能够帮助开发者构建出结构清晰、易于维护的应用程序。其中,Struts2提供的校验框架是其核心特性之一...
在Struts2中,输入校验是确保用户提交的数据符合预设规范的重要环节,可以防止非法数据进入系统,保护数据的完整性和安全性。本文将详细探讨Struts2中的输入校验机制。 首先,Struts2提供了两种主要的校验方式:...
struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架struts2.0的数据校验框架