struts2输入验证--补充(转)
原文地址:http://blog.csdn.net/ForWayfarer/archive/2008/09/20/2955812.aspx
1.struts2怎么实现方法签名
(类似于struts1的DispatchAction):在strust.xml中配置如下
<action ... method="register" ></action>
<action ... method="login" ></action>
<action ... method="insert" ></action>
(1)struts2怎么实现分发验证
:对应于每个方法签名,可以有相应的validate()方法如下
public void validateRegister()
public void validateLogin()
public void validateInsert()
(2)struts2怎么实现分发验证
:对应于每个方法签名,可以有相应的验证框架如下
UserAction-register-validation.xml
UserAction-login-validation.xml
UserAction-insert-validation.xml
2.验证顺序
在struts1中,如果在FormBean中覆盖了validate()方法,让其放回null值,则验证框架(xml验证)就会失效。返回
null则代表验证通过or无需验证;覆盖的validate()方法如果返回super.validate(mapping,request)即调用父
类的validate(mapping,request),验证框架才会起作用。也就是说,如果想让验证框架有效,则不要覆盖validate()方法,
如果除了验证框架验证,你还想在validate()方法中添加一些其他验证,可以覆盖validate()方法,但返回值须为
super.validate(mapping,request)。
在struts2中类似。struts2的执行顺序为:
(1). 首先Struts2对客户端传来的数据进行类型转换;
(2). 类型转换完毕后再进行输入校验,顺序:UserAction-validation.xml -->
UserAction-login-validation.xml --> public void validateLogin(){}
--> public void validate(){};
(3). 如果类型转换和输入校验都没有错误发生,那么进入login()方法/execuet()方法(调用商业逻辑).
注意:如果类型转换不成功,也同样要进行输入校验,所以错误信息打印会将二者的错误信息全部打印出来
3.struts2的错误信息
struts2有两种错误级别:addFieldError和addActionError
addActionError(String anErrorMessage) -- Add an Action-level error
message to this
Action:看源代码对于Action级别的错误信息,实际上是放置在ArrayList中的,action级别的error不会在表单中显示。
addFieldError(String fieldName, String errorMessage) -- Add an
error message for a given
field:看源代码真正存放field级别错误信息的对象是LinkedHashMap,该LinkedHashMap的key是String类型
的,value是ArrayList类型的(addFielderror(String,
ArrayList)),实际上是:LinkedHashMap<String, ArrayList<String>>
errors。field级别的error会在表单中显示。
源代码中还有这样一个方法:public boolean hasErrors() { if (hasActionErrors() ||
hasFieldErrors()) ...} 则返回input页面,表示不论是field级别的还是action级别的,只要错误容器不为空,就返回
到input页面。
另外:struts2验证框架(xml验证)是将错误保存在fielderror中的,而不是actionerror。所以在jsp显示错误时要注意。
4.struts2支持客户端验证,s标签依然支持js事件,所以客户端验证推荐自己写js,不过基本不用struts做客户端验证。此外,s标签即使你不给其设置id属性,s标签也会自动生成一个id(通过查看页面源代码(获得s标签的html代码)可获得),如果你自定义了id,则会将s标签自动生成的id覆盖。
分享到:
相关推荐
综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。
首先,Struts2的输入验证分为两种方式:手动验证和使用验证框架。 **手动验证**主要包括两种方法: 1. **重写validate()方法**:这是最基础的方式,所有Action类都需要继承ActionSupport类,然后在validate()方法中...
在这个“struts2输入验证例子”中,我们将探讨Struts2中的两种主要验证方式:`overrideValidate`和`clientValidate`。 首先,让我们了解Struts2的基础验证机制。默认情况下,Struts2提供了两种验证方式:服务器端...
Struts2 验证框架是基于 Java 语言的 Web 应用程序框架,提供了一个强大的验证机制,以确保用户输入的数据满足业务逻辑的要求。在 Struts2 中,验证机制是通过 validator 来实现的,该机制可以对用户输入的数据进行...
在Struts2中,登录验证是常见的安全控制机制,用于确保只有合法用户能够访问受保护的资源。 在Struts2中实现登录验证,我们需要以下几个关键组件和步骤: 1. **Action类**:这是处理用户请求的核心,通常包含一个...
总结来说,Struts2提供了灵活的输入校验机制,允许开发者通过Action的`validate()`方法或者XML配置文件来定义验证规则。无论选择哪种方式,都能有效地确保从客户端接收的数据符合预期,从而提高了应用的安全性和用户...
Struts2是一个流行的Java web开发框架,它提供了一种强大的数据输入验证机制,确保用户提交的数据符合预期格式和约束。本教程将深入讲解Struts2中的数据输入验证,包括两种主要验证方式:客户端验证和服务端验证。...
在Struts2中,表单验证是非常重要的一个环节,它确保了用户输入的数据符合预设的规则,从而保证了应用程序的数据质量和安全性。本示例主要讲解的是使用XML文件进行表单验证的方法。 首先,让我们理解表单验证的基本...
本实例将详细讲解如何在Struts2框架下实现登录功能,并结合输入验证和动态调用来优化用户体验。 一、Struts2登录功能 在Struts2中,登录功能通常涉及以下步骤: 1. 创建一个Action类,该类代表一个业务逻辑单元,...
### Struts2 自定义验证程序的实现方法详解 #### 一、Struts2 内建验证程序实现的分析 在探讨如何实现自定义验证程序之前,我们先来了解一下 Struts2 的内置验证机制。Struts2 提供了丰富的内置验证器(Validator...
总之,Struts2的输入校验是其强大功能的一部分,开发者可以根据项目需求选择合适的验证方式,以确保应用的安全和稳定。通过理解并熟练应用这些知识点,可以有效地提升Web应用的质量和用户体验。
5. **使用安全拦截器**:利用Struts2的拦截器机制,实现输入验证和异常处理,增强应用安全性。 6. **安全编码实践**:遵循安全编码规范,避免在动态方法调用中使用不安全的变量。 7. **定期审计和扫描**:使用自动...
Struts2的核心特性之一就是其强大的验证机制,该机制允许开发者在请求到达控制器之前对用户输入进行检查,确保数据的完整性和正确性,从而避免潜在的运行时错误或安全漏洞。 ### Struts2验证框架的关键属性和语法 ...
### Struts2输入验证机制详解 #### 一、引言 在Web开发中,输入验证是确保应用程序安全性和用户体验的重要环节。Struts2框架提供了一套完善的验证机制,可以帮助开发者轻松实现各种验证逻辑,包括但不限于空值检测...
在Struts中,可以通过添加JavaScript代码到JSP页面,或者使用Struts2的验证框架生成客户端脚本来实现。但是,客户端验证不能完全替代服务器端验证,因为它容易被恶意用户绕过。 2. 服务器端验证: 服务器端验证是...
在Struts2中,表单验证是确保数据输入有效性和一致性的关键环节,它有助于提升用户体验并减少服务器端处理错误。这篇博客文章“Struts2 表单验证验证信息显示位置及效果”探讨了如何有效地实现和展示Struts2中的表单...
总之,Struts2验证框架为Java Web开发提供了一套强大且灵活的用户输入验证解决方案。通过理解和应用“struts2验证框架示例”,你可以提升你的开发技能,确保应用程序的数据质量和用户体验。记得在实践中不断探索和...