- 浏览: 640194 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
lizhuang:
这个方法的内部实现主要是依赖于类加载器,一般的自己实现的类是用 ...
Java中getResourceAsStream的用法 -
prince4426:
回答评论都很精彩
Java中getResourceAsStream的用法 -
kexuetou:
美人如此多娇 写道可能这样总结更好,路径前不带'/',则是相对 ...
Java中getResourceAsStream的用法 -
guoxin91:
...
Java中getResourceAsStream的用法 -
美人如此多娇:
可能这样总结更好,路径前不带'/',则是相对路径;若带,则是绝 ...
Java中getResourceAsStream的用法
struts2的输入校验针对输入进行业务规则的校验,譬如是否必填、字符长度、是否是邮箱格式、是否是电话格式、手机格式等等。
struts2的校验分为两种,第一种是基于代码的,就是在action中编写validate方法进行校验;第二种就是基于xml的,就是编写配置文件让struts2框架进行调用校验。
(一)基于代码的输入校验
再熟悉一下类型转换与输入校验的流程:
1、首先struts2对客户端传来的数据进行类型转换。struts2不能进行类型转换的时候,struts2框架会自动生成一条错误信息并将该错误信息放到addFieldError里面。
2、类型转换完毕后,不论类型转换成功与否都要执行action的validate方法。由validate方法进行业务规则的输入校验。
3、如果类型转换和输入校验都没有错误发生,那么进入execute方法(业务逻辑)。
所以对action进行输入校验,只需要重写action的validate方法即可。既可以调用addFieldError,也可以调用addActionError进行业务规则校验。
在struts2中默认情况下一个action只拥有一个业务逻辑方法execute。因此在struts.xml文件中,经常可以看到这样的配置项:
<action name="login" class="com.test.action.LoginAction"> <result name="success">/success.jsp</result> <result name="input">/input.jsp</result> </action>
struts2遇到这样的配置项,就会自动去执行action里的execute方法。
但有些情况下,往往一个action里拥有多个业务逻辑方法,譬如申请表模块,就有新建、编辑、保存、删除、导出等业务逻辑。在这种情况下,就可以在action里增加多个方法来处理业务逻辑。代码如下:
public class ReprotAction extends ActionSupport { //忽略属性 public String newReport() throws Exception {//} public String modifyReport() throws Exception {//} public String saveReport() throws Exception {//} public String deleteReport() throws Exception {//} }
在配置struts.xml文件的时候,在action元素中指定method属性,代码如下:
<action name="newReport" class="com.test.action.ReportAction" method="newReport"> <result name="success" type="freemarker">/modifyReport.ftl</result> </action> <action name="modifyReport" class="com.test.action.ReportAction" method="modifyReport"> <result name="success" type="freemarker">/modifyReport.ftl</result> </action> ......
现在有多个业务逻辑方法,应该针对每个业务逻辑进行校验。但现在只有一个validate方法,不可能把所有业务逻辑的验证都放在validate方法里。怎么办呢?struts2为我们解决了这个难题,就是针对每个业务逻辑方法增加一个validate方法,方法的命名规则如下validate+方法名(方法的第一个字母大写),譬如validateNewReport();这样在validateNewReport方法添加的校验就针对newReport方法了。但是这里要特别注意的是,如果action中重写了validate方法,那么validate方法都会被调用。
以newReport为例,action方法的调用顺序如下:validateNewReport()->newReport()->validate()
因此在这种情况下,不要重写validate方法。但是这有牵涉到一个问题,如果不写validate方法,那execute方法如何校验呢?按照上面的规则,只要编写一个validateExecute方法进行校验就可以了。
在输入校验的过程中,调用addFieldError()和addActionError()方法,把错误保存起来。至于采用哪个方法根据项目和自己的需要进行选择。
要显示这些错误,可以在输入页面中增加如下代码:
<s:fielderror/>显示field级别的错误消息
<s:actionerror/> 显示action级别的错误消息
二、基于配置文件的输入校验
struts的框架校验针对单个action,每个action都需单独配置。为了让struts2找到配置文件,struts2对配置文件的命名进行了规范。struts2针对action里每个业务方法都需要建立单独的校验配置文件。配置文件的命名方式为xxAction-method-validation.xml,对于只针对execute方法的校验文件,可以省略方法名,命名方式为xxAction-validation.xml.譬如LoginAction的配置文件命名为LoginAction-validation.xml。如果action包含多个业务逻辑方法,譬如上一章节的ReportAction,那么要对每个业务方法进行校验,需要针对每个方法建立配置文件。譬如对ReportAction的saveReport()方法进行校验,则配置文件必须命名为ReportAction-saveReport-validation.xml.两种配置文件的命名方式很类似基于代码的输入校验,validate()和validateSaveReport().配置文件必须和action放在同一目录下。
如何创建xml输入校验文件?
1、在action目录下新建一xml文件
2、在struts2下载包apps目录下查找xxAction-validation.xml文件
3、拷贝下列代码到新建xml文件中
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
4、可以对dtd文件进行了解,以便编写配置文件。这里对dtd不做详细说明。
5、根据dtd编写配置文件。对于一些属性值可以参考com.opensymphony.xwork2.validator.validators包下的defalut.xml文件和相应类。建议到opensymphony去下载xwork和ognl的源码进行关联。
下面是已经写好的一段配置代码:
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd"> <validators> <field name="bean.psproductname"> <field-validator type="requiredstring"> <message>软件名称不可为空</message> </field-validator> <field-validator type="stringlength"> <param name="maxLength">100</param> <message>软件名称长度不能超过${maxLength}个字符</message> </field-validator> </field> <field name="bean.pdfinishday"> <field-validator type="required"> <message>软件完成时间不可为空</message> </field-validator> </field> </validators>
发表评论
-
HTTP协议解析
2010-01-27 20:39 4516掌握HTTP虽然不是必须的,但是如果你知道它的工作原理,那么在 ... -
TOMCAT指定JDK
2010-01-14 17:13 2408在windows环境下以批处理文件方式启动tomcat,只要运 ... -
Struts2的国际化
2010-01-01 11:30 1156Struts2国际化分为三类: ... -
总结Struts2的经典输入校验
2009-12-30 16:59 21091,输入校验介绍 Struts2提供了功能强大的输入校验机制 ... -
浅谈Struts2的内建校验器
2009-12-30 16:16 1303Struts2已经为我们准备了一些内建校验器,我们可以直接使用 ... -
Struts2拦截器原理
2009-12-27 21:02 33381. 什么是拦截器 拦截器,在AOP(Aspect-O ... -
Struts2多文件上传
2009-12-27 17:36 1385Struts2也可以很方便地实现多文件上传。 在输入表 ... -
Struts2文件上传
2009-12-27 16:52 15101.文件上传原理 表单元素的enctype属性指定 ... -
Struts2 访问request、session和application对象
2009-12-27 15:28 3842在传统的Web开发中,经常会用到Servlet API中的Ht ... -
Struts2类型转换
2009-12-26 23:01 1679一、 struts2类型转换一 1、struts2的类型转 ... -
Struts2请求参数的接收
2009-12-26 22:24 16241)--采用基本类型接收请求参数(get/post) ... -
Struts2动态方法调用
2009-12-26 16:48 4515Struts2支持动态方法调用,它指的是一 ... -
Struts2指定多个配置文件
2009-12-26 15:50 2878如果配置文件struts.xml的内容太多,或者是 ... -
Struts2命名空间
2009-12-26 15:24 1622Struts.xml命名空间规则 包的na ... -
Struts2框架的处理流程
2009-12-26 15:07 42631. Struts2架构图 请求首先通过F ... -
Struts2的常量详解
2009-12-26 11:43 3477通常struts2加载struts2常 ... -
HTML form包含的元素
2009-12-25 17:01 1763HTML form elements Object ... -
Struts2.1.x快速入门(二)
2009-12-23 20:02 1165------------------------------- ... -
Struts2.1.x快速入门(一)
2009-12-23 17:21 1220------------------------------- ... -
Hibernate常见集合映射(Set,List Array,Map,Bag)
2009-12-06 14:42 3736Hibernate常见的集合映射主要有Set,List,Arr ...
相关推荐
### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...
Struts 2 输入校验
本篇文章将深入探讨Struts2中的输入校验机制。 一、Struts2 输入校验概述 Struts2提供了多种进行输入校验的方式,包括Action级别校验、Validator框架校验、拦截器校验以及使用JSR303/JSR349 Bean Validation标准。...
本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。客户端校验主要通过JavaScript在用户端进行,可以提供即时反馈,但...
本文将深入探讨Struts2中的输入校验机制,帮助开发者更好地理解和应用。 一、Struts2输入校验概述 在Struts2中,输入校验主要用于验证用户通过表单提交的数据,防止无效或恶意数据进入系统。Struts2提供了多种方式...
在Struts2中,输入校验是确保数据安全、准确和有效的重要环节。本篇文章将深入探讨Struts2的输入校验机制及其相关知识点。 **输入校验的重要性** 输入校验是Web应用开发中的关键步骤,它可以防止恶意用户提交无效或...
在Struts2中,输入校验是确保数据安全性和应用稳定性的重要环节。它帮助开发者防止非法或无效的数据进入系统,从而减少潜在的错误和安全漏洞。 **Struts2输入校验机制** 1. **内置验证框架**: Struts2提供了内置的...
Struts2是一个流行的Java web开发框架,它提供了一套强大的输入校验机制,确保用户提交的数据符合业务逻辑的要求。在本文中,我们将深入探讨Struts2的输入校验功能,包括手动输入校验和基于验证框架的输入校验。 ##...
在Struts2中,输入校验是确保数据完整性和安全性的重要环节。输入校验可以防止恶意用户提交无效或有害的数据,并确保应用程序的稳定运行。以下是关于Struts2输入校验的详细知识: 1. **客户端校验**: 客户端校验...
struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...
Struts2作为一款流行的Java Web框架,其在处理用户输入数据和实现多语言支持方面具有强大的功能。在“Struts2数据校验与国际化”这一主题中,我们将深入探讨Struts2如何通过不同的验证机制确保数据的有效性,以及...
在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...
在Struts2框架中,输入校验是一个关键环节,它确保了用户提交的数据符合应用的要求,从而避免了无效数据导致的错误或安全问题。本讲将深入探讨Struts2的输入校验机制。 1. **Struts2输入校验概述** - 输入校验是...
在Struts2中,输入校验是一个至关重要的部分,它确保了用户从客户端提交的数据符合预设的业务规则,从而避免了无效或不合法数据进入系统。本篇文章将详细介绍如何在Struts2中进行输入校验,包括两种主要实现方式:...