`

Struts(四)ActionForm

 
阅读更多

在Struts中ActionForm也是一个很重要的组件。他的主要作用就是收集数据。

1、ActionForm的作用

ActionForm 用来收集表单中的数据,可以将其看作是模型和视图的中介,它负责保存视图中的数据供模型或者视图使用。同时ActionForm 具有的过滤保护的作用,可以在将ActionForm数据发送到 Action 处理之前进行验证。

2、ActionForm的执行时间

ActionForm 是与一个或多个 ActionConfig 关联的JavaBean,在相应的 action 的 execute 方法被调用之前,ActionForm 会自动利用请求参数来填充自己(初始化属性)。

3、定义自己的ActionForm

ActionForm 是一个抽象类,必须通过继承来实现自己的类。在ActionForm中需要定义要收集的属性名,即表单中的信息,并为每个属性设置getter和setter方法,举个例子:

Jsp文件:


则对应的自己的ActionForm为:


需要注意的是,因为ActionForm利用属性的 getter 和 setter 方法来实现初始化,所以getUsername中的Username(首字母可大写)应该与表单中name="username"相同。

4、ActionForm的验证

初始化完毕后,在ActionServlet调用Action类前,ActionForm 的 validate() 方法被调用,我们可以在其中来检查请求参数的正确性和有效性:

Public ActionErrors validate(ActionMapping mapping,   ServletRequest request)   

Public ActionErrors validate(ActionMapping mapping,   HttpServletRequest request)   

我们需要在自己的ActionForm bean里覆盖validate()方法,并在配置文件里设置<action>元素的validate为true。调用validate()后,如果返回的ActionErrors不是null,则ActinForm会根据错误关键字将ActionErrors存储在请求属性列表中。   

如果返回的不是null,而且长度大于0,则根据错误关键字将实例存储在请求的属性列表中,然后ActionServlet将响应转发到配置文件<action>;元素的input属性所指向的目标。   

如果需要执行特定的数据有效性检查,最好在Action类中进行这个操作,而不是在ActionForm类中进行。

验证返回null之后ActionForm 将被作为参数传给 action 的 execute 方法以供使用。

5、ActionForm的生命周期

ActionForm bean 的生命周期可以设置为 session(缺省)和 request,当设置为 session 时,注意在 reset() 方法中将所有的属性重新设置为初始值。

public void reset(ActionMapping mapping,HttpServletRequest request)   

public void reset(ActionMapping mapping,ServletRequest request)   

6、ActionForm的配置:

Struts框架假设用户在应用程序中为每个表单都创建了一个ActionForm bean,对于每个在struts-config.xml文件中定义的bean,框架在调用Action类的perform()方法之前会在相关联的关键字下,检查用于适当类的bean实例,没有可用的bean,它就会自动创建一个新的bean,对于请求中每个与bean属性名称对应的参数,Action调用相应的set方法设置。当Action perform()被调用时,最新的ActionForm bean传送给它,参数值就可以立即使用了。

上面例子的Form bean的配置举例:


分享到:
评论

相关推荐

    struts中ActionForm的validate方法使用小得

    在Struts中,ActionForm类是处理用户输入数据的核心组件,它封装了请求参数并负责业务逻辑验证。本文将详细讨论如何在Struts中使用ActionForm的`validate`方法进行数据验证。 `validate`方法是在ActionForm中定义的...

    提交多行数据到Struts的ActionForm的List属性中

    它继承自org.apache.struts.action.ActionForm接口,并包含多个字段来存储表单中的数据。当用户提交表单时,Struts框架会自动将表单数据填充到ActionForm实例中。 为了提交多行数据,我们通常会在HTML页面中使用多...

    struts 视频 struts视频 actionform

    ActionForm是Struts框架中的一个重要组件,它是模型层与控制器层之间的桥梁,用于处理用户在表单中提交的数据。 在Struts框架中,ActionForm类负责收集、验证和封装来自用户界面的数据。当用户通过HTML表单提交请求...

    struts1使用actionform实现表单验证

    ActionForm是Struts1中处理用户输入的核心组件,它负责接收、验证和封装来自表单的数据。在本文中,我们将深入探讨如何利用ActionForm实现表单验证,并在验证失败时追加错误信息。 1. **ActionForm介绍** ...

    struts中静态ActionForm基本验证

    主要是actionForm的基本验证,重写validate方法,返回actionErrors,然后根据资源文件显示错误。 这是一个demo例子,直接导入eclispe中即可。 并且这部分内容会在相应的博客中介绍,稍后会更新博客。

    Struts_学习笔记之ActionForm

    Struts学习笔记之ActionForm ActionForm是Struts框架中的一种重要组件,用于封装和处理用户的表单数据。在Struts中,ActionForm是继承自JavaBeans的,主要用于处理用户的表单数据和业务逻辑。下面是ActionForm的...

    struts ActionForm

    Struts ActionForm是Java Web开发中Struts框架的一个核心组件,主要用于处理用户在表单中的输入数据。在早期的Struts 1版本中,ActionForm是MVC设计模式中的Model部分,它作为控制器(Controller)与视图(View)...

    Struts Hibernate Spring 集成开发宝典 actionform

    4. **使用ActionForm**: 将Spring的ApplicationContext引入Struts,使ActionForm能够通过依赖注入获取SessionFactory,然后在业务逻辑中调用Hibernate的方法进行数据库操作。 5. **配置过滤器**: 设置Struts与Spring...

    [摘]Struts 学习笔记之ActionForm

    ActionForm是Struts框架中一个关键组件,用于处理用户从视图层提交的数据,并与控制器进行交互。这篇学习笔记将深入探讨ActionForm的作用、使用方法以及它在Struts架构中的位置。 在MVC模式中,ActionForm扮演了...

    Struts高级开发_动态ActionForm.avi

    ActionForm是Struts框架中的一个重要组件,主要用于处理用户从视图层提交的数据。在传统的Struts开发中,ActionForm类通常用于封装请求参数并传递给业务逻辑层进行处理。 动态ActionForm的概念是为了提高代码的灵活...

    Struts2框架ActionForm自动填充表单

    ActionForm在早期的Struts1中被广泛用于接收和验证用户输入,但在Struts2中,这个概念已经被更先进的模型驱动机制所取代。不过,这里提到的"ActionForm自动填充表单"可能是指Struts2中的一种特性,即模型驱动...

    STRUTS ActionForm乱码,servlet全局过滤器转义编码。

    Struts框架中的ActionForm乱码问题以及Servlet全局过滤器的转义编码处理是Java Web开发中常见的字符编码问题。在开发基于Struts的Web应用时,乱码主要出现在三个方面:页面显示乱码、参数传递乱码以及国际化资源文件...

    struts中配置动态ActionForm

    最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助。在此谢谢各位!...

    ActionForm

    【ActionForm】是Java Web开发中的一个概念,主要在Struts框架中被广泛使用。它是一种模型层对象,用于接收用户从视图层(通常是一个HTML表单)传递过来的数据,并将这些数据转发到控制器(Controller)进行业务逻辑...

    struts框架在ActionForm中使用实体对象

    最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助。在此谢谢各位!...

    Struts中不同的Action和ActionForm组合.rar

    在这个名为“Struts中不同的Action和ActionForm组合.rar”的压缩包中,主要探讨的是Struts框架中Action和ActionForm的组合使用方式,以及它们在处理用户请求和数据验证过程中的作用。以下是对这个主题的详细解释。 ...

    struts课堂资料\第五章(动态ActionForm与控制器)

    在"第五章(动态ActionForm与控制器)"的课堂资料中,我们将深入理解Struts框架中的关键概念,特别是ActionForm和控制器的动态使用。 一、ActionForm类 ActionForm是Struts框架中的表单bean类,用于接收用户在JSP页面...

    struts1和struts2的区别

    输入捕获方面,Struts1使用ActionForm对象来收集用户输入,ActionForm必须继承基类,有时会导致代码冗余。Struts2则直接将Action的属性作为输入属性,不再需要额外的ActionForm,支持更丰富的对象类型,如业务对象,...

    struts1.2 from表单提交包含list的对象

    总结来说,Struts1.2处理包含列表对象的表单提交涉及到表单设计、ActionForm的创建、Action类的编写以及Struts框架的内部机制。通过理解这些知识点,开发者能够有效地管理用户输入的复杂数据结构,并在后端进行处理...

Global site tag (gtag.js) - Google Analytics