以前没注意struts里的ActionForm是怎样,每次拿个 DynaValidateForm就上去了
现在开始回归基础,务实的想写写个非应付式的项目,锻炼下自己,把问题都看透一些
1,
关于静态ActionForm和动态DynaActionForm,
网上有很多比较,两者区别很明显的是一个需要自己写出class出来,后者可以在xml配置,struts根据xml生成,相应的ActionForm
动态ActionForm可以省下很多ActionForm类,而且由于是写在XML,不想静态类,稍做修改就需要重启服务器,但是会有一个小问题,以后都是用DynaForm.get(String)这样取类了,没有ActionForm的getter了,这样写代码的时候,因为编译器还没智能到可以帮你检查出String是不是你想要的那个,所以会容易出错一些
2,ActionForm和ValidatorForm的区别[动态的一样区别]
ValidatorForm是ActionForm的一个子类,ValidatorForm重写了validate()方法(当然也增加了方法),可以支持validator框架的xml验证了,会很方便的省下很多java验证代码
3,ValidatorForm和ValidatorActionForm
这两者去区别很微小,
后者是前者子类,
看源代码可以发现后者只是将前者的
public String getValidationKey(ActionMapping mapping,
HttpServletRequest request) {
return mapping.getAttribute();
}
重写成了
public String getValidationKey(ActionMapping mapping,
HttpServletRequest request) {
return mapping.getPath();//仅此行不同
}
表现出来的也就是在使用validate框架的时候就是在
<form name="XXXForm">
前者是看的form
<form name="/XXXPath">
后者看到的是Action的path
4,最后要提一下Map-backed ActionForm
它是在ActionForm需要动态扩充的时候使用的
下文转自本人收藏的一部struts学习笔记中,作者不详,不好意思了
/********************我是长长的分割线**********************************/
有的時候您的表單內容可能是由程式動態產生的,這時候表單上的欄位與參數事先並無法得知,因而無法事先決定好 ActionForm 的屬性,在Struts 1.1中,您可以使用Map-backed ActionForm,這樣的ActionForm使用Map來儲存表單的欄位值,一個例子如下:
UserForm.java
package onlyfun.caterpillar;import java.util.*; import javax.servlet.http.*; import org.apache.struts.action.*;public class UserForm extends ActionForm { protected Map map = new HashMap(); public void setValue(String key, Object value) { map.put(key, value); } public Object getValue(String key) { return map.get(key); } public Map getMap() { return map; } public void reset(ActionMapping mapping, HttpServletRequest req) { map.clear(); } }
在Action類別中,您可以如下面的方式來取值:
LoginAction.java
package onlyfun.caterpillar; import javax.servlet.http.*; import org.apache.struts.action.*; public class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { UserForm userForm = (UserForm) form; String name = (String) userForm.getValue("name"); String password = (String) userForm.getValue("password"); ..... } }
/********************我是长长的分割线**********************************/以上均本人新手探索,欢迎智者指正批评
最后,本人对自己的今天的小学习做个小总结:
1,看源代码很爽,有种偷窥的快感,哈哈,下次多看看
2,终于了解动态构造类是怎么干的了,一直想不通怎么给java类动态加属性,原来可以像Map-backed ActionForm一样,用map实现,小小猜测,欢迎指正
分享到:
相关推荐
Struts1是一个经典的Java Web框架,它在早期的Web应用开发中被广泛应用。ActionForm是Struts1中处理用户输入的核心组件,它负责接收、验证和封装来自...理解并掌握这一技术,对于开发基于Struts1的Web应用至关重要。
Struts学习笔记之ActionForm ActionForm是Struts框架中的一种重要组件,用于封装和处理用户的表单数据。在Struts中,ActionForm是继承自JavaBeans的,主要用于处理用户的表单数据和业务逻辑。下面是ActionForm的...
ActionForm是Struts框架中的一个重要组件,它是模型层与控制器层之间的桥梁,用于处理用户在表单中提交的数据。 在Struts框架中,ActionForm类负责收集、验证和封装来自用户界面的数据。当用户通过HTML表单提交请求...
Struts框架是Java Web开发中常用的MVC框架之一,它为开发者提供了一种结构化、易于维护的应用程序构建方式。在Struts中,ActionForm类是处理用户输入...理解并熟练运用这一机制对于开发健壮的Struts应用程序至关重要。
主要是actionForm的基本验证,重写validate方法,返回actionErrors,然后根据资源文件显示错误。 这是一个demo例子,直接导入eclispe中即可。 并且这部分内容会在相应的博客中介绍,稍后会更新博客。
ActionForm在早期的Struts1中被广泛用于接收和验证用户输入,但在Struts2中,这个概念已经被更先进的模型驱动机制所取代。不过,这里提到的"ActionForm自动填充表单"可能是指Struts2中的一种特性,即模型驱动...
它继承自org.apache.struts.action.ActionForm接口,并包含多个字段来存储表单中的数据。当用户提交表单时,Struts框架会自动将表单数据填充到ActionForm实例中。 为了提交多行数据,我们通常会在HTML页面中使用多...
4. **使用ActionForm**: 将Spring的ApplicationContext引入Struts,使ActionForm能够通过依赖注入获取SessionFactory,然后在业务逻辑中调用Hibernate的方法进行数据库操作。 5. **配置过滤器**: 设置Struts与Spring...
Struts ActionForm是Java Web开发中Struts框架的一个核心组件,主要用于处理用户在表单中的输入数据。在早期的Struts 1版本中,ActionForm是MVC设计模式中的Model部分,它作为控制器(Controller)与视图(View)...
最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助。在此谢谢各位!...
ActionForm是Struts框架中一个关键组件,用于处理用户从视图层提交的数据,并与控制器进行交互。这篇学习笔记将深入探讨ActionForm的作用、使用方法以及它在Struts架构中的位置。 在MVC模式中,ActionForm扮演了...
在动态ActionForm中,我们需要理解如何自定义TypeConverter以便处理各种数据类型。 5. **验证逻辑**:ActionForm通常包含验证逻辑,确保用户输入的数据符合业务规则。在动态ActionForm中,验证规则可能需要动态加载...
最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助。在此谢谢各位!...
2. `ActionFormUtil.java`: 这可能是一个通用的ActionForm辅助类,提供了一些对ActionForm操作的静态方法,比如验证表单数据、填充默认值或进行数据转换等。 3. `config.xml`: 这是一个配置文件,很可能包含了Struts...
Struts1和Struts2是两个非常著名的Java Web框架,它们在设计模式、可测试性、输入处理和表现层等方面...总的来说,Struts2相对于Struts1在灵活性、可测试性、输入处理和表现层控制上有所改进,使得开发更为高效和便捷。
视频第二部分 下载前请阅读博客文章详细 博文链接:https://dlivan.iteye.com/blog/65870
在这个名为“Struts中不同的Action和ActionForm组合.rar”的压缩包中,主要探讨的是Struts框架中Action和ActionForm的组合使用方式,以及它们在处理用户请求和数据验证过程中的作用。以下是对这个主题的详细解释。 ...
对于动态ActionForm,可能需要在运行时动态构建这些映射。 四、总结 "第五章(动态ActionForm与控制器)"的学习重点在于掌握Struts框架中ActionForm和控制器的动态使用,理解它们如何协同工作以处理用户请求并驱动...
NULL 博文链接:https://angelnight.iteye.com/blog/551378