Struts2 输入校验详解:手工编写validate()方法
需积分: 0 50 浏览量
更新于2024-08-17
收藏 944KB PPT 举报
本文主要介绍了如何在Struts2框架中手工编写代码实现输入校验,以及Struts2框架的相关特点和优势。
在Struts2框架中,输入校验是保证数据安全性和应用稳定性的重要环节。通常,我们可以通过重写Action类的`validate()`方法来实现这一功能。`validate()`方法会检查与`execute()`方法签名相匹配的所有方法,当数据校验失败时,我们需要使用`addFieldError()`方法将错误信息添加到系统的`fieldErrors`集合中。如果`fieldErrors`包含错误信息,Struts2框架会自动将请求转发到名为`input`的结果页面。例如,在`validate()`方法中,我们可以检查用户名和手机号是否为空及手机号格式是否正确:
```java
public void validate() {
if (this.username == null || "".equals(this.username.trim())) {
this.addFieldError("username", "用户名不能为空");
}
if (this.mobile == null || "".equals(this.mobile.trim())) {
this.addFieldError("mobile", "手机号不能为空");
} else {
if (!Pattern.compile("^1[358]\\d{9}$").matcher(this.mobile.trim()).matches()) {
this.addFieldError("mobile", "手机号的格式不正确");
}
}
}
```
在配置文件中,定义一个名为`input`的结果,将失败请求转发到对应的视图,如`/addUser.jsp`:
```xml
<result name="input">/addUser.jsp</result>
```
在`addUser.jsp`页面中,引入Struts2标签库,并使用`<s:fielderror/>`标签来显示校验失败的错误信息:
```jsp
<%@taglib uri="/struts-tags" prefix="s"%>
...
<s:fielderror/>
```
Struts2框架由Craig R. McClanahan创建并捐献给Apache软件基金会,于2001年发布第一个版本。Struts2是在2005年推出的,是一个用于构建MVC应用程序的框架,提供了解决Web应用程序开发中常见问题的解决方案,包括页面导航、输入验证、统一布局、可扩展性、国际化和本地化、Ajax支持以及防止表单重复提交等功能。
Struts2相对于Struts1的优势在于:
1. 无侵入式设计,不强制依赖ServletAPI和StrutsAPI,使得应用更易于维护和升级。
2. 提供了拦截器机制,支持AOP编程,便于实现权限拦截等高级功能。
3. 内置类型转换器,简化了类型转换的处理,避免了Struts1中需要手动注册类型转换器的问题。
4. 支持多种视图技术,如JSP、FreeMarker、Velocity等,提供了更大的灵活性。
5. 输入校验可以针对特定方法进行,相比Struts1更为灵活。
6. 国际化资源文件管理功能完善,支持全局、包和Action级别的资源配置。
从Struts1升级到Struts2,主要变化包括从ActionServlet控制器转变为过滤器作为控制器,以及在设计和功能上的显著提升。这些改进使得Struts2更适合现代Web应用的开发需求。
179 浏览量
203 浏览量
118 浏览量
点击了解资源详情
点击了解资源详情
437 浏览量
317 浏览量
点击了解资源详情
点击了解资源详情

正直博
- 粉丝: 51
最新资源
- Premiere Pro CS6视频编辑项目教程微课版教案
- SSM+Lucene+Redis搜索引擎缓存实例解析
- 全栈打字稿应用:演示项目实践与探索
- 仿Windows风格的AJAX无限级树形菜单实现教程
- 乐华2025L驱动板通用升级解决方案
- Java通过jcraft实现SFTP文件上传下载教程
- TTT素材-制造1资源包介绍与记录
- 深入C语言编程技巧与实践指南
- Oracle数据自动导出并转换为Excel工具使用教程
- Ubuntu下Deepin-Wine容器的使用与管理
- C语言网络聊天室功能详解:禁言、踢人与群聊
- AndriodSituationClick事件:详解按钮点击响应机制
- 探索Android-NetworkCue库:高效的网络监听解决方案
- 电子通信毕业设计:简易电感线圈制作方法
- 兼容性数据库Compat DB 4.2.52-5.1版本发布
- Android平台部署GNU Linux的新方案:dogeland体验