- 浏览: 566642 次
文章分类
- 全部博客 (235)
- 数据库 (12)
- j2se (10)
- JQuery (2)
- 经验总结 (4)
- 防毒 (1)
- Struts (20)
- Spring (12)
- 项目 (3)
- 电脑维修项目 (1)
- Eclipse (2)
- JSP (13)
- mysql (5)
- Hibernate (54)
- ssh (1)
- 学习网站 (1)
- tomcat (9)
- servlet (24)
- java语言基础 (1)
- jbpm (1)
- linux (0)
- 技巧积累 (1)
- javaBean (2)
- 设计模式 (2)
- 实用的操作 (9)
- oracle (1)
- UML学习 (1)
- 版本控制 (1)
- 框架 (9)
- javaWeb基础 (13)
- c语言 (0)
- ant (0)
- 关于权限 (3)
- 真正开发有用 (5)
- javascript (2)
- 算法 (1)
- J2EE (1)
- junit (1)
最新评论
-
alleni123:
不错 一搜就搜到这个了
ssession和servletContext的比较 -
hua7381:
楼主,你真实帮了大忙了!!
万能乱码处理---url传中文 -
albrich:
1楼是正解
摘] 装了个Tomcat遇到的问题 -
JA_mcj:
ssession和servletContext的比较 -
haotw:
看了很有帮助,总算对hibernate的延迟加载有一定的了解了 ...
[转]hibernate延迟加载
版权所有:(xiaodaoxiaodao)蓝小刀 xiaodaoxiaodao@gmail.com <o:p></o:p>
http://www.blogjava.net/xiaodaoxiaodao/archive/2007/05/31/121264.html <o:p></o:p>
转载请注明来源/作者<o:p></o:p>
Struts 学习笔记之ActionForm<o:p></o:p>
<o:p> </o:p>
Struts 中定义了一些JavaBeans,主要是以ActionForm为父类扩展开来的,如下图:<o:p></o:p>
<o:p> </o:p>
<o:p></o:p>
<o:p> </o:p>
① org.apache.struts.action包中<o:p></o:p>
public abstract class ActionForm implements Serializable<o:p></o:p>
public class DynaActionForm extends ActionForm implements DynaBean<o:p></o:p>
<o:p> </o:p>
② org.apache.struts.validator包中<o:p></o:p>
public class ValidatorForm extends ActionForm implements Serializable<o:p></o:p>
public class DynaValidatorForm extends DynaActionForm<o:p></o:p>
implements DynaBean, Serializable<o:p></o:p>
<o:p> </o:p>
③ org.apache.struts.validator包中<o:p></o:p>
public class ValidatorActionForm extends ValidatorForm implements Serializable<o:p></o:p>
public class DynaValidatorActionForm extends DynaValidatorForm<o:p></o:p>
implements DynaBean, Serializable<o:p></o:p>
<o:p> </o:p>
1 . ActionForm中比较常用的两个方法是reset()和validator():<o:p></o:p>
// 恢复ActionForm属性的默认值,如把boolean型设为true/false,字符串设为null。<o:p></o:p>
public void reset( ActionMapping mapping, HttpServletRequest request ) { }<o:p></o:p>
// validate 只检查数据格式和语法,不检查数据是否符合业务逻辑。<o:p></o:p>
public ActionErrors validate( ActionMapping mapping, HttpServletRequest request ) { return (null); }<o:p></o:p>
这两个方法的默认实现是不执行任何操作,我们可以重写这两个方法来实现相关逻辑。<o:p></o:p>
<o:p> </o:p>
注: 对于每个request,控制器都会先调用ActionForm的reset()方法,然后表单数据组装到ActionForm中。如ActionForm在request范围内,那么对于每个新的request请求都会创建新的ActionForm实例。新实例创建后,如果它的属性已经被初始化为默认值,那么接着再在reset()方法中把属性设为默认值不是很有必要,这时可以让reset()方法为空。<o:p></o:p>
<o:p> </o:p>
对于session范围内的ActionForm,同一ActionForm实例会被多个请求共享,reset()方法在这种情况下极为有用。<o:p></o:p>
<o:p> </o:p>
2 . 其中,ActionForm需要我们创建一个formbean类继承ActionForm,在ActionForm中可以定义一些property和get/set方法。<o:p></o:p>
ActionForm 的property必须声明然后才可以使用,不过在查询时我们常常需要输入一些查询条件,这些查询条件(property)其实不需要在formbean中声明,这时可以使用Map对象来封装整个查询表单提交的数据,如下:<o:p></o:p>
public class MapForm extends ActionForm {<o:p></o:p>
private Map map = null;<o:p></o:p>
public void setMap(Map map) {<o:p></o:p>
this.map = map;<o:p></o:p>
}<o:p></o:p>
public Map getMap() {<o:p></o:p>
return this.map;<o:p></o:p>
}<o:p></o:p>
// 增加查询条件(property)的get/set方法,并把数据放到Map中<o:p></o:p>
public void setAttribute(String attributeKey, Object attributeValue) {<o:p></o:p>
map.put(attributeKey, attributeValue);<o:p></o:p>
}<o:p></o:p>
public Object getAttribute(String attributeKey) {<o:p></o:p>
Object keyValue = map.get(attributeKey);<o:p></o:p>
return keyValue;<o:p></o:p>
}<o:p></o:p>
} <o:p></o:p>
<o:p> </o:p>
在页面上可以通过<o:p></o:p>
<html:text property="attribute(id)"> </html:text> <o:p></o:p>
来获取表单数据,这会调用getAttribute("id")方法。<o:p></o:p>
<o:p> </o:p>
3 . 其中,Dyna开头的动态ActionForm不需要创建具体的ActionForm类,只需通过Struts的配置文件就可以完成ActionForm的全部配置,如:<o:p></o:p>
<form-bean type="org.apache.struts.action.&lt;strong style=" name="optionsForm"> </form-bean> DynaActionForm"><o:p></o:p>
<form-property type="java.lang.String" name="fruit1" initial="Pear"> </form-property> <o:p></o:p>
<form-property type="java.lang.String" name="fruit2" initial="Apple"> </form-property> <o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
4 . 其中,含有validator的ActionForm用来进行表单验证,验证方法有两种。<o:p></o:p>
<o:p> </o:p>
① 在struts-config.xml中设置action的validate属性为"true"(默认为"true"),<o:p></o:p>
<action path="/updateUser"></action>
type="com.cn.lively.action.UpdateUserAction"<o:p></o:p>
name="userForm"<o:p></o:p>
scope="request"<o:p></o:p>
input="/jsp/updateUser.jsp"<o:p></o:p>
cancellable="true"<o:p></o:p>
validate="true" ><o:p></o:p>
<forward name="success" path="/jsp/validator/updateUserResults.jsp"></forward><o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
并且在相应的formbean中重写其中的validate方法,在validate方法中实现自己的数据验证逻辑。<o:p></o:p>
<o:p> </o:p>
② 通过validation框架进行验证,这分为两步:<o:p></o:p>
⑴ 在struts-config.xml中配置validation插件,<o:p></o:p>
<plug-in classname="org.apache.struts.validator.ValidatorPlugIn"></plug-in> <o:p></o:p>
<set-property property="pathnames"></set-property>
value="/org/apache/struts/validator/validator-rules.xml,<o:p></o:p>
/WEB-INF/validation.xml" /><o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
⑵ 配置formbean,有下面两种方法:<o:p></o:p>
<o:p> </o:p>
㈠ 使自己的formbean类继承含有validator的ActionForm<o:p></o:p>
public class UserForm extends ValidatorForm{<o:p></o:p>
private String userName;<o:p></o:p>
public String getUserName() {<o:p></o:p>
return userName;<o:p></o:p>
}<o:p></o:p>
public void setUserName(String userName) {<o:p></o:p>
this.userName = userName;<o:p></o:p>
}<o:p></o:p>
} <o:p></o:p>
并配置struts-config.xml文件:<o:p></o:p>
<form-bean name="&lt;strong style="> </form-bean> userForm" type="com.cn.lively.formbean.UserForm"><o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
㈡ 使自己的formbean类继承含有validator的DynaValidatorForm<o:p></o:p>
<form-bean name="&lt;strong style="> </form-bean> userForm" type="org.apache.struts.validator.DynaValidatorForm"><o:p></o:p>
<form-property type="java.lang.String" name="userName"> </form-property> <o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
⑶ 配置validation.xml文件:<o:p></o:p>
<formset> </formset> <o:p></o:p>
userForm"><o:p></o:p> <o:p></o:p>
<field property="userName" depends="required"></field><o:p></o:p>
<arg key="userForm.userName"></arg><o:p></o:p>
<o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
注: 注意 validation.xml文件中的userForm是struts-config.xml文件中formbean的名字。<o:p></o:p>
<o:p> </o:p>
关于arg的几个属性如下:<o:p></o:p>
bundle :指定资源文件名,如不指定,则从默认资源文件中读取<o:p></o:p>
key :从资源文件 ActionResources.properties 中得到的值<o:p></o:p>
resource :key所指定的信息是否来自外部的资源文件,默认为true。如果为true,则代表key为buddle属性所指定的资源文件中的key。 <o:p></o:p>
position ,这个arg中的值用来替换信息中的哪一部分, 需要替换的部分以{n}标志。<o:p></o:p>
<o:p> </o:p>
5 . 关于ValidatorForm/DynaValidatorForm与ValidatorActionForm/DynaValidatorActionForm之间的区别<o:p></o:p>
<o:p> </o:p>
对于一个actionform,可以被多个action所使用,而每个action可能需要的验证字段都不一样,而validation.xml中配置的验证方式(如
<o:p></o:p>)是对这个formbean进行的.<o:p></o:p><o:p> </o:p>
① 如果需要针对每个action来验证,则必须使formbean继承ValidatorActionForm(或者直接配置DynaValidatorActionForm)。如下两种方法:<o:p></o:p>
㈠ 使自己的formbean类继承含有validator的ActionForm<o:p></o:p>
public class UserForm extends ValidatorActionForm{<o:p></o:p>
……<o:p></o:p>
} <o:p></o:p>
并配置struts-config.xml文件:<o:p></o:p>
<form-bean name="&lt;strong style="> </form-bean> userForm" type="com.cn.lively.formbean.UserForm"><o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
<action-mappings></action-mappings><o:p></o:p>
<action path="&lt;strong style="></action>/createUser"<o:p></o:p>
type="com.cn.lively.action.CreateUserAction"<o:p></o:p>
name="userForm"/><o:p></o:p>
<action path="&lt;strong style="></action>/updateUser"<o:p></o:p>
type="com.cn.lively.action.UpdateUserAction"<o:p></o:p>
name="userForm"/><o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
㈡ 使自己的formbean类继承含有validator的DynaValidatorActionForm<o:p></o:p>
<form-bean name="&lt;strong style="> </form-bean> userForm" type="org.apache.struts.validator.DynaValidatorActionForm"><o:p></o:p>
<form-property type="java.lang.String" name="userName"> </form-property> <o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
<action-mappings></action-mappings><o:p></o:p>
<action path="&lt;strong style="></action>/createUser"<o:p></o:p>
type="com.cn.lively.action.CreateUserAction"<o:p></o:p>
name="userForm"/><o:p></o:p>
<action path="&lt;strong style="></action>/updateUser"<o:p></o:p>
type="com.cn.lively.action.UpdateUserAction"<o:p></o:p>
name="userForm"/><o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
② 配置validation.xml文件:<o:p></o:p>
<formset> </formset> <o:p></o:p>
/createUser"><o:p></o:p>
<field property="userName" depends="required"></field><o:p></o:p>
<arg key="userForm.userName"></arg><o:p></o:p>
<o:p></o:p>
/updateUser"><o:p></o:p> <o:p></o:p>
<field property="userName" depends="maxlength"></field><o:p></o:p>
<arg key="userForm.userName"></arg><o:p></o:p>
<arg position="0" key="prompt.max"></arg><o:p></o:p>
<arg style="mso-tab-count: 5" name="maxlength" key="${var:maxlength}" resource="false"></arg> position="1" /><o:p></o:p>
<o:p></o:p><o:p></o:p>
<var-name></var-name>maxlength<o:p></o:p>
<var-value></var-value>10<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
<o:p> </o:p>
注: 注意validation.xml文件中的/createUser和/updateUser是struts-config.xml文件中action的path路径。<o:p></o:p>
<o:p> </o:p>
如果我们查看struts源码,可以很清楚的看到ValidatorForm/DynaValidatorForm与ValidatorActionForm/DynaValidatorActionForm之间的区别<o:p></o:p>
ValidatorForm 中的方法<o:p></o:p>
* @return validation key - the form element's name in this case <o:p></o:p>
public String getValidationKey(ActionMapping mapping, <o:p></o:p>
HttpServletRequest request) { <o:p></o:p>
return mapping.getAttribute(); // 返回formbean的名字<o:p></o:p>
} <o:p></o:p>
<o:p> </o:p>
ValidatorActionForm 中的方法<o:p></o:p>
* @return validation key - the action element's
- Struts学习笔记之ActionForm.rar (83 KB)
- 描述: 比上面的完整
- 下载次数: 48
发表评论
-
[转]Struts1.2 验证用户是否登陆 两种方法
2007-12-05 21:43 5354Struts1.2 验证用户是否登陆 两种方法 ... -
struts解决乱码问题
2007-09-15 16:38 1712在中文插如mysql数据库的时候出现乱码问题. 解决方法有2 ... -
[摘]struts2原来如此
2007-09-14 18:03 1286许多朋友可能对于Struts 2.0与WebWork关系还搞 ... -
[摘]在Struts 2中实现CRUD
2007-09-14 18:01 1203http://www.blogjava.net/max/arc ... -
简单测试的方法
2007-09-14 17:03 1011简单测试的方法: 在类里面加一个主函数进行测试,测试完了之后可 ... -
struts国际化
2007-09-10 15:38 1366PropertiesEditor插件 更新站点: ... -
validatorForm和DynavalidatorForm
2007-09-09 22:23 2943这两个是用于生成脚本的验证.类似javascript效果 相同 ... -
[摘]actionMessages(),actionError()介绍
2007-09-09 20:08 5497actionMessages(),actionError()介 ... -
[摘]struts入门(1)
2007-09-09 19:10 1391bbbh.org.NET Visual Basic ASP V ... -
ActionErrors和ActionError
2007-09-09 19:04 3251/**ActionErrors和ActionError都是Ac ... -
struts中的验证
2007-09-09 17:24 1055Form里面的validate方法进行格式验证:比如说长度,比 ... -
[摘]ActionError和ActionMessage
2007-09-09 16:51 2036ActionForm是表單的物件化,有關於表單資料的完整性檢查 ... -
struts中的listenter监听
2007-09-09 15:12 1738ServletContextListener, Servlet ... -
struts执行流程
2007-09-09 13:48 1487My processPreprocess.......---- ... -
中文乱码问题
2007-09-09 12:45 1027在Struts1.2中在RequestProcessor的控制 ... -
[摘]Struts中RequestProcessor
2007-09-09 11:14 2292From Gossip@caterpillar Struts ... -
Struts中actionservlet(1)
2007-09-09 09:56 1647ActionServlet类对应的类名为org.apche.s ... -
[摘]struts入门
2007-09-09 09:13 1060Struts框架 struts框架具有 ... -
Struts掌握这么几个基本
2007-09-08 22:32 1173Struts基本原理,Form, 国际化,控制器的应用,Str ...
相关推荐
Struts学习笔记之ActionForm ActionForm是Struts框架中的一种重要组件,用于封装和处理用户的表单数据。在Struts中,ActionForm是继承自JavaBeans的,主要用于处理用户的表单数据和业务逻辑。下面是ActionForm的...
ValueStack是一个对象栈,它持有ActionContext上下文中的所有对象,包括Action实例、ActionForm、Session、Request等。OGNL通过ValueStack进行数据查找和操作,简化了视图层的数据绑定。 **五、Tags** Struts2提供...
在本“Struts学习笔记(四)”中,我们将会深入探讨Struts框架的核心概念、工作原理以及如何实际运用到项目开发中。 首先,Struts框架的核心目标是提供一个结构化的开发环境,将业务逻辑、数据处理和用户界面有效地...
Struts是Java EE平台上的一款流行开源MVC框架,...学习Struts不仅有助于理解MVC模式,也能为其他类似的Web框架打下坚实的基础。通过深入研究和实践,开发者可以充分利用Struts的特性,构建出高效、稳定的Web应用程序。
本学习笔记将对Struts1和Struts2进行详细解析。 **Struts1简介** Struts1是早期流行的MVC框架,它的核心是ActionServlet,负责处理HTTP请求,并通过ActionForm对象收集表单数据,然后调用Action类的方法进行业务...
`struts-config.xml` 是Struts的核心配置文件,定义了Action、ActionForm和ActionForward等信息。 **请求驱动的MVC框架**: 像Struts这样的框架是基于请求驱动的,根据URI决定调用哪个Action类来处理请求。Action...
"Struts学习笔记"显然是一个针对Struts框架深入学习的资料集合,旨在帮助初学者从基础开始,逐步掌握Struts的核心概念和实践技巧。 在学习Struts的过程中,有几个关键知识点是必须理解的: 1. **MVC模式**:MVC是...
本篇学习笔记将深入探讨Struts的核心概念、工作原理以及如何在实际项目中应用Struts来构建高效、可维护的Web应用程序。 一、Struts框架概述 Struts作为经典的MVC框架,它为Java开发者提供了一种组织应用程序逻辑的...
Struts是Java Web开发中的一个开源框架,它主要用于构建基于MVC(模型-视图-控制器)模式的应用程序。...不过,这只是Struts学习的一个起点,深入掌握还需要不断实践和探索更多的高级特性和最佳实践。
Struts1学习笔记总结 Struts1是一种基于MVC模式的Web应用框架,它可以帮助开发人员快速构建高效、可维护的Web应用程序。下面是对Struts1学习笔记的总结,涵盖了Struts1的基本概念、工作流程、标签、国际化等方面的...
### Struts2学习笔记知识点详解 #### 一、基础知识 **1. Struts2核心组件** - **XWork-2.0.5.jar**: 引入WebWork框架的核心功能,这是Struts2的一个重要组成部分,提供了请求处理的核心逻辑。 - **Commons-...
这个版本的学习笔记主要集中在 Struts 框架的基础知识、架构和核心组件上,帮助开发者更好地理解和应用这个经典版本。在这个笔记中,我们将深入探讨 Struts 的工作原理、配置以及它如何简化 MVC(模型-视图-控制器)...