Struts2是一个非常流行的Java Web开发框架,它基于MVC(Model-View-Controller)设计模式,极大地简化了企业级应用程序的开发流程。在Struts2的2.3.15.3版本中,集成的验证框架是其核心功能之一,帮助开发者确保用户输入的数据质量和安全性。本篇将详细讲解如何在Struts2中实现一个简单的验证框架模式。 我们需要了解Struts2验证框架的基本概念。验证框架允许开发者定义一组规则来检查用户提交的数据,如果数据不符合预设的规则,框架会返回错误消息并阻止操作的执行。这有助于防止因无效数据导致的程序异常或数据库污染。 要实现Struts2的验证,你需要以下组件: 1. **Action类**:这是业务逻辑的中心,通常继承自`org.apache.struts2.interceptor.validation.AnnotationDriven`或实现`com.opensymphony.xwork2.ActionSupport`接口。通过这些基类,你可以利用注解进行字段级别的验证。 2. **验证规则**:规则可以是硬编码在Action类中的注解,也可以是通过XML配置文件定义。注解如`@RequiredString`、`@MinLength`等,可以用来指定字段非空、最小长度等要求。 3. **Validation.xml**:这是Struts2的默认验证配置文件,用于定义更复杂的验证规则,或者为不支持注解的旧版本Struts2提供验证。 4. **Field Error**:当验证失败时,Struts2会将错误信息存储在ActionContext中,并通过FieldError对象暴露给视图层。 现在,我们来看一个简单的示例。假设我们有一个注册表单,需要验证用户名和密码: ```java public class RegistrationAction extends ActionSupport { @RequiredString(message = "用户名不能为空") private String username; @RequiredString(message = "密码不能为空") @MinLength(value = 6, message = "密码至少需要6位") private String password; // getter and setter methods... public String execute() { // 验证会在执行方法前自动调用,无需手动触发 return super.execute(); } } ``` 在上述代码中,我们使用了注解来定义用户名和密码的验证规则。当用户提交表单时,Struts2会自动进行验证,如果失败则返回相应的错误消息。 对于更复杂的验证逻辑,可以创建一个单独的验证类,通过`validate()`方法实现。例如: ```java public class RegistrationValidation implements Validation { private RegistrationAction action; public void setAction(RegistrationAction action) { this.action = action; } @Override public void validate() { if (action.getUsername() == null || "".equals(action.getUsername().trim())) { addFieldError("username", "用户名不能为空"); } // 更多验证逻辑... } } ``` 然后在`struts.xml`中配置这个验证类: ```xml <package name="default" namespace="/" extends="struts-default"> <action name="registration" class="com.example.RegistrationAction"> <interceptor-ref name="validation"/> <interceptor-ref name="defaultStack"/> <result name="input">/registration.jsp</result> <result name="success">/success.jsp</result> </action> <interceptors> <interceptor name="customValidation" class="com.example.RegistrationValidation"/> </interceptors> <default-interceptor-ref name="customValidation"/> </package> ``` 在这个例子中,我们创建了一个名为`RegistrationValidation`的类,实现了`validate()`方法,然后在Struts配置中使用了自定义拦截器。 在视图层,比如JSP页面,我们可以使用Struts2的标签库来显示错误信息: ```jsp <s:fielderror/> <s:property value="%{#field.key}" /> <s:property value="%{#field.message}" /> ``` 这样,当用户输入不符合规则时,错误信息会被自动渲染到页面上。 Struts2的验证框架提供了灵活且强大的数据验证机制,可以帮助开发者确保应用程序的数据质量,提高用户体验,同时减少因无效数据引起的程序错误。通过注解和XML配置,你可以轻松地定制验证规则,适应各种业务需求。
- 1
- xiangqiufeng2014-07-11挺有用的案例学习了
- snf71282017-04-25可以参考参考
- 粉丝: 5
- 资源: 33
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Matlab版本2023b的Embedded Coder Support Package for ARM Cortex-M Processors支持包免费分享,1.8G压缩包分成3个(2/3)
- ghostscript-10.0.0
- 医疗保障信息平台定点医药机构接口规范
- Python编程基础入门到高级开发技巧指南
- 手机充电头外观尺寸检测机工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- JSP EIMS系统-OA子系统的设计与开发(源代码+LW).zip
- (JSP)JTBC_CMS_2.0.0.8.zip
- linux java jdk8
- Windows系统上Tomcat的安装与配置详解
- Linux-Shell基础命令语言
- 服装图像数据集,衣服图像数据,包含服装属性
- Matlab版本2023b的Embedded Coder Support Package for ARM Cortex-M Processors支持包免费分享,1.8G压缩包分成3个(3/3)
- glove11111wwee.pdf
- ECharts象形柱图-圣诞愿望清单和山峰高度-4.zip
- ECharts象形柱图-人体含水量-2.zip
- ECharts象形柱图-驯鹿的速度-6.zip