struts中的formbean主要是用来封装(通过反射)浏览器或使用http协议的客户端提交的表单数据,我想大家在这一点上已达成共识,没什么好说的,在这层意义上,<html:text>之类表单struts tag,似乎没有什么用武之地,实际上也确实如此,使用普通的html tag可达到同样效果.但有一点很重要的是:struts tag可以自动从后台获取数据来填充页面.
下面举个例子来探讨这种机制:
现有两个action类,AAction,BAction
两个Form类,AForm,BForm
一个页面:A.jsp
这五个元素关系如下:
AAction 使用AForm,BAction使用BForm,AAction对应A.jsp,AForm和BForm都含有x和y属性,A.jsp的部分关键代码如下:
<html:form action="/BAction">
<html:text property="x" />
<html:text property="y"/>
</html:form>
当点击AAction(假设在其中使用request.setAttribute("VO",AForm),并且AForm.x=10,AForm.y=20时),出现A.jsp,但输入框x,和y空白,但如果AForm就是BForm的话,两个输入框会出现10和20,其实此时并不需要写request.setAttribute("VO",AForm),Struts有个很重要的特点是:当启动一个action时,struts实例化相应的form(如果有的话),并在forward的时候,会自动写上request.setAttrbute(formname,form),formname即你在配置文件中定义的form名,在本例中点击AAction,当AAction forward的时候,会自动写上request("AForm",AForm),所以当你想偷懒直接将form 传到页面上填充数据时,就不需要显式的这样写了.
当然如果AForm并不是BForm,你也可以这样写达到这种效果
<html:text name="VO" property="x"/>
<html:text name="VO" property="y"/>
由以上可以推断:
<html:form action="/BAction">
<html:text property="x" />
<html:text property="y"/>
</html:form>
实际上就是
<html:form action="/BAction">
<html:text name="BForm" property="x" />
<html:text name="BForm" property="y"/>
</html:form>
值得注意的是BForm可以为空,如果你将name="BForm" 改为name="VO"当然也可以是别的名,VO不能为空
由此当AForm并不是BForm的时候,我们有一种更简便的方案,即写上request.setAttribute("BForm" ,AForm),
这样就不用改页面了,但必须注意AForm必须有相应的属性
后记:
j2ee的常规做法并不推荐返回form作为jsp的数据,而应该返回一个value object或data transfer object
分享到:
相关推荐
在这个例子中,我们将深入探讨如何在Struts1.2中实现动态FormBean并添加验证功能。 首先,让我们理解什么是动态FormBean。在传统的Struts1应用中,每个ActionForm Bean都是一个Java类,它对应于HTML表单的字段,并...
2. **配置文件详解**:深入学习struts-config.xml,它是Struts的核心配置文件,包含Action、Forward、FormBean、MessageResources等元素的配置方法。 3. **控制器(Controller)**:探讨ActionServlet的工作原理,...
Struts是一个经典的Java Web开发框架,它以Model-View-Controller(MVC)设计模式为核心,帮助开发者...通过深入研究和模仿这些代码,你可以更好地掌握Java Web开发的核心技术,并为后续更复杂的项目打下坚实的基础。
在本项目中,“struts1项目代码”提供了从头到尾的实现,包括数据库连接和交互,这为我们深入理解Struts1的工作原理和实际应用提供了宝贵的资源。 首先,我们需要了解Struts1的核心组件: 1. **ActionServlet**:...
通过研究这个源码包级文档,开发者不仅能深入理解Struts 1.3.5的工作原理,还能提升对MVC设计模式的理解,为后续使用更新的Web框架如Struts 2或Spring MVC打下基础。同时,对于维护旧系统的开发者来说,这将是一份...
- **深入源码**:如果时间允许,可以深入研究Struts的源码,了解其实现原理。 通过上述知识点的介绍,相信初学者能够对Struts有一个较为全面的认识,并能够顺利入门。后续的学习过程中,还需要不断深入学习Struts的...
Struts 是一个开源的JavaEE框架,主要用于构建和维护MVC(Model-View-Controller)架构的...通过深入研究这个压缩包中的“chap27”,你将能够进一步提升你的Struts技能,为构建更加健壮、高效的Web应用打下坚实基础。
Struts是一个开源的Java EE框架,主要用于构建基于MVC(Model-View-Controller)模式的Web应用程序。在Java Web开发中,Struts API是...通过深入研究这个文档,开发者可以更好地理解和运用Struts框架,提升开发效率。
深入研究Struts1的源码,开发者可以学习到如何优雅地处理HTTP请求、如何组织业务逻辑、如何实现视图和模型的解耦,以及如何使用XML配置文件进行应用配置。这对于理解其他基于MVC的框架,如Spring MVC,也有很大帮助...
同时,研究struts-config.xml能帮助理解请求的路由规则。最后,通过查看JSP页面,可以学习如何将数据展示给用户。 总的来说,这个案例提供了实践Struts1.2框架的机会,有助于加深对MVC模式的理解,并提升Java Web...
1. **了解配置文件**:研究struts-config.xml,理解各个元素的用途,比如Action的配置、FormBean的声明、以及forwards的定义。 2. **分析Action和ActionForm**:查看Action类如何处理请求,ActionForm如何封装用户...
Struts 1.2.9 是一个非常经典的Java Web开发框架,由Apache软件基金会开发并维护。...通过下载并研究"struts-1.2.9-all-bin"压缩包,开发者可以深入了解Struts的工作原理,并将其应用到实际项目中。
11. ** strutstags-html** 和 ** strutstags-bean**:深入研究这两个核心标签库,理解它们在构建用户界面中的作用。 12. **Struts与Spring集成**:介绍如何将Struts与Spring框架集成,实现依赖注入和事务管理,提升...
4. **RESTful API实现**:研究如何使用Struts2构建符合REST原则的API接口。 总的来说,Struts2项目DOE可能涵盖了一系列关于框架配置、性能优化、安全性提升以及应用设计等方面的实验性工作,旨在提高项目的效率、可...
"struts的源码"可能涉及对Struts框架内部工作原理的深入研究,这有助于开发者理解其底层机制,如请求处理流程、拦截器的运作方式、以及如何自定义ActionSupport类以满足特定需求。通过阅读源码,开发者可以学习到...
/* 取得用户请求,做相应数据库操作,略 */ } } FormBean的产生是为了提供数据给ActionBean,在ActionBean中可以取得FormBean中封装的数据,经相应的逻辑处理后,调用业务...
在"运用STRUTS框架结构的电子商务系统JSP源码"中,我们可以深入学习和理解如何将STRUTS框架应用于实际的电子商务场景。 1. **STRUTS框架基础**:STRUTS的核心是ActionServlet,它负责接收HTTP请求,并通过配置文件...
Struts2是一个非常流行的Java Web框架,用于构建企业级的MVC(模型-视图-控制器)应用程序。在这个“struts2文件上传文件的小实例”中,我们将探讨...因此,深入研究Struts2文件上传的实现细节和最佳实践是至关重要的。