在web应用中针对表单进行输入校验是必不可少的,最近参考《轻量级Java EE企业应用实战》,整理了下关于struts2中进行输入校验的知识,如下:
Struts 2提供了基于验证框架的输入校验,在这种校验方式下,所有的输入校验只需要编写简单的配置文件,Struts 2的验证框架将会负责进行服务器校验和客户端校验。
下面应用将会示范如何利用Struts 2的校验框架进行输入校验。使用Struts 2的校验框架进行校验无须对程序代码进行任何改变,只需编写校验规则文件即可,校验规则文件指定每个表单域应该满足怎样的规则。
本应用所使用的表单代码如下:
<s:form action="regist">
<s:textfield name="name" label="用户名"/>
<s:textfield name="pass" label="密码"/>
<s:textfield name="age" label="年龄"/>
<s:textfield name="birth" label="生日"/>
<s:submit value="注册"/>
</s:form>
上面粗体字代码定义了4个表单域,这4个表单域分别对应name、pass、age和birth 4个请求参数,假设本应用要求这4个请求参数满足如下规则:
q name和pass只能是字母和数组,且长度必须在4到25之间。
q 年龄必须是1到150之间的整数。
q 生日必须在1900-01-01和2050-02-21之间。
下面是该请求对应的Action代码。
public class RegistAction extends ActionSupport
{
//该请求包含的4个请求参数
private String name;
private String pass;
private int age;
private Date birth;
//此处省略了4个属性的setter和getter方法
...
}
在上面Action中,仅提供了4个属性来封装用户的请求参数,并为这4个参数提供了对应的setter和getter方法。该Action继承了ActionSupport类,因此它也包含了一个execute方法,且该方法直接返回success字符串,这个Action不具备任何输入校验的功能。
但通过为该Action指定一个校验规则文件后,即可利用Struts 2的输入校验功能对该Action进行校验。下面是本应用所使用的输入校验文件。
<?xml version="1.0" encoding="GBK"?>
<!-- 指定校验配置文件的DTD信息 -->
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<!-- 校验文件的根元素 -->
<validators>
<!-- 校验Action的name属性 -->
<field name="name">
<!-- 指定name属性必须满足必填规则 -->
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入名字</message>
</field-validator>
<!-- 指定name属性必须匹配正则表达式 -->
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<message>您输入的用户名只能是字母和数字
,且长度必须在4到25之间</message>
</field-validator>
</field>
<!-- 校验Action的pass属性 -->
<field name="pass">
<!-- 指定pass属性必须满足必填规则 -->
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入密码</message>
</field-validator>
<!-- 指定pass属性必须满足匹配指定的正则表达式 -->
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{4,25})]]></param>
<message>您输入的密码只能是字母和数字
,且长度必须在4到25之间</message>
</field-validator>
</field>
<!-- 指定age属性必须在指定范围内-->
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年纪必须在1到150之间</message>
</field-validator>
</field>
<!-- 指定birth属性必须在指定范围内-->
<field name="birth">
<field-validator type="date">
<!-- 下面指定日期字符串时,必须使用本Locale的日期格式 -->
<param name="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<message>生日必须在${min}到${max}之间</message>
</field-validator>
</field>
</validators>
校验规则文件的根元素是<validators.../>元素,<validators.../>元素可包含多个<field.../>或<validator.../>元素,它们都用于配置校验规则,区别是:<field-validator.../>是字段校验器的配置风格,而<validator.../>是非字段校验器的配置风格。
Struts 2的校验文件规则与Struts 1的校验文件设计方式不同,Struts 2中每个Action都有一个校验文件,因此该文件的文件名应该遵守如下规则:
<Action名字>-validation.xml
前面的Action名是可以改变的,后面的-validation.xml部分总是固定的,且该文件应该被保存在与Action class文件相同的路径下。例如,本应用的Action class文件保存在WEB-INF/classes/org/crazyit/app/action路径下,故该校验文件也应该保存在该路径下。
与类型转换失败相似的是,当输入校验失败后,Struts 2也是自动返回名为“input”的Result,因此需要在struts.xml文件中配置名为“input”的Result。下面是本应用的struts.xml文件中Action的配置片段:
<!-- 用户注册的Action -->
<action name="regist" class="org.crazyit.app.action.RegistAction">
<!-- 类型转换失败、输入校验失败,转入该页面 -->
<result name="input">/regist.jsp</result>
<result>/show.jsp</result>
</action>
增加了上面修改之后,这样就为该Action对应的各字段添加了校验规则,而且指定了校验失败后应用会跳转到regist.jsp页面,接下来可以在regist.jsp页面中添加<s:fielderror/>来输出错误提示。
剩下部分无须任何修改,系统自动会加载该文件,当用户提交请求时,Struts 2的校验框架会根据该文件对用户请求进行校验。
分享到:
相关推荐
### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...
本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。客户端校验主要通过JavaScript在用户端进行,可以提供即时反馈,但...
本文将深入探讨Struts2中的输入校验机制,帮助开发者更好地理解和应用。 一、Struts2输入校验概述 在Struts2中,输入校验主要用于验证用户通过表单提交的数据,防止无效或恶意数据进入系统。Struts2提供了多种方式...
在Struts2中,输入校验是确保数据安全、准确和有效的重要环节。本篇文章将深入探讨Struts2的输入校验机制及其相关知识点。 **输入校验的重要性** 输入校验是Web应用开发中的关键步骤,它可以防止恶意用户提交无效或...
在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...
Struts2是一个流行的Java web开发框架,它提供了一套强大的输入校验机制,确保用户提交的数据符合业务逻辑的要求。在本文中,我们将深入探讨Struts2的输入校验功能,包括手动输入校验和基于验证框架的输入校验。 ##...
struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...
本篇文章将深入探讨Struts2中的输入校验机制。 一、Struts2 输入校验概述 Struts2提供了多种进行输入校验的方式,包括Action级别校验、Validator框架校验、拦截器校验以及使用JSR303/JSR349 Bean Validation标准。...
在Struts2中,输入校验是确保用户提交的数据符合预设规范的重要环节,可以防止非法数据进入系统,保护数据的完整性和安全性。本文将详细探讨Struts2中的输入校验机制。 首先,Struts2提供了两种主要的校验方式:...
Struts2作为一款流行的Java Web框架,其在处理用户输入数据和实现多语言支持方面具有强大的功能。在“Struts2数据校验与国际化”这一主题中,我们将深入探讨Struts2如何通过不同的验证机制确保数据的有效性,以及...
总结来说,Struts2提供了灵活的输入校验机制,允许开发者通过Action的`validate()`方法或者XML配置文件来定义验证规则。无论选择哪种方式,都能有效地确保从客户端接收的数据符合预期,从而提高了应用的安全性和用户...
2. **创建校验配置文件**: 创建一个XML文件(通常名为struts-validation.xml或struts.xml)来配置验证规则,包括字段和全局验证。 3. **实现Action类或ActionForm**: 如果使用ActionForm,需要创建一个类并实现相应...
在Struts2中,输入校验是确保数据完整性和安全性的重要环节。输入校验可以防止恶意用户提交无效或有害的数据,并确保应用程序的稳定运行。以下是关于Struts2输入校验的详细知识: 1. **客户端校验**: 客户端校验...
一、Struts输入校验概述 输入校验在Web应用中扮演着数据过滤和保护的角色,它可以避免脏数据进入数据库,提高系统的稳定性和安全性。Struts框架提供了多种方式进行输入校验,包括ActionForm校验、Validator框架以及...
- **校验配置**: 可以通过注解或XML配置文件指定校验规则,注解方式更简洁,而XML方式更为灵活。 - **校验结果**: 如果校验失败,框架会将错误信息存储在ActionContext中,供视图层展示。 **3. 使用注解进行校验** ...