|
这个主题共有 15 回复 / 2 页 [
1 2
下一页
]
|
|
|
|
|
|
关于Struts中MVC划分的疑问?
|
发表: 2007年05月27日 12:09
|
回复
|
|
Struts是Java MVC WEB开发框架的事实标准,网上看了很多关于Struts组件在MVC模式中的划分,着实让初学Struts的我感到很混乱. 其中争议最多的是ActionForm,有人说它是属于Model层,有人把它归为View,我倾向把ActionForm归属于Model,因为ActionForm是和数据打交道的,在V和C中传输数据的桥梁,但是比起在Struts+Spring+hibernate架构中的Model,Dao之类的,把他称为模型感觉有点不合适. 再有就是Action了,有的把它归为M,有的是C,理论上来说Action因该属于C,但是想想ActionServlet,它才是老板,决定处理请求的Action,Action只是和业务层沟通,我觉得Action还是属于C层,毕竟它还要完成最后JSP页面的跳转控制和为V层准备数据,但是有时候在Action中写太多的业务逻辑的话,又感觉它有点像M,哎,郁闷啊,毕业设计做了个MVC的系统,现在对它的分层还不是很理解,答辩的时候不知道怎么去说啊 [该贴被jacshan于2007年05月27日 12:11修改过]
|
|
|
|
|
|
re:关于Struts中MVC划分的疑问?
|
发表: 2007年05月28日 08:25
|
回复
|
|
一般来说 actionservlet是控制器 而action是真正的业务实现者 也就是在action中调用相应的业务逻辑组件来完成数据交互 这样的话action应该也属于c 但是一般的小型应用 业务逻辑层的东西很少的话 也都是写在action里的
以上是我个人看法
|
|
|
|
|
|
re:关于Struts中MVC划分的疑问?
|
发表: 2007年05月28日 10:17
|
回复
|
|
struts实现了MVC,actionform是model,action是c 加上Spring,hibernate就是多层架构了,又有新的model,但和mvc就没关系了
|
|
|
|
|
|
re:关于Struts中MVC划分的疑问?
|
发表: 2007年05月28日 10:31
|
回复
|
|
actionfrom 是对应 view(如:jsp)的module,也就是form中有什么 actionform中就有什么 ,而不是对应持久层的,当页面流程出现变化 actionform也会出现变化 它不应该被传递到 业务层否则代码会出现相当大的改动 而action应该是 控制层(Control),里面不应该写过多的业务代码 它应该起到桥梁的作用
|
|
|
|
|
|
re:关于Struts中MVC划分的疑问?
|
发表: 2007年06月03日 18:16
|
回复
|
|
action应该是c啊,actionservlet是全局的,毫无疑问。 其实,我觉得,你吧整个流程搞清楚了,何必苦苦执着于M,V,C呢?
我的理解,一般开发时,在Struts配置文件里先写,
顺数大都这样, 先从jsp页面开始,经过actionform把数据取出来传给action,这里面有简单的业务处理,其实,真正的业务处理应该是在javabean中,action最后还要负责跳转, 而全局的控制器就是actionservlet。
所以,我觉得,局限于action和actionform的层次,是浪费你的精力,关注点不再这里!
|
|
|
|
|
|
re:关于Struts中MVC划分的疑问?
|
发表: 2007年06月06日 17:37
|
回复
|
|
|
actionform 是属于v层,它并不是进行数据持久化的.如你使用的是纯Struts的话,也就是说你把数据访问都写在action中,那action既是c层又是m层了.一般是会写数据访问类DAO的.其实现在使用Struts+spring+hibernate,整个Struts的东西动被看做是v层的.这是我的理解.
|
|
|
|
|
|
re:关于Struts中MVC划分的疑问?
|
发表: 2007年06月13日 18:11
|
回复
|
|
将J2EE的分层体系简单的认为是MVC 我觉得是错误的 J2EE大体分为 WEB层 业务层 持久层 那么MVC只是WEB层的实现模式而已 而Struts正是这样一种体现MVC模式的框架,也就是说你的系统的整个WEB层都由Struts来构建 而Hibernate则负责构建持久层
|
|
|
|
|
|
回复:re:关于Struts中MVC划分的疑问?
|
发表: 2007年06月14日 21:56
|
回复
|
|
|
|
|
|
|
|
回复:回复:re:关于Struts中MVC划分的疑问?
|
发表: 2007年06月15日 16:39
|
回复
|
|
>现在就是相对于Struts的MVC中,MVC分别是对应Struts的哪几个组件?
Struts的Action属于MVC的C (controller); Struts的标签+html的JSP属于V(View),而ActionForm可以看成是Model的一个映射,在Struts2.0中Model可以直接作为Struts的ActionForm,MVC的M还有表示业务层Model的意思。
|
|
|
|
|
|
re:关于Struts中MVC划分的疑问?
|
发表: 2007年06月15日 18:16
|
回复
|
|
|
|
|
|
|
|
re:关于Struts中MVC划分的疑问?
|
发表: 2007年06月15日 23:58
|
回复
|
|
呵呵,明天答辩了,论文上是参考IBM上的几篇Struts的,他们是把Actoin做为Model 其实这分做什么并不是很重要,但是答辩嘛,还是的有个明确的说法的 [该贴被jacshan于2007年06月15日 23:59修改过]
|
|
|
|
|
|
re:关于Struts中MVC划分的疑问?
|
发表: 2007年06月16日 08:52
|
回复
|
|
|
action应该是control吧,不应该是module
|
|
|
|
|
|
re:关于Struts中MVC划分的疑问?
|
发表: 2007年09月09日 04:56
|
回复
|
|
ActionForm是属于Model层的,毫无疑问。 需要提一下的是,WEB架构里是不存在MVC这样的架构的,MVC架构的名词起源于富客户端. Model,即是你的领域对象,比如你的程序是展现一个人的基本信息,那这个领域对象就应该是Person这个类.(Struts需要领域对象继承ActionForm来自动把表单数据映射到对象,我想应该没有人会觉得这是个好的设计.) Controller,是你的控制器,通常是根据用户的行为,执行改变你的领域对象操作. View,是你的展现层,决定怎样的方式展现你的领域对象,比如你希望通过一个表格来展现,那这个表格就应该由View层来画. MVC,是指当用户执行动作,Controller使Model发生改变,View层自动更新Model对象,而这在WEB应用里是不可能的.因为http连接是无状态的.不过因为两者的区别也不是太大,所以还是经常用MVC来代替WEB的架构体系. [该贴被boyszz于2007年09月09日 04:59修改过]
|
|
|
|
|
|
re:关于Struts中MVC划分的疑问?
|
发表: 2007年09月09日 19:42
|
回复
|
|
|
我个人认为这个问题应该分开来说,针对不同的应用,担任不同的角色.在多层次的结构中.有的时候部分业务在其他层次中实现更加简便.因为在设计阶段就离散部分业务逻辑.因此为业务逻辑有时会渗透甚至融合到表示层和持久层.这一现象针对简单需求而产生的结构退化.或者是对特殊需求的正确权衡.一般来说,action是C层,但如果里面参入了太多的业务逻辑的话.就是M层了.而actionform有时候是V层.在没有各其他框架发生关系的情况下.actionform就是V层.如查Struts加入了其他框架.像Spring,hibernate.actionform就是M层.所以针对不同的情况与应用.角色会发生变化,这是应用的需要,也是Struts的扩展性.
|
|
|
|
|
|
回复:re:关于Struts中MVC划分的疑问?
|
发表: 2007年09月09日 20:06
|
回复
|
|
MVC架构只是针对你的WEB层设计,并不是你整个J2EE的架构.通常,你的一个项目是由WEB层(或者说是UI层,这样更通用一点)、业务层和持久层构成的。 ActionForm是什么?是用来对应你表单里的数据的,通常也会是一个领域对象,例如用户注册的一个表单Form,那这个表单数据最终会生成一个User这样的领域对象,并调用业务层UserService.addUser( User user )这样一个方法来进行保存用户数据,判断用户名是否重复,写进数据库这些操作都应该是addUser方法做的。所以他属于Modle,如果一个领域对象不需要通过继承ActionForm,就可以映射到一个表单,对我们开发来说那就更好了。至少。你不用写一个User,一个UserForm,两个并无区别的对象.这也是Struts设计上的一个失误.并受人指责. [该贴被boyszz于2007年09月09日 20:53修改过] [该贴被boyszz于2007年09月09日 20:55修改过]
|
|
|
|
|
|
这个主题有 15 回复 / 2 页 [
1 2
下一页
]
|
|
|