strust2提供了强大的校验框架。而strust2也可以分为客户端校验和服务器端校验。
1、 客户端校验。
客户端的校验也是依赖于服务器端的校验的,想要执行客户端校验,首先还是把服务器端的校验文件配置好。然后在在jsp页面的form中不能有自己的主题设置(theme),而且还要加一个属性validate="true"。才能执行客户端校验。但是客户端校验很弱。一般采用的是服务器端校验
2、 服务器端校验。
想要执行服务器端的校验,那么就要首先配置好校验文件。配置文件的位置与jsp页面的form的提交到的那个action类的同一包体下面。而且名字也是要一定的规范。比如说action名称为LoginAction,那么校验文件为:LoginAction-validation.xml。而这样写默认是在action中执行execute()方法的时候执行校验,但是如果你想执行在自己写的方法中去校验的话,那么就这么写LoginAction-login-validation.xml意思是在LoginAction类中执行login方法的时候,就会执行校验,但是如果此时你还存在LoginAction-validation.xml的话,那么LoginAction-validation.xml也还是会被执行校验的。
校验文件的开头不分为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
校验的内容参照为:
Xwork包下的com.opensymphony.xwork2下的validator/valudators中的default.xml
下面以登陆为例子:
在regiest.jsp
<s:fielderror cssStyle="color:red"/>
<!—校验错误的展现,默认的fielderror级别的错误-à
LoginAction类
public class LoginAction extends ActionSupport{
private int uid;
private String uname;
private String sex;
private int age;
private String email;
private Date birthday;
private String phone;
public LoginAction() {
}
@Override
public String execute() throws Exception {
return this.SUCCESS;
}
@Override
public void validate() {
}......set和get方法略
}
LoginAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<!-- 对uid的校验 -->
<field name="uid">
<field-validator type="required"><!-- 必填的 -->
<message>uid should be required!</message>
</field-validator>
<field-validator type="int">
<param name="max">10000</param>
<param name="min">1</param>
<message>uid should be between ${min} and ${max}</message>
</field-validator>
</field>
<!-- 对uname的校验 -->
<field name="uname">
<field-validator type="requiredstring"><!-- 必填的字符串 -->
<!--<param name="trim">true</param> 去掉空格,可以省略,默认为true -->
<message>uname should not be blank!</message>
</field-validator>
<field-validator type="stringlength">
<param name="maxLength">10</param>
<param name="minLength">6</param>
<message>
uname should be between ${minLength} and ${maxLength}
</message>
</field-validator>
</field>
<!-- 对sex的校验 -->
<field name="sex">
<field-validator type="requiredstring">
<message>sex should should be required!</message>
</field-validator>
</field>
<!-- 对age的校验 -->
<field name="age">
<field-validator type="int">
<param name="max">11</param>
<param name="min">80</param>
<message>age should be between</message>
</field-validator>
</field>
<!-- 对birthday的校验 -->
<field name="birthday">
<field-validator type="required"><!-- 必填的 -->
<message>birthday should not be blank!</message>
</field-validator>
<field-validator type="date">
<param name="max">2009-1-1</param>
<param name="min">1980-1-1</param>
<message>
birthday should be between ${min} and ${max}
</message>
</field-validator>
</field>
<!-- email的校验 -->
<field name="email">
<field-validator type="requiredstring"><!-- 必填的字符串 -->
<message>email should not be blank!</message>
</field-validator>
<field-validator type="email">
<message>email is error!</message>
</field-validator>
</field>
<field name="phone">
<field-validator type="requiredstring"><!-- 必填的字符串 -->
<message>phone should not be blank!</message>
</field-validator>
<field-validator type="regex"><!—正则表达式-à
<param name="expression">
^\(?(\d{3,4})\)?[-| ]?(\d{3,4})[-| ]?(\d{4})$
</param>
<message>phone is invalid!</message>
</field-validator>
</field>
</validators>
注意在jsp页面<s:fielderror cssStyle="color:red"/>取出现校验错误的值。
如果在LoginAction中的valdate方法中还定义的一个名称相同,但是值不同的错误。
比如说
public void validate() {
this.addFieldError("uname", "uname is error");
}
而如果在提交的时候校验uname真的出错,在jsp页面用<s:fielderror/>站下错误的时候。
uname的错误信息会得到两条(在校验文件如果对一个属性定义多个校验的时候。当校验到出错时,就不会再往下对该属性进行校验)。"uname is error"也是会被展现出来的。比校验文件的错误信息后展现。
现在对fielderror进行解析:fielderror其实是LinkHashMap。键为String类型的,而值为ArrayList类型的
消息资源国际化:
在LoginAction.properties配置文件中,是专门对应的LoginAction类的,在同一个包体下。
uid.invalid=\u7528\u6237\u7f16\u53f7\u51fa\u9519 \u7f16\u53f7\u5fc5\u987b\u5728 ${min} \u548c ${max}\u4e4b\u95f4
这里只写了一个。
因而得到在LoginValidate.xml配置文件中就改为:
<field name="uid">
<field-validator type="required"><!-- 必填的 -->
<message>uid should be required!</message>
</field-validator>
<field-validator type="int">
<param name="max">10000</param>
<param name="min">1</param>
<message key="uid.invalid">
</message>
</field-validator>
</field>
。。。。。。校验框架先实现到这。。。。。。
分享到:
相关推荐
在Struts1中,验证框架是处理用户输入数据校验的重要组成部分,它帮助开发者确保用户提交的数据符合预定义的规则,从而提高应用程序的安全性和用户体验。下面将详细介绍Struts1验证框架的使用。 首先,我们来看一下...
5. **拦截器**:拦截器是Struts2的一大特色,它允许开发者在Action调用前后插入自定义逻辑,比如日志记录、权限验证、数据校验等。在day01的课程中,你可能会学习如何定义和使用拦截器,以及如何在配置文件中配置...
在这个"基于Struts2 MVC框架的练习源程序"中,开发者可以学习到如何在Eclipse集成开发环境中配置和运行一个基于Struts2的应用,同时配合Tomcat服务器和SQL Server 2005数据库进行数据管理。 首先,我们需要了解...
这个压缩包“struts2.0”似乎包含了全面的Struts2练习代码,这将是一个学习和理解Struts2框架功能和实践操作的好资源。 Struts2的核心特性包括: 1. **Action类和ActionMapping**:在Struts2中,Action类是业务...
Struts2和Spring是两种非常重要的Java Web开发...通过这个"Struts2+Spring练习"项目,新手可以逐步掌握如何在实际项目中结合这两个框架,理解它们的协作方式,以及如何利用它们的强大功能来构建健壮的Java Web应用。
10. **表单验证**:Struts2提供了强大的表单验证功能,可以在Action类中编写校验逻辑,也可以使用XML或注解方式定义验证规则。 11. **模型驱动**:Struts2的模型驱动模式可以将Action类作为模型,将表单数据自动...
- 注册功能通常需要对用户输入进行校验,Struts2提供了内置的数据校验框架,可以使用注解或XML配置文件定义校验规则。 9. **Ajax异步请求**: - 提高用户体验,商品分类或者筛选功能可能采用Ajax技术,Struts2...
总的来说,"Struts2上的练习代码事例"旨在帮助开发者了解如何在实际项目中使用Struts2框架,包括创建Action、配置Action映射、使用拦截器、以及与视图交互等。通过深入研究这些代码,你可以更好地掌握Struts2的工作...
这个“Struts2练习”项目显然是一个学习或实践Struts2框架的实例,可能包含了部分功能的实现,但并未全部完成。 在MyEclipse环境下,开发者通常会利用其集成的开发工具来创建、配置和运行Struts2应用。MyEclipse是...
总的来说,这个"struts入门练习"涵盖了基础的Struts框架应用,包括Action的编写、异常处理、资源文件管理以及简单的用户交互逻辑。对于想要学习Struts的人来说,这是一个很好的起点,可以帮助他们逐步理解如何在实际...
在Struts2中,你可以利用ActionSupport类的validates()方法进行数据校验,而在Hibernate中,可以使用Transaction API来管理事务。 总的来说,这个练习项目将带你走过一个完整的Web应用开发流程,从需求分析到数据库...
这个"struts2练习源码"提供了完整的Struts2框架实践项目,适合初学者入门学习。在源码中,你将能够看到Struts2框架的核心组件和配置如何在实际应用中发挥作用。 首先,了解Struts2框架的基础知识至关重要。Struts2...
总的来说,"Struts练习 初学者入门"这个教程是Java开发者入门Struts的绝佳资源,通过实际操作,你可以系统地学习并掌握这一框架,为你的编程生涯添加一个重要的技能点。在实践中不断探索,相信你会在短时间内对...
在掌握Struts2和OGNL的基础上,开发者可以进一步学习Struts2的其他组件和特性,如标签库、异常处理、国际化支持、拦截器机制、输入校验、文件上传和下载等,这些都是构建复杂Web应用不可或缺的组件和功能。
4. **拦截器**:Struts2引入了拦截器机制,允许在请求处理流程中插入自定义逻辑,例如日志记录、权限验证等,提高了代码的复用性。 5. **异常处理**:全局异常处理机制使得开发者可以统一处理应用中的错误和异常,...
4. **Interceptor拦截器**:Struts2使用拦截器来增强Action的处理能力,例如日志记录、权限验证等。通过在配置文件中声明拦截器栈,可以实现灵活的业务逻辑控制。 5. **结果类型**:结果类型定义了Action执行后如何...
通过这些练习,你可以深入理解Struts框架的工作原理,掌握如何构建一个完整的Struts应用,同时提升你的Java Web开发技能。记得在实践中不断探索,查阅官方文档,参与社区讨论,以增强对Struts的理解和应用。
Struts2是Apache软件基金会的一个开源项目,是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。它的出现是为了改进Struts1框架的一些局限性,提供更强大的功能和更好的性能。Struts2的核心是...
在描述中提到的“输入校验”是Web开发中的重要环节,Struts2提供了多种方式进行输入验证。你可以通过注解或XML配置来定义校验规则,例如在Action类的方法参数上使用@Validated注解,或者在struts.xml中配置validate....