论坛首页 Java企业应用论坛

结合struts和hibernate谈J2EE架构的数据表示

浏览 122572 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-05-08  
slovenboy 写道
Struts(V) -> PO/Hibernate(M) -> StrutsController(C)


你不觉得这样的分割很生硬吗?

透明和胖子认为Struts的MVC是表示层的东西,不涉及业务逻辑方面。其实重点是在后半句,即Struts中不应涉入业务逻辑。换言之,在Action中实现业务逻辑是错误的

如果一定要分成三层,而不是四层或更多层,我对MVC的理解是:
BusinessDelegeClass + Hibernate(M) -> JSP(V) -> ActionServlet + Action(C)
0 请登录后投票
   发表时间:2004-05-08  
xanada
我想,我们说的是一个问题,如果一定要区分Controler,我想最理想的方法是使用Struts的子模块功能,这样一个应用就可以有一个Controler.
至于JSP是V的说法我不赞同,Struts本身就是V.
Struts中的JSP/ActionFormBean等都是V.Struts中的Action不能定义为C,他只是解析ActionFormBean中的数据,将V中的数据转化到业务逻辑所需要的格式。Struts中是没有M的,如果ActionFormBean算作M,也只能算作V的M.其实在MVC的任何一部分都有数据。
0 请登录后投票
   发表时间:2004-05-08  
sayor 写道
slovenboy 写道


Robbin写的很好,但是我还是忍不住说两句。

引用
JSP(View) ---> ActionFormBean(Module) ---> Action(Control)


我想说说关于ActionFormBean定义为Module的问题。前一段时间在Blogdriver上有很多朋友的Blog上提到MVC的问题。没记错的话Gigix和Ozzzzz认为MVC就是表示层的东西,不涉及业务逻辑方面,认为MVC是多层架构中表示层的架构。但从网上查看一些资料MVC实际上应该是三层,而不是只在表示层(我个人也是这么认为的)。如果MVC中V表示的是表示层的,那么ActionFormBean不是M,尽管V中也有数据,但那是表示层的,PO等才是M。
所以如果使用Struts/Hibernate的时候,MVC应该是这样分割:

Struts(V) -> PO/Hibernate(M) -> StrutsController(C).


好像M应该是持有业务逻辑的那些类,在struts+hibernate不论ActionForm还是po都不是M。

PO只是M的一部分,在PO之上,也就是使用PO对象的那些类才是真正的M
.而Action才是使用M的地方,如果在Action中直接使用PO就是不太符合MVC的,除非项目组扩展了PO。比如所有的PO都实现了一定的业务逻辑接口。
0 请登录后投票
   发表时间:2004-05-08  
webwork比struts好用多了,而且view层完全分离c层,不象struts绑定在form上,还有很多的灵活性

如果你准备学strtus还不如开始学webwork,使用更方便,配置更简单
0 请登录后投票
   发表时间:2004-05-09  
Webwork的确比Struts好;JSF出来后,不知道Struts2.0是否还会发布了。就连Struts的作者也觉得这个FormBean很有问题。其实有一个解决方法就是让PO等实现FormBean接口。这样就可以不单独写FormBean了,也不需要做那么多的类型转换。
0 请登录后投票
   发表时间:2004-05-09  
slovenboy 写道
Webwork的确比Struts好;JSF出来后,不知道Struts2.0是否还会发布了。就连Struts的作者也觉得这个FormBean很有问题。其实有一个解决方法就是让PO等实现FormBean接口。这样就可以不单独写FormBean了,也不需要做那么多的类型转换。

没记错的话,这样实现是不可以的,Struts目前是基于类涉及的,而不是接口,据说2.0的时候使用接口。期待中。。。
0 请登录后投票
   发表时间:2004-05-12  
哈哈,我前几分钟还回了一个贴,关于一些对象的概念和作用(PO,VO,FromBean),没有想到,robbin这里有一个更详细的主题贴。
   不过其中一小部分概念和robbin有小小区分,也就是所谓的web层,我一般叫做表示层(view也好,presentation也好)和控制层(controller),FormBean是属于控制层的对象,对于表示层,常见的是html是没有对象的(除了javascirpt,那是另外的事情)。FormBean的概念准确地讲应该是Html表单的对象表示。当然了,我理解web层是涵盖了这两点的,呵呵,所以本质上也没有太大区别。
   楼主robbin的这篇文章还是对大家蛮有意义的,支持!
0 请登录后投票
   发表时间:2004-06-13  
我印象是可以脱离持久层,直接把PO当作VO来使用的。这样并没有什么不妥,
我认为之所以要把PO转层VO,是因为可能VO的过大,不方面直接映射到
PO,所以需要从不同
PO中抽取出数据放到VO中来,如果PO的信息已经足够,就可以直接当作VO使用,为什么还要转化多此一举了,我一直这样用,没有什么不妥
0 请登录后投票
   发表时间:2004-06-13  
robbin的例子中没有提到列表的情况啊,假如是一个用户列表的页面呢?我通过Business Bean查询得到的是一个List或Iterator呢?是否也要把其中每个元素转换为formbean来显示?
0 请登录后投票
   发表时间:2004-06-17  
如果我采用的不是web开发,而是GUI开发的话,请问是不是还要这么严谨呢?我们现在好像就是PO打天下,三层都可以用!!!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics