- 浏览: 1230939 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
为了减少Form类,DynaActionForm得到应用
配置如下:
<form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="name" type="java.lang.String" ></form-property> <form-property name="age" type="java.lang.Integer"></form-property> </form-bean>
<action path="/dynaAction" type="com.lwf.struts.action.DynaAction" name="dynaForm"> <forward name="success" path="/dynaResult.jsp"></forward> </action>
自定义Action类
package com.lwf.struts.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.PropertyUtils; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm; public class DynaAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // DynaActionForm dynaForm = (DynaActionForm)form; // String name = (String)dynaForm.get("name"); // Integer age = (Integer)dynaForm.get("age"); String name = (String)PropertyUtils.getSimpleProperty(form, "name"); Integer age = (Integer)PropertyUtils.getSimpleProperty(form, "age"); // request.setAttribute("name", name); // request.setAttribute("age", age); return mapping.findForward("success"); } }
转发到结果文件:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> dyna result: <br> ${name } <br> ${age } <br> ${dynaForm.map.name } ${dynaForm.map.age } </body> </html>
需要注意的地方:
根据struts源代码Form类的处理:
protected ActionForm processActionForm(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping) { // Create (if necessary) a form bean to use ActionForm instance = RequestUtils.createActionForm(request, mapping, moduleConfig, servlet); if (instance == null) { return (null); } // Store the new instance in the appropriate scope if (log.isDebugEnabled()) { log.debug(" Storing ActionForm bean instance in scope '" + mapping.getScope() + "' under attribute key '" + mapping.getAttribute() + "'"); } if ("request".equals(mapping.getScope())) { request.setAttribute(mapping.getAttribute(), instance); } else { HttpSession session = request.getSession(); session.setAttribute(mapping.getAttribute(), instance); } return (instance); }
我们看到最后会把对应的form放到请求域中.
所以在上面的DynaAction类及dynaResult.jsp文件中,演示了几种方法设置和取form属性值.
DynaActionForm dynaForm = (DynaActionForm)form; String name = (String)dynaForm.get("name"); Integer age = (Integer)dynaForm.get("age");
request.setAttribute("name", name); request.setAttribute("age", age);
这时候我们在dynaResult.jsp中要取得name,age属性的值.就有两种方法.
一种就是因为我们设置了两个值进入请求域中,所以可以直接取
${name } ${age }
上面代码意思就相当于
request.getAttribute("name") ; request.getAttribute("age") ;
另一种:因为我们说过ActionForm实例化并收集数据后,会自动将该form放到域中.
${dynaForm.map.name } ${dynaForm.map.age }
这里相当于:
dynaForm.getMap().getName(); dynaForm.getMap().getAge(); 这里要理解DynaActionForm的实现,它实际上先取到表单上的值,然后把 <form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="name" type="java.lang.String" ></form-property> <form-property name="age" type="java.lang.Integer"></form-property> </form-bean> 这里面的name,age属性与对应的表单入进HashMap中,我们在DynaAction中使用 DynaActionForm dynaForm = (DynaActionForm)form; String name = (String)dynaForm.get("name"); Integer age = (Integer)dynaForm.get("age"); 实际上就是从map中拿出值.
在取值的时候可以用
String name = (String)PropertyUtils.getSimpleProperty(form, "name"); Integer age = (Integer)PropertyUtils.getSimpleProperty(form, "age");
来代替
DynaActionForm dynaForm = (DynaActionForm)form; String name = (String)dynaForm.get("name"); Integer age = (Integer)dynaForm.get("age");
这两段代码是一样的意思,只不过一个是采用第三方类而以.
另外要注意的是当我们使用
String name = (String)PropertyUtils.getSimpleProperty(form, "name"); Integer age = (Integer)PropertyUtils.getSimpleProperty(form, "age");
时我们的dynaResult.jsp上面仍然使用:
${dynaForm.map.name } ${dynaForm.map.age }
来获取属性值 ..
这里面你可能会说DynaAction中都没有见到dynaForm,怎么能取出来呢..
这里dynaForm应理解为struts_config.xml中的formBean的name值.
也可以重新设置属性的值:
下面两段代码等价:
DynaActionForm dynaForm = (DynaActionForm)form; dynaForm.set("name", "dddddddd");
与
PropertyUtils.setSimpleProperty(form, "name", "sssss");
都是对name属性的值进行设置
发表评论
-
DispatchAction 和DynaValidateActionForm 结合使用时的问题
2011-03-08 16:23 935使用DispatchAction使得程序员能够大大减少acti ... -
ActionForm中使用集合属性并自动组装数据
2011-01-18 14:32 929http://blog.csdn.net/m0085_cn/a ... -
Cannot find bean org.apache.struts.taglib.html.BEAN in any scope
2010-11-10 14:13 976开的过程中碰到问题:Cannot find bean org. ... -
Struts 结合 Validate框架验证详解
2010-10-25 14:00 1508转自:http://student.csdn.net/spac ... -
JSTL与struts1标签
2010-08-31 10:17 1555JSTL与struts标签: http://www.360d ... -
如何自动清空struts表单域
2010-06-30 17:44 1270为了某种需要,formBean的SCOPE设置成了ses ... -
form验证与动态验证框架
2010-06-06 17:22 1391form验证返回ActionErrors. 动态验证则实现J ... -
resourcebundleeditor在eclipse里面的设置和使用
2010-05-30 11:30 1752我们一般使用native2ascii工具得到struts资源文 ... -
使用DispatchAction分发
2010-04-07 18:04 1160应用中经常有增、删、改、查操作,如果象一前一样使用List ... -
forward属性与ForwardAction类
2010-04-07 17:08 1174forward属性与ForwardAction类在配置文件按以 ... -
struts容错处理
2010-04-07 15:20 1188struts容错处理: 当客户请求的action不存在的时候 ... -
struts声明式异常二
2010-04-07 15:18 1175上文如果资源文件改为: error.login.usernu ... -
struts声明式异常一
2010-04-06 23:10 1057struts声明式异常: 在配置文件中配置exception ... -
struts编程式异常--html:error与html:message
2010-04-03 11:39 2042struts编程式异常过程: 截获异常信息;创建异常信息; ... -
struts国际化,从资源文件读取异常信息
2010-04-03 01:56 1201示例演示登录时从资源文件读取用户名或密码错误信息 logon ... -
struts国际化,资源文件读取三
2010-04-02 23:42 1030本示例演示客户进行语言设置,从而更改整个系统语言. 客户在c ... -
struts国际化,资源文件读取二
2010-04-02 22:18 1638package com.lwf.struts.util; ... -
struts国际化,资源文件读取一
2010-04-02 00:19 1378国际化的发展 看本文之前可先看一下properties文件的 ... -
struts html标签自动保存提交的表单值。
2010-04-01 17:01 2064我们之前JSP提交值后如果还要取得值怎么做? 应该是取得a ... -
ActionMapping相关
2010-04-01 16:02 1086一、Map的设置map.put("path" ...
相关推荐
3. **创建表单Bean**:在Struts应用中,表单Bean(通常是DynaActionForm)用于封装用户输入的数据。对于文件上传,我们需要在Bean中声明一个类型为`org.apache.struts.upload.FormFile`的属性,比如`uploadFile`,它...
- 在`struts-config.xml`中定义DynaActionForm,`form-bean`元素下的`form-property`定义属性及其类型。 8. **表单属性类型**: - `type`属性用于指定表单属性的Java类型,例如:整数类型(`java.lang.Byte`等)...
它继承自 `org.apache.struts.action.DynaActionForm` 类,并且可以通过 `<form-property>` 标签在 `struts-config.xml` 文件中定义表单字段。 ```xml <form-bean name="xxForm" type="org.apache.struts.action....
Struts是Java Web开发中的一个经典框架,它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,极大地简化了Web应用的构建。ActionForm是Struts框架中一个关键组件,用于处理用户从视图层提交的...
<controller processorClass="org.apache.struts.action.DynaActionForm"> <!-- Controller配置 --> <!-- 全局转发配置 --> <!-- 国际化资源配置 --> </struts-config> ``` - **web.xml**:作为...
Struts7验证框架是用于Java Web开发中的一个...总的来说,Struts7验证框架和DynaActionForm是Struts框架中提高开发效率和代码质量的重要工具,它们帮助开发者轻松管理表单数据和验证逻辑,降低了J2EE应用程序的复杂性。
<form-bean name="actionForm" type="org.apache.struts.action.DynaActionForm"> <form-property name = "filedata" type = "org.apache.struts.upload.FormFile" /> </form-bean> </form-beans> ...
2. **JSP标签库**:Struts提供了` DynaActionForm`和`DynaValidatorForm`,它们是动态Form的基础。在JSP页面中,可以使用Struts的标签库动态显示和处理表单字段。 3. **ModelDriven接口**:ModelDriven接口允许...
<form-bean name="searchForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="keyword" type="java.lang.String"/> <form-property name="keyword" type="java.lang.String"/> </form-...
Struts是一个经典的Java Web开发框架,它简化了MVC(Model-View-Controller)模式的实现。本章主要讨论Struts框架中的高级...这些工具极大地丰富了Struts的功能,使得开发者能够构建出更加健壮和高效的Web应用程序。
- **动态ActionForm**:`org.apache.struts.action.DynaActionForm`,支持动态属性的增删改查。 #### 五、Struts1 连接池与多模块操作 **5.1 数据库连接池** Struts1可以集成C3P0等连接池,但文档中提到的问题...
在struts.xml中定义一个DynaActionForm,然后在Action中通过DynaActionForm获取属性。 9. **文件上传**:Struts2支持文件上传功能。在JSP中使用`enctype="multipart/form-data"`来指定文件上传的表单类型。在...
在"Struts原理(二)"中,我们将深入探讨如何利用Struts框架的一些高级特性,如DispatchAction、资源文件的国际化、错误信息的显示、DynaActionForm以及实体对象作为Form属性的使用。 **掌握DispatchAction** ...
2. **struts-bean.jar**:这个JAR文件包含了一些用于数据绑定和展示的类,如ValueStack、BeanUtils和 DynaActionForm。它们帮助将用户输入的数据映射到Java对象,并反之。 3. **struts-html.jar**:提供了各种HTML...
<form-bean name="dynForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="dynamicProperties" type="java.util.Map"/> </form-bean> </form-beans> ``` 在上述配置中,`...
Struts 是一个开源的JavaEE框架,用于构建可维护、结构清晰且易于扩展的企业级Web应用程序。它基于Model-View-Controller(MVC)设计模式,帮助开发者将业务逻辑、数据表示和用户界面分离,从而提高开发效率和代码...
<data-source key="exampleDS" type="org.apache.struts.action.DynaActionForm"> <!-- DataSource配置属性 --> ``` **3. ActionForward配置** `ActionForward`定义了请求成功或失败后的页面跳转。它可以是...
2. **struts-bean**: 提供了用于表示和管理Web应用中数据的Bean类,如 DynaActionForm,使得动态字段的管理更为方便。 3. **struts-html**: 提供了一系列JSP标签库,如html:form、html:submit等,方便在JSP页面上...
例如,你可以使用`org.apache.struts.action.DynaActionForm`动态表单类来注入数据源。 ```xml ``` 4. **在Action类中获取数据源**:在Action类中,通过`ActionServlet`的`getServletContext().lookup()`方法...
<form-bean name="messageForm" type="org.apache.struts.action.DynaActionForm"> ``` 定义了一个动态表单Bean,用于接收用户的输入数据。 #### 三、Spring配置文件详解 Spring框架的核心配置文件(如...