JiveJdon Community Forums
在线257人 J道首页 | 论坛首页 | 培训咨询 | 开源框架 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 开源项目大家谈
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 15 回复 / 2 页 [ 1 2 下一页 ]  发表新帖子  回复该主题贴
jacshan

发表文章: 17
注册时间: 2006年09月14日 20:32
关于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修改过]
fw2003

发表文章: 9
注册时间: 2007年05月23日 08:57
re:关于Struts中MVC划分的疑问? 发表: 2007年05月28日 08:25 回复
一般来说 actionservlet是控制器 而action是真正的业务实现者 也就是在action中调用相应的业务逻辑组件来完成数据交互 这样的话action应该也属于c
但是一般的小型应用 业务逻辑层的东西很少的话 也都是写在action里的

以上是我个人看法
coolzyt

发表文章: 8
注册时间: 2007年04月15日 09:05
re:关于Struts中MVC划分的疑问? 发表: 2007年05月28日 10:17 回复
struts实现了MVC,actionform是model,action是c
加上Spring,hibernate就是多层架构了,又有新的model,但和mvc就没关系了
zhaochunhui

发表文章: 1
注册时间: 2007年05月28日 09:53
re:关于Struts中MVC划分的疑问? 发表: 2007年05月28日 10:31 回复
actionfrom 是对应 view(如:jsp)的module,也就是form中有什么 actionform中就有什么 ,而不是对应持久层的,当页面流程出现变化 actionform也会出现变化 它不应该被传递到 业务层否则代码会出现相当大的改动
而action应该是 控制层(Control),里面不应该写过多的业务代码 它应该起到桥梁的作用
hwangita

发表文章: 21
注册时间: 2007年03月27日 22:52
re:关于Struts中MVC划分的疑问? 发表: 2007年06月03日 18:16 回复
action应该是c啊,actionservlet是全局的,毫无疑问。
其实,我觉得,你吧整个流程搞清楚了,何必苦苦执着于M,V,C呢?

我的理解,一般开发时,在Struts配置文件里先写,

顺数大都这样,
先从jsp页面开始,经过actionform把数据取出来传给action,这里面有简单的业务处理,其实,真正的业务处理应该是在javabean中,action最后还要负责跳转,
而全局的控制器就是actionservlet。

所以,我觉得,局限于action和actionform的层次,是浪费你的精力,关注点不再这里!
ljw714

发表文章: 16
注册时间: 2006年05月02日 16:00
re:关于Struts中MVC划分的疑问? 发表: 2007年06月06日 17:37 回复
actionform 是属于v层,它并不是进行数据持久化的.如你使用的是纯Struts的话,也就是说你把数据访问都写在action中,那action既是c层又是m层了.一般是会写数据访问类DAO的.其实现在使用Struts+spring+hibernate,整个Struts的东西动被看做是v层的.这是我的理解.
fw2003

发表文章: 9
注册时间: 2007年05月23日 08:57
re:关于Struts中MVC划分的疑问? 发表: 2007年06月13日 18:11 回复

将J2EE的分层体系简单的认为是MVC 我觉得是错误的
J2EE大体分为 WEB层 业务层 持久层
那么MVC只是WEB层的实现模式而已
Struts正是这样一种体现MVC模式的框架,也就是说你的系统的整个WEB层都由Struts来构建 而Hibernate则负责构建持久层

jacshan

发表文章: 17
注册时间: 2006年09月14日 20:32
回复:re:关于Struts中MVC划分的疑问? 发表: 2007年06月14日 21:56 回复
现在就是相对于Struts的MVC中,MVC分别是对应Struts的哪几个组件?
当然在Struts+Spring+Hibernate的架构中,那M应该是由Spring管理的业务层组件还有就是DAO接口和 其实现类吧
banq

发表文章: 8933
注册时间: 2002年08月03日 17:08
回复:回复: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的意思。
gougou3250

发表文章: 98
注册时间: 2007年05月08日 16:48
re:关于Struts中MVC划分的疑问? 发表: 2007年06月15日 18:16 回复
Struts2吧 么有actionForm
jacshan

发表文章: 17
注册时间: 2006年09月14日 20:32
re:关于Struts中MVC划分的疑问? 发表: 2007年06月15日 23:58 回复
呵呵,明天答辩了,论文上是参考IBM上的几篇Struts的,他们是把Actoin做为Model
其实这分做什么并不是很重要,但是答辩嘛,还是的有个明确的说法的
[该贴被jacshan于2007年06月15日 23:59修改过]
gougou3250

发表文章: 98
注册时间: 2007年05月08日 16:48
re:关于Struts中MVC划分的疑问? 发表: 2007年06月16日 08:52 回复
action应该是control吧,不应该是module
boyszz

发表文章: 15
注册时间: 2007年09月09日 04:22
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修改过]
hiworld

发表文章: 21
注册时间: 2007年09月09日 17:37
re:关于Struts中MVC划分的疑问? 发表: 2007年09月09日 19:42 回复
我个人认为这个问题应该分开来说,针对不同的应用,担任不同的角色.在多层次的结构中.有的时候部分业务在其他层次中实现更加简便.因为在设计阶段就离散部分业务逻辑.因此为业务逻辑有时会渗透甚至融合到表示层和持久层.这一现象针对简单需求而产生的结构退化.或者是对特殊需求的正确权衡.一般来说,action是C层,但如果里面参入了太多的业务逻辑的话.就是M层了.而actionform有时候是V层.在没有各其他框架发生关系的情况下.actionform就是V层.如查Struts加入了其他框架.像Spring,hibernate.actionform就是M层.所以针对不同的情况与应用.角色会发生变化,这是应用的需要,也是Struts的扩展性.
boyszz

发表文章: 15
注册时间: 2007年09月09日 04:22
回复: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 下一页 ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-07 jdon.com

anti spam