Struts2 输入校验详解:手工编写validate()方法

需积分: 0 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应用的开发需求。