一:什么是ActionForm
ActionForm可以从下面四点理解它
1 . ActionForm表示Http窗体的数据,也就是咱们页面表单数据收集器,可以看作是模型和视图的中介,他负责保存表单中的数据供模型或者视图使用,只能通过ActionForm验证的数据才能发送到Action处理。
2 . ActionForm是一个或者多个ActionConfig关联的JavaBean,在相应的Action的execute方法调用之前,ActionForm会利用请求参数填充自己。
- ActionForm是一个抽象类,我们在用的时候必须继承它才行。
二:ActionForm的功能和用法
- 获取保存表单参数,ActionForm利用自己的get和set方法来实例化自己,初始化完成以后,并且对表单中的数据,转换成我们预先定义的数据类型。
- 验证表单数据,ActionForm验证表单数据。验证表单数据的方法大体分为两种类型,一种是在服务端验证,一种也可以利用javaScript在客户端验证。验证就需要两个ActionForm的特殊类,也就是Struts给我们已经提供好的两个有用的ActionForm。一个是DynaActoinForm,另一个是DynaValidatorForm类。下面分别介绍一下。
三:两个特殊的ActionForm
DynaActionForm类,这个类出现的目的是为了减少系统中的ActionForm的数量,因为ActionForm负责收集表单中的数据,如果表单多了以后,就会导致ActionForm的数量急剧增加,而我们看到王勇视频中,看起来就一两个ActionForm,是因为他演示的功能很少,表单中基本上就是一项物料的信息,但是真正的项目中中绝对不是这样的,也许一个页面就可能设计到很多表单,一个项目的表单那就更多了。这样怎么办呢?DynaActionForm解决了这个问题,它可以让我们不必要创建具体的ActionForm类,而在配置文件中 用"org.apache.struts.action.DynaActionForm"来创建一个动态的ActionForm。比如下面的登录ActionForm
动态的 ActionForm的使用方法跟普通的 ActionForm 相同,但是要注意一点。普通的 ActionForm 对象需要为每个属性提供 getter 和 setter方法,以上面的例子而言,我们需要提供 getUsername() 和 setUsername() 方法取得和设置 username属性,同样地有一对方法用于取得和设置 password 属性和 actionClass 属性。
如果使用DynaActionForm,它将属性保存在一个 HashMap 类对象中,同时提供相应的 get(name) 和 set(name) 方法,其中参数name 是要访问的属性名。例如要访问 DynaActionForm 中 username 的值,可以采用类似的代码:
由于值放到一个HashMap对象里面,必须对使用给的值做动态的转换才行,所以不是所有的ActionForm都适合动态,对应经常使用的ActionForm还是建议使用普通ActionForm的。
DynaValidatorForm类
它是DynaActionForm的一个子类,能够对表单数据进行验证,使用他首先要配置,然后在定义插件:
插件
其中的validator.xml 和 validator-rules.xml 分别表示验证定义和验证规则的内容(可以合并在一起)。验证规则可以我们自己定义。使用xml文件定义。这里就不再写定义规则了。
Struts 将根据 xml配置文件中的定义来检验表单输入,并将不符合要求的错误信息输出到页面。但是你可能会想:这个功能虽然好,可是什么检验都跑到服务器端执行,效率方面和用户易用性方面是不是有些问题?你可能会怀念起那简单的JavaScript 客户端验证。
我们不用担心,在 Struts 中也支持JavaScript 客户端验证。如果你选择了客户端验证,当某个表单被提交以后,Struts 启动客户端验证,如果浏览器不支持 JavaScript验证,则服务器端验证被启动,这种双重验证机制能够最大限度地满足各种开发者的需要。JavaScript 验证代码也是在 validator-rules.xml文件中定义的。
定义的过程本人感觉比较复杂,这些验证我还是喜欢把它放到页面中,让页面开发人员去验证。
分享到:
相关推荐
【标题】"myeclipse+struts实例——2"是一个基于Java EE(J2EE)技术栈的项目实例,主要涉及MyEclipse集成开发环境、Struts框架和Tomcat服务器的使用。在这个实例中,开发者将学习如何在MyEclipse中创建一个简单的...
**Struts框架详解** Struts是一个开源的Java Web应用程序框架,它主要负责处理MVC(Model-View-Controller)设计模式的应用开发。本系统“JSP源码——[信息办公]Struts图书馆管理系统”是基于Struts框架实现的,...
### Struts——一种开源MVC的实现 #### 引言 随着互联网的发展,网页设计已经远远超出了简单地发布HTML页面的范畴。专业的网站开发不仅仅需要考虑美观的设计,还需要考虑到用户体验、性能优化、安全性等多方面因素...
本文将通过一个具体的示例——基于Struts 1.2的图片上传应用——来详细介绍其实现过程。 #### 二、环境搭建与配置 在开始编写代码之前,我们需要确保已经正确地搭建好了开发环境,并且项目中包含了Struts 1.2的...
通过以上步骤,我们成功地在WebLogic服务器上实现了Struts、Spring和Hibernate的整合,创建了一个Struts Portlet,从而能够在portlet环境下利用这三个框架的强大功能,提高开发效率和代码质量。这个实例不仅涵盖了...
在探讨Struts框架之前,我们首先需要理解其核心设计模式——MVC(Model-View-Controller)。MVC模式是软件工程中广泛采用的一种架构模式,尤其在Web开发领域,它将应用程序分为三个相互独立的部分,每个部分负责不同...
相比于Struts内置的ActionForm Bean验证方式,Struts Validator提供了更灵活、更强大的验证功能,能够处理复杂的验证逻辑,并且可以与Spring和Hibernate等其他框架无缝集成,形成完整的Struts2 + Spring + Hibernate...
本文旨在深入探讨Struts框架如何实现MVC模式,以及如何通过一个具体的例子——全面预算管理系统中的预算资料模块,来展示Struts框架的强大功能。 #### MVC模式概述 MVC模式最早由Xerox PARC在20世纪80年代为编程...
**JSP+Struts新闻发布系统详解** 在当前的互联网时代,新闻发布系统是网站不可或缺的一部分,它使得信息的发布和管理变得更加高效便捷。本系统——"JSP+Struts新闻发布系统",采用Java技术栈,结合了JSP(Java...
### Struts 框架详解 #### 一、引言 **Struts**是一个用于构建企业级Java Web应用程序的强大框架,它遵循Model-View-Controller(MVC)设计模式,帮助开发者有效地组织业务逻辑与用户界面。Struts框架最初由Craig ...
2. **配置文件详解**:在Struts项目中,有两个主要的配置文件——`struts-config.xml`和`web.xml`。前者定义了Action的映射、数据源、结果页面等;后者是Servlet容器的配置,用于加载Struts的前端控制器(Front ...
在Struts框架中,ActionForm对象扮演着极其重要的角色——它不仅封装了来自HTML表单的数据,还提供了验证数据的功能。然而,在处理大型项目时,传统ActionForm可能会带来一些不便,比如需要手动创建大量的ActionForm...
### Struts 入门知识点详解 #### 一、概述 本文档通过介绍一个简单的Struts应用实例——`helloapp`,帮助读者快速掌握Struts框架的基础知识与开发流程。`helloapp`应用的核心功能是接收用户的姓名输入,并返回个性...
### Struts2框架知识点详解 #### 一、引言 Struts2是一个广泛使用的Java Web应用程序框架,它基于Struts1的基础上进行了大量的改进和优化,旨在提供更为灵活、高效的Web开发体验。本教程旨在帮助初学者及有经验的...
**Struts** 框架中的关键组件包括 **ActionServlet**、**ActionForm** 和 **Action**,它们共同协作完成 MVC 模式下的功能实现。 ##### 1. ActionServlet (Controller) **ActionServlet** 是 Struts 框架的控制器...
### 实例学习 Struts.doc —— 关键知识点详解 #### 一、Struts框架简介与MVC模式 **Struts** 是一款用于构建企业级Java Web应用的强大框架,它能够帮助开发者有效地组织代码结构,提高应用程序的可维护性和扩展性...
### Struts1的工作流程详解 #### 一、框架初始化阶段 在Web应用启动时,Struts框架中的核心组件——ActionServlet会被加载并初始化。ActionServlet的主要职责是在运行时解析和处理用户请求,它从`struts-config....