### Struts2校验框架详解 #### 一、概述 Struts2作为一款流行的Java Web应用框架,提供了丰富的功能来支持开发人员构建高效且可维护的应用程序。其中,Struts2校验框架(Validation Framework)是该框架的核心特性之一,主要用于确保用户输入的数据符合预期的格式或范围,从而有效避免因数据不规范而引发的各种问题。 #### 二、Struts2校验框架的基本概念 在深入了解Struts2校验框架之前,我们首先需要了解几个基本的概念: 1. **DTD(Document Type Definition)**:文档类型定义,用于规定XML文件的结构。例如,在Struts2校验配置文件中,DTD定义了哪些元素可以被包含以及它们应该如何被组织。 2. **Validator**:校验器,用于实现具体的校验逻辑。在Struts2中,可以通过配置不同的校验器来实现对各种数据类型的校验。 3. **Field Validator**:字段校验器,用于校验表单中的具体字段。每个字段校验器都有特定的类型,如`requiredstring`表示必填字段,`stringlength`表示限制字符串长度等。 4. **Param**:参数,用于传递给校验器的信息。这些参数通常包括字段名称、校验类型、最大值、最小值等。 5. **Message**:消息,当校验失败时显示给用户的提示信息。 #### 三、Struts2校验框架的配置与使用 接下来,我们将通过一个具体的例子来深入理解Struts2校验框架的配置和使用方法。 ##### 3.1 配置文件 Struts2校验框架的配置文件通常命名为`validation.xml`,并遵循特定的DTD格式。例如,以下是一段典型的校验配置示例: ```xml <!DOCTYPE validators PUBLIC "-//OpenSymphonyGroup//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名不能为空</message> </field-validator> <field-validator type="stringlength"> <param name="trim">true</param> <param name="maxLength">8</param> <param name="minLength">3</param> <message>用户名长度应在3到8之间</message> </field-validator> </field> <field name="birthday"> <field-validator type="required"> <message>生日不能为空</message> </field-validator> <field-validator type="date"> <param name="min">1987-01-01</param> <param name="max">2010-12-12</param> <message>生日应在1987-01-01到2010-12-12之间</message> </field-validator> </field> </validators> ``` 在这个示例中: - `username`字段必须填写,并且长度需在3到8个字符之间; - `birthday`字段同样必须填写,并且日期需在1987年1月1日到2010年12月12日之间。 ##### 3.2 使用方式 为了使Struts2框架能够识别到这些校验规则,需要在对应的Action类中指定使用这些校验规则。通常情况下,Struts2会根据Action类名来查找相应的`validation.xml`文件。 例如,对于一个名为`UserAction`的Action类,其对应的校验配置文件应该命名为`UserAction-validation.xml`。这样,当用户提交表单时,Struts2框架会自动根据该文件中的规则进行校验,并在失败时返回错误信息。 #### 四、Struts2校验框架的高级用法 除了上述基本的校验配置之外,Struts2校验框架还支持许多高级用法,如动态校验、自定义校验器等,以满足更加复杂的业务需求。 ##### 4.1 动态校验 动态校验是指根据运行时的数据来决定是否执行校验逻辑。例如,可以根据某个字段的值来判断是否需要校验另一个字段。 ##### 4.2 自定义校验器 除了内置的校验器之外,Struts2还允许开发者自定义校验器,以实现更复杂的校验逻辑。自定义校验器可以通过继承`com.opensymphony.xwork2.validator.validators.AbstractValidator`类来实现,并覆盖`validate`方法来编写具体的校验逻辑。 ##### 4.3 错误信息的国际化处理 在实际应用中,往往需要将错误信息进行国际化处理,以便不同语言环境下的用户都能正确理解。这可以通过在`message`标签中使用`{}`占位符来实现,然后在资源文件中定义具体的翻译文本。 #### 五、总结 Struts2校验框架为开发者提供了一套强大而灵活的数据校验机制,通过简单的配置即可实现复杂的数据校验逻辑。熟练掌握其使用方法,不仅能提高Web应用程序的质量,还能极大地提升开发效率。
配置文件中根节点为validators,下面包含一个或多个field或validator节点,既字段校验和非字段校验。
1、字段校验(字段优先)
简单的说就是:要校验什么属性-->用什么去校验这个属性
一个字段校验的配置类似如下:
代码
<!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="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="trim">true</param>
<param name="maxLength">8</param>
<param name="minLength">3</param>
<message>用户名长度应该在${maxLength}到 ${minLength}之间 </message>
</field-validator>
</field>
对一个普通方法(非execute方法)的校验:
ClassName--methodName-validation.xml
- 粉丝: 0
- 资源: 54
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助