Struts2 输入校验详解:手工编写validate()方法
需积分: 0 111 浏览量
更新于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应用的开发需求。
2012-04-08 上传
2011-03-20 上传
2010-10-21 上传
点击了解资源详情
点击了解资源详情
2012-12-06 上传
2013-06-03 上传
点击了解资源详情
点击了解资源详情
正直博
- 粉丝: 45
- 资源: 2万+
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析