用Struts已有1个月了,但对ActionForm的存在有一些疑惑.众所周知.Struts是由"视图+模型+控制器"组成,小弟简单理解为"JSP+ActionForm+Action"....一个最简单的例子:当用户提交从jsp的表单后,Struts框架将自动把表单数据组装到ActionForm Bean中,接下来Struts框架会自动调用ActionForm Bean中的validate()方法进行表单验证,如只允许数字,字母等等,如果数据验证通过,就转到Action中去. but,由于考虑到速度及服务器负担,数据验证都嫁祸到客户端(JavaScript实现),因此都会把struts-config中的validate设成false,这样一来,当用户提交从jsp的表单后,装载数据后直接转到Action中去了...疑问:ActionForm存在还有什么意义??就算没有了它.jsp可以直接把数据提交到action中,可以通过getParameter()取得数据.
解决方案 »
- 如何用java 实现将oracle数据库表导出至access数据库
- checked exception 和 unchecked exception的区别
- 很菜的 jsp传值问题 分少 有愿意帮忙的吗 在线等
- 安全控制?
- 如何让嵌入在网页中的java程序访问系统目录?
- 有谁可以做医院门诊查询系统的设计与开发这个项目,计算机本科毕业论文,急!!!!!!!!
- textarea文件框提交的内容内有回车段落,但取出显示td内的数据没有段落??为何
- 急!急!急!求大神解答,Servlet.service() for servlet jsp threw exception
- ajax中显示的数据无法更新
- 请问servlet 中将一个可以序列化的对象向客户端输出用什么呢?
- 关于JSPSMARTUPLOAD判断文件大小和类型的问题
- 停止加载
有些情况用它更麻烦,有些情况用它就简单.
让画面减少js,而通过后台validation来处理.具体的,等我研究好了再说!
struts封装好的actionform还提供validate,有的时候还是很好的
----------------------------------------------------------------------
业务逻辑类放到哪里?JSP中?ActionForm中?Action中?
将ActionForm理解成struts的模型层也可以,但struts的模型层应该不仅仅是ActionForm这么简单...
如果不用ActionForm,struts还能跑的起来?
看看struts.config.xml文件:如果去掉<form-beans>,<action>的name属性就没有value,匹配关系从何而来?浏览器不报404错误?
再看看Action的execute方法参数,去掉ActionForm,编译器不会报错?
public class OrderForm extends ActionForm {
private OrderHeaderDTO headerData;
private List detailData;
...
public void setDetailData(List detailData) {
this.detailData = ListUtils.lazyList(detailData, new Factory() {
public Object create() {
return new OrderDetailDTO();
}
});
}
}public class OrderHeaderDTO implements Serializable {
private String orderNo;
private Date orderDate; //实际情况这里是更复杂的自定义对象类型
...
}public class OrderDetailDTO implements Serializable {
private String orderNo;
private String orderDetailNo;
private BigDecimal quantity; //实际情况这里是更复杂的自定义对象类型
}
至于验证问题,Struts有自己的验证框架,通过validation.xml和validation-rules.xml去验证,不用通过后台,我们也可以自己定义验证规则(Struts只提供了几个常用的验证)
大家可以想想一个国家或是一个公司,模块化管理水平越高则越科技越是发达.