- 浏览: 1370348 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (453)
- Struts2 (4)
- Struts1 (16)
- Spring (9)
- Hibernate (5)
- AJAX (16)
- MS Server (9)
- Oracle (35)
- 测试技术 (5)
- 其他 (37)
- JSF (1)
- EJB (5)
- ASP.NET (9)
- iBATIS (5)
- Struts Spring Hibernate (2)
- HTML (12)
- Eclipse使用 (5)
- 设计模式 (5)
- JSP (32)
- 正则表达式 (2)
- 服务器 (12)
- Java基础 (48)
- MySQL (4)
- 面试 (22)
- UML (1)
- 数据结构 (3)
- Ant (2)
- 规范 (4)
- JavaScript (29)
- 软件使用及技巧 (25)
- PHP (1)
- DWR (3)
- FreeMarker (1)
- ExtJs (17)
- JFreeChart (9)
- Reports (2)
- JavaException (1)
- Java Mail (1)
- Flex (9)
- 异常 (12)
- Log4j (2)
- WebService (1)
- jQuery (1)
- Sybase (2)
- myeclipse_plugin (2)
- Linux (5)
- jbpm (2)
- SCM (1)
- mongoDB (1)
最新评论
-
lihua2008love:
<typeAlias alias="User& ...
IBATIS简单操作 -
lihua2008love:
...
关于项目框架设计的一点学习 -
c_jinglin:
我使用<OBJECT CLASSID="cls ...
这就是个静态页面通过js控制mscomm对某com设备进行访问的例子. -
zlbjava:
赞,用了还不错
java获取请求的ip地址,并解析ip所属地区 -
完美天龙:
cs842813290 写道楼主,我明白的地方:在链表已有N个 ...
JAVA实现双向链表
Struts 学习笔记之ActionForm
Struts 中定义了一些JavaBeans,主要是以ActionForm为父类扩展开来的,如下图:
① org.apache.struts.action包中
public abstract class ActionForm implements Serializable
public class DynaActionForm extends ActionForm implements DynaBean
② org.apache.struts.validator包中
public class ValidatorForm extends ActionForm implements Serializable
public class DynaValidatorForm extends DynaActionForm
implements DynaBean, Serializable
③ org.apache.struts.validator包中
public class ValidatorActionForm extends ValidatorForm implements Serializable
public class DynaValidatorActionForm extends DynaValidatorForm
implements DynaBean, Serializable
1 . ActionForm中比较常用的两个方法是reset()和validator():
// 恢复ActionForm属性的默认值,如把boolean型设为true/false,字符串设为null。
public void reset( ActionMapping mapping, HttpServletRequest request ) { }
// validate 只检查数据格式和语法,不检查数据是否符合业务逻辑。
public ActionErrors validate( ActionMapping mapping, HttpServletRequest request ) { return (null); }
这两个方法的默认实现是不执行任何操作,我们可以重写这两个方法来实现相关逻辑。
注: 对于每个request,控制器都会先调用ActionForm的reset()方法,然后表单数据组装到ActionForm中。如ActionForm在request范围内,那么对于每个新的request请求都会创建新的ActionForm实例。新实例创建后,如果它的属性已经被初始化为默认值,那么接着再在reset()方法中把属性设为默认值不是很有必要,这时可以让reset()方法为空。
对于session范围内的ActionForm,同一ActionForm实例会被多个请求共享,reset()方法在这种情况下极为有用。
2 . 其中,ActionForm需要我们创建一个formbean类继承ActionForm,在ActionForm中可以定义一些property和get/set方法。
ActionForm 的property必须声明然后才可以使用,不过在查询时我们常常需要输入一些查询条件,这些查询条件(property)其实不需要在formbean中声明,这时可以使用Map对象来封装整个查询表单提交的数据,如下:
public class MapForm extends ActionForm {
private Map map = null;
public void setMap(Map map) {
this.map = map;
}
public Map getMap() {
return this.map;
}
// 增加查询条件(property)的get/set方法,并把数据放到Map中
public void setAttribute(String attributeKey, Object attributeValue) {
map.put(attributeKey, attributeValue);
}
public Object getAttribute(String attributeKey) {
Object keyValue = map.get(attributeKey);
return keyValue;
}
}
在页面上可以通过
来获取表单数据,这会调用getAttribute("id")方法。
3 . 其中,Dyna开头的动态ActionForm不需要创建具体的ActionForm类,只需通过Struts的配置文件就可以完成ActionForm的全部配置,如:
DynaActionForm">
4 . 其中,含有validator的ActionForm用来进行表单验证,验证方法有两种。
① 在struts-config.xml中设置action的validate属性为"true"(默认为"true"),
type="com.cn.lively.action.UpdateUserAction"
name="userForm"
scope="request"
input="/jsp/updateUser.jsp"
cancellable="true"
validate="true" >
并且在相应的formbean中重写其中的validate方法,在validate方法中实现自己的数据验证逻辑。
② 通过validation框架进行验证,这分为两步:
⑴ 在struts-config.xml中配置validation插件,
value="/org/apache/struts/validator/validator-rules.xml,
/WEB-INF/validation.xml" />
⑵ 配置formbean,有下面两种方法:
㈠ 使自己的formbean类继承含有validator的ActionForm
public class UserForm extends ValidatorForm{
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
并配置struts-config.xml文件:
userForm" type="com.cn.lively.formbean.UserForm">
㈡ 使自己的formbean类继承含有validator的DynaValidatorForm
userForm" type="org.apache.struts.validator.DynaValidatorForm">
⑶ 配置validation.xml文件:
userForm">
注: 注意 validation.xml文件中的userForm是struts-config.xml文件中formbean的名字。
关于arg的几个属性如下:
bundle :指定资源文件名,如不指定,则从默认资源文件中读取
key :从资源文件 ActionResources.properties 中得到的值
resource :key所指定的信息是否来自外部的资源文件,默认为true。如果为true,则代表key为buddle属性所指定的资源文件中的key。
position ,这个arg中的值用来替换信息中的哪一部分, 需要替换的部分以{n}标志。
5 . 关于ValidatorForm/DynaValidatorForm与ValidatorActionForm/DynaValidatorActionForm之间的区别
对于一个actionform,可以被多个action所使用,而每个action可能需要的验证字段都不一样,而validation.xml中配置的验证方式(如
)是对这个formbean进行的.
① 如果需要针对每个action来验证,则必须使formbean继承ValidatorActionForm(或者直接配置DynaValidatorActionForm)。如下两种方法:
㈠ 使自己的formbean类继承含有validator的ActionForm
public class UserForm extends ValidatorActionForm{
……
}
并配置struts-config.xml文件:
userForm" type="com.cn.lively.formbean.UserForm">
/createUser"
type="com.cn.lively.action.CreateUserAction"
name="userForm"/>
/updateUser"
type="com.cn.lively.action.UpdateUserAction"
name="userForm"/>
㈡ 使自己的formbean类继承含有validator的DynaValidatorActionForm
userForm" type="org.apache.struts.validator.DynaValidatorActionForm">
/createUser"
type="com.cn.lively.action.CreateUserAction"
name="userForm"/>
/updateUser"
type="com.cn.lively.action.UpdateUserAction"
name="userForm"/>
② 配置validation.xml文件:
/createUser">
/updateUser">
position="1" />
maxlength
10
注: 注意validation.xml文件中的/createUser和/updateUser是struts-config.xml文件中action的path路径。
如果我们查看struts源码,可以很清楚的看到ValidatorForm/DynaValidatorForm与ValidatorActionForm/DynaValidatorActionForm之间的区别
ValidatorForm 中的方法
* @return validation key - the form element's name in this case
public String getValidationKey(ActionMapping mapping,
HttpServletRequest request) {
return mapping.getAttribute(); // 返回formbean的名字
}
发表评论
-
项目的热部署
2008-05-21 16:13 1385<Connector port=&q ... -
一个帐号同一时间只能一个人登录
2008-05-19 21:43 2295对于一个帐号在同一时间只能一个人登录,可以通过下面的方法实现: ... -
Struts 源码学习之ActionServlet (四)
2008-05-19 21:21 1652Ⅳ /* 循环struts配置文件(用",&quo ... -
Struts 源码学习之ActionServlet (三)
2008-05-19 21:20 2648④ 调用 initChain(); 读取web.xml中命令链 ... -
Struts 源码学习之ActionServlet ( 二)
2008-05-19 20:49 1705③ 调用 initServlet(); 从web.xml中加载 ... -
Struts 源码学习之ActionServlet ( 一)
2008-05-19 20:31 2574Struts 源码最新版本为 struts-1.3.8-src ... -
struts 学习笔记之MVC模式
2008-05-19 20:22 1814struts 中的MVC架构如下: View ... -
Struts框架初始化流程
2008-05-19 11:38 1596重新看了一下孙卫琴老师的《精通Struts》,总结了一下Str ... -
RequestProcessor类的process()方法执行流程
2008-05-19 11:37 1902当ActionServlet实例接收到 ... -
Struts 基本工作流程
2008-05-17 15:55 1668在 Struts 對 MVC / Model 2 的實現方式中 ... -
struts工作原理的解释
2008-05-15 22:40 1774Struts 使用 Model 2 架构。Struts 的Ac ... -
LookupDispatchAction使用方法
2008-05-15 22:30 2601名词解释: LookupDispatchAction继承 ... -
Struts 1.1,1.2中DispatchAction的用法详解
2008-05-15 22:26 5492名称解释:DispatchAction就是在struts-co ... -
Struts 体系结构与工作原理(图)
2008-05-08 01:54 2467Struts 体系结构是目前基于 java 的 web ... -
一个struts+sql server得分页(存储过程版)
2008-05-07 22:35 1602sql server分页使用存储过程要更高效些 下面这个存储过 ...
相关推荐
内容概要:本文详细介绍了基于MATLAB GUI界面和卷积神经网络(CNN)的模糊车牌识别系统。该系统旨在解决现实中车牌因模糊不清导致识别困难的问题。文中阐述了整个流程的关键步骤,包括图像的模糊还原、灰度化、阈值化、边缘检测、孔洞填充、形态学操作、滤波操作、车牌定位、字符分割以及最终的字符识别。通过使用维纳滤波或最小二乘法约束滤波进行模糊还原,再利用CNN的强大特征提取能力完成字符分类。此外,还特别强调了MATLAB GUI界面的设计,使得用户能直观便捷地操作整个系统。 适合人群:对图像处理和深度学习感兴趣的科研人员、高校学生及从事相关领域的工程师。 使用场景及目标:适用于交通管理、智能停车场等领域,用于提升车牌识别的准确性和效率,特别是在面对模糊车牌时的表现。 其他说明:文中提供了部分关键代码片段作为参考,并对实验结果进行了详细的分析,展示了系统在不同环境下的表现情况及其潜在的应用前景。
嵌入式八股文面试题库资料知识宝典-计算机专业试题.zip
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_3.zip
内容概要:本文深入探讨了一款额定功率为4kW的开关磁阻电机,详细介绍了其性能参数如额定功率、转速、效率、输出转矩和脉动率等。同时,文章还展示了利用RMxprt、Maxwell 2D和3D模型对该电机进行仿真的方法和技术,通过外电路分析进一步研究其电气性能和动态响应特性。最后,文章提供了基于RMxprt模型的MATLAB仿真代码示例,帮助读者理解电机的工作原理及其性能特点。 适合人群:从事电机设计、工业自动化领域的工程师和技术人员,尤其是对开关磁阻电机感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解开关磁阻电机特性和建模技术的研究人员,在新产品开发或现有产品改进时作为参考资料。 其他说明:文中提供的代码示例仅用于演示目的,实际操作时需根据所用软件的具体情况进行适当修改。
少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
内容概要:本文详细介绍了基于PID控制器的四象限直流电机速度驱动控制系统仿真模型及其永磁直流电机(PMDC)转速控制模型。首先阐述了PID控制器的工作原理,即通过对系统误差的比例、积分和微分运算来调整电机的驱动信号,从而实现转速的精确控制。接着讨论了如何利用PID控制器使有刷PMDC电机在四个象限中精确跟踪参考速度,并展示了仿真模型在应对快速负载扰动时的有效性和稳定性。最后,提供了Simulink仿真模型和详细的Word模型说明文档,帮助读者理解和调整PID控制器参数,以达到最佳控制效果。 适合人群:从事电力电子与电机控制领域的研究人员和技术人员,尤其是对四象限直流电机速度驱动控制系统感兴趣的读者。 使用场景及目标:适用于需要深入了解和掌握四象限直流电机速度驱动控制系统设计与实现的研究人员和技术人员。目标是在实际项目中能够运用PID控制器实现电机转速的精确控制,并提高系统的稳定性和抗干扰能力。 其他说明:文中引用了多篇相关领域的权威文献,确保了理论依据的可靠性和实用性。此外,提供的Simulink模型和Word文档有助于读者更好地理解和实践所介绍的内容。
嵌入式八股文面试题库资料知识宝典-2013年海康威视校园招聘嵌入式开发笔试题.zip
少儿编程scratch项目源代码文件案例素材-驾驶通关.zip
小区开放对周边道路通行能力影响的研究.pdf
内容概要:本文探讨了冷链物流车辆路径优化问题,特别是如何通过NSGA-2遗传算法和软硬时间窗策略来实现高效、环保和高客户满意度的路径规划。文中介绍了冷链物流的特点及其重要性,提出了软时间窗概念,允许一定的配送时间弹性,同时考虑碳排放成本,以达到绿色物流的目的。此外,还讨论了如何将客户满意度作为路径优化的重要评价标准之一。最后,通过一段简化的Python代码展示了遗传算法的应用。 适合人群:从事物流管理、冷链物流运营的专业人士,以及对遗传算法和路径优化感兴趣的科研人员和技术开发者。 使用场景及目标:适用于冷链物流企业,旨在优化配送路线,降低运营成本,减少碳排放,提升客户满意度。目标是帮助企业实现绿色、高效的物流配送系统。 其他说明:文中提供的代码仅为示意,实际应用需根据具体情况调整参数设置和模型构建。
少儿编程scratch项目源代码文件案例素材-恐怖矿井.zip
内容概要:本文详细介绍了基于STM32F030的无刷电机控制方案,重点在于高压FOC(磁场定向控制)技术和滑膜无感FOC的应用。该方案实现了过载、过欠压、堵转等多种保护机制,并提供了完整的源码、原理图和PCB设计。文中展示了关键代码片段,如滑膜观测器和电流环处理,以及保护机制的具体实现方法。此外,还提到了方案的移植要点和实际测试效果,确保系统的稳定性和高效性。 适合人群:嵌入式系统开发者、电机控制系统工程师、硬件工程师。 使用场景及目标:适用于需要高性能无刷电机控制的应用场景,如工业自动化设备、无人机、电动工具等。目标是提供一种成熟的、经过验证的无刷电机控制方案,帮助开发者快速实现并优化电机控制性能。 其他说明:提供的资料包括详细的原理图、PCB设计文件、源码及测试视频,方便开发者进行学习和应用。
基于有限体积法Godunov格式的管道泄漏检测模型研究.pdf
嵌入式八股文面试题库资料知识宝典-CC++笔试题-深圳有为(2019.2.28)1.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 V1.5.zip
Android系统开发_Linux内核配置_USB-HID设备模拟_通过root权限将Android设备转换为全功能USB键盘的项目实现_该项目需要内核支持configFS文件系统
C# WPF - LiveCharts Project
少儿编程scratch项目源代码文件案例素材-恐怖叉子 动画.zip
嵌入式八股文面试题库资料知识宝典-嵌⼊式⼯程师⾯试⾼频问题.zip