Struts2输入校验机制详解

需积分: 12 5 下载量 184 浏览量 更新于2024-09-16 收藏 48KB DOC 举报
"Struts2输入校验是用于确保用户提交的数据符合系统要求的重要机制,主要涉及手动输入校验和基于验证框架的输入校验。本文将总结这两种方法的实现和流程,帮助开发者理解并应用Struts2的输入校验功能。" 在Struts2中,输入校验是确保应用程序数据安全性和正确性的重要步骤。以下是关于Struts2输入校验的详细解释: 1. 手动输入完成校验: - 基本方法:开发者可以通过在Action类中重写`validate()`方法来实现输入校验。当请求到达时,Struts2会自动调用这个方法,检查用户提交的数据是否有效。 - 对于有多个逻辑处理方法的Action,每个特定方法的校验可以重写对应的`validateXxxx()`方法,例如`validateLogin()`,只针对`login`操作进行校验。 2. 输入校验流程: - 类型转换器:首先,Struts2的类型转换器会尝试将HTTP请求参数转换为相应的Java类型,并赋值给Action的属性。 - 异常处理:在转换过程中如果出现异常,异常信息会被保存到ActionContext中,并由`conversionError`拦截器包装成`fieldError`。 - 验证方法调用:接着,Struts2会通过反射调用对应的`validateXxx()`或`validate()`方法。 - 错误处理:如果验证失败,系统将转向`input`视图指定的资源,因此需要在配置文件中为每个验证方法指定`input`属性。 - 正常处理:验证成功后,系统将继续执行用户请求的方法。 3. 基于验证框架的输入校验: - 配置文件:开发者需要创建校验配置文件,通常命名为`action类名-validation.xml`。如果一个Action有多个逻辑方法,可以为特定方法创建如`action类名-name属性名-validation.xml`的文件,这里的`name属性名`是Struts配置文件中的相应属性。 - 配置文件位置:这些文件需要放在与Action类相同的目录下。 - 验证规则加载:Struts2会首先加载`action类名-validation.xml`,然后加载指定方法的配置文件。 - 校验器配置:有两种类型,字段校验器和非字段校验器。字段校验器配置中,需要指定被校验的字段、校验器类型、参数和错误消息。 字段校验器配置示例: ```xml <field name="被校验的字段"> <field-validator type="校验器名"> <!-- 参数配置 --> <param name="参数名">参数值</param> <!-- 错误消息 --> <message key="I18Nkey">校验失败后的提示信息</message> </field-validator> </field> ``` 错误消息可以使用`getText("I18Nkey")`来获取国际化信息,避免Freemarker模板错误。 Struts2提供了灵活的输入校验机制,无论是手动校验还是基于框架的校验,都能有效地确保用户输入的数据符合业务规则,从而提高系统的稳定性和安全性。