最近在跟着一个视频做OA项目(用ssh做的),可是视频里面用的是struts1,我知道struts1已经被struts2取代的差不多了,差别也挺大的。视频里面struts用一个actionform接收jsp页面属性(这里以用户注册为例),用户的属性有很多个,然后在用一个继承action的类作为控制层。
好像之前学struts2都是把属性的接收,页面跳转都放在一个action,现在这样写,一个action的容量好像很大啊。该怎么办呢?还有,各位你们action的设计原则是什么呢,是按业务模块吗?还是其他什么的,根据项目大小决定?strutsaction设计
好像之前学struts2都是把属性的接收,页面跳转都放在一个action,现在这样写,一个action的容量好像很大啊。该怎么办呢?还有,各位你们action的设计原则是什么呢,是按业务模块吗?还是其他什么的,根据项目大小决定?strutsaction设计
如下:ActionForm类
package com.davis.registration.vo;
public class ActionForm {
private String username;
private String password;
private String password2;
getters and setters.......
}Action类:
@Component("user")
@Scope("prototype")
public class UserAction extends ActionSupport implements ModelDriven{
private ActionForm userForm = new ActionForm();
@Override
public Object getModel() {
return userForm;
}
.........
}
(1)、比如说form提交的属性有30个,而我们的相关的anction只用到了其中的username,password,
这两个是要存到数据库中,你觉得action要建30个接收字段,建相关的getters、setters吗
这就是严重的不匹配,我们的model层比如说是user,就只有username,password,那password2
放到user里面肯定不合适
(2)、你比如说,从数据库中select数据出来,N多的字段,难道全都接收到action里面吗,你认为该怎
么办,当然是要用哪个采用哪个。
2、关于你说的password2是否传到后台进行接受验证,你还是没弄明白。
vo层的ActionForm类是接收form表单提交的数据的,不是model层的,当你需要时,ActionForm里
相应的数据,赋值到model层里的实体对象里:
如果你们的验证需要的话可以把这个做到服务器端
实体类:model层的实体对象用到哪些数据,就在Actionform里面取就是了。这种设计思路很经典:就好像你有10万块钱,你想买个面包,你不会拿着10万块钱去买面包吧,
你顶多就拿个几百块去,是不是。现在能理解了吗,vo层还是多余的吗。