struts中的action到底属于控制层还是模型层?
我理解的是:
struts中的ActionServlet是控制层
action、service、dao统称为模型层
其中细分service为业务逻辑层、dao为持久层、action是模型层
可是工作中多人都认为action是控制层。
最近遇到一个开发的问题:
要求实现下载操作日志功能,同事非要把生成文档的代码也放在service中,而将文档路径返回给action
我认为应该放在action中,因为这样会导致service中的代码复用性很差,请大虾给予指导?

解决方案 »

  1.   

    放在哪都可以,至于放在service会导致代码复用性很差,不知你是如何理解的,工作3年了还在纠结这种问题,很是怀疑。
      

  2.   

    可以回答详细些吗  
    我认为service中的方法(查询单个对象,查询list,增加,删除等)可以被其他的action使用
    而每个action更针对于具体的功能
      

  3.   

    (查询单个对象,查询list,增加,删除等)像这些完全可以写成独立的方法,
    至于“生成文档的代码”也可以写成一个通用方法,这影响其他action调用吗
      

  4.   

    像一些更通用的方法应该放到action以下层面,才能最大程度的复用。
      

  5.   

    你认为action里面一般写什么操作
    action属于MVC中的控制层还是模型成?
      

  6.   

    这个你要先弄清楚模型是什么意思,MVC里面的M即模型层,主要是指实现业务逻辑的层次,在j2ee里包括,dao,bean,service。V表示视图层,J2EE中的jsp和部分servlet,C控制层也叫控制器,是连接视图与模型的桥梁,一般来说servlet可以划分到控制层,struts中的action也属于控制层,他们的主要任务是完成将视图层发出的请求经过处理转发给模型层处理,action最主要的功能其实就是封装了servlet,完成请求分发的功能,不承担主要的业务逻辑处理。
      

  7.   

    action中主要处理界面需要的东西,模型方面的东西统一放在service中。
    action属于控制层
      

  8.   

    action本身的代码也不适于其他action来调用,如果其中书写了大量业务逻辑代码,就得不到复用,下次遇到同类型的功能,势必要拷贝之前action中的代码,降低了代码的复用度,而如果你直接调用之前action中的部分方法,又会增加维护的难度
      

  9.   

    为什么重用性很差呢,在service层中的bean可以给任何一个action调用,我想知道为什么说重用性差
      

  10.   

    很明显,越底层的方法重用的可能性越高,如果功能有可能被复用,放在service是个很好的选择
      

  11.   

    哦  了解了
    我想将这个功能在service封装成两个方法
    1是查询日志
    2是生成文档
    这样灵活性和复用性都可以满足了
      

  12.   

    恩  我也认为 风过无痕 解释的很有道理
    不过关于struts中action是属于哪一层还是不清楚
    我google了一下,有些说ActionServlet类是控制层,这个类控制转发v和m之间的请求
    那么action是与ActionServlet类共同组成控制层转发请求呢还是与service和dao等组成模型层处理业务?
      

  13.   

    在我理解Action充当的是控制层
      

  14.   

    struts整个才算控制层,struts核心就是拦截器,拦截到用户请求时会解析地址然后访问对应的Action类,,通过Action类再去调用Service业务方法,不要说Action是属于哪一边的,Action类起到联通作用,事情就是那么简单,我是这么理解的。(工作经验半年)
      

  15.   

    action  你别的不做 只做控制就可以了 基层的数据交互给dao
       有业务的处理交给service或是biz  
    但是有时候有些东西没法在上面2个里面完成或说不方便就会在action内处理
       那也没错    纠结个什么咯   又不是架构师   别人怎么说我怎么做
      

  16.   

    楼主的3年工作生涯很失败,你只要了解jsp的servlet就应该了解了,其实struts的actionservlet为中心控制器,整体来讲就可以理解为action的领导,来管理action控制工作,就如一个是销售团队,一个是销售领导,我想你不会把领导底下的人员不称为销售人员吧,同理,action也就是这样的,他又控制跳转的能力!你应该多看看其他的一些基础技术,而不是在这里琢磨这点问题!所谓的开发不就是懂得使用,框架大体的意思就够了,java方向开源技术这么多,你应该多学点其他的,然后你就会慢慢了解action的真正能力了!
      

  17.   

    数学中的建模是建立一个通用的解决方法或论证方法!
    action是控制层,控制请求到哪一个模型中,模型就是之后的东西了!
    但是之后的东西也是存在分层的(mvc),