我用的最多的框架是struts,其中包括SSH和struts+webservice,但我发现,我总是把务业基本上全写到了,SQL里,对于ACTION作用,仅仅是从FORM中取来数据,传到SERVICE层。我感觉我的做法有问题,所以我想把务业放到ACTION里,可这让我更加困惑,我发现我根本分不清,务业和动作的区别,务业是什么呢,务业是动作的集合吗?,好像不是,因为动作是瞬时的,可ACTION类,本身就是动作啊,它应不应该算是务业层呢,我是百思不得其解啊,希望高手能指点迷经,先谢了

解决方案 »

  1.   

    一般建议三层(action/controller、service、dao),但也有四层的(controller、action、service、dao)通常情况下dao和sao是底层最基本的操作,主要针对数据和其它外部访问,最好是单一的动作。service是针对一个整体业务上的动作,可以调用多个dao或者sao来实现,事物一般都上在这个上。action或者controller主要实现控制层的东西,不做纯业务上的事。
      

  2.   

    既然是用到了struts,那action本来就是用来获取数据,进行最基本非业务性验证,并调用service操作返回结果。
      

  3.   

    楼上的仁兄,按您这么说,我的做法是正确的了吗,务业就应该放在SERVICE中了吗,ACTION就是一个FACADE吗,从FACADE直接调用SERVICE,那业务层,在哪里呢,在SERVICE层里吗?
      

  4.   

    对 业务层再service层拼装 action 负责与web交互  dao层与 数据库交互
      

  5.   

    复杂的业务要分装到业务层,action一般只做页面跳转用,能少写就少些
      

  6.   

    sevice层一般都是无状态的啊,更像一个静态方法,确实ACTION和SERVICE很配,一个动作对应该一次静态函数的调用,是很爽,可是状态呢,又全部集中到了数据库中,结果写来写去,所有的设计仅仅是为了拼个SQL文,然后把结果显示成HTML,与其如此,我倒感觉,纯JSP+SQL最合适不过了,我的理解一定是错的啊,可错在哪呢,我实在不知啊
      

  7.   

    我现在感觉,我是在为了适应框架在写代码,框架感觉不像工具了,我写的代码反而成工具了,现在CSDN,感觉和3年前没法比了,我这样的问题,已经没有人愿意回答了,再等一等吧
      

  8.   

    可以这样理解:service是数据业务,可以包含数据库的多次操作!action是一个动作,就是完成某项任务而已,比如是增加,删除、修改某条数据,在service可以更新多个表的数据!二者都是业务的实现,如果正要分的话,我的理解是:service:数据逻辑、action:业务逻辑!
      

  9.   

    我的话一般是是用ssh,也就是一个web(显示层,也就是action什么的),biz(业务逻辑层,用spring将dao层的类注入到这一层),entity(实体层),dao(数据访问层,主要的是只数据的操作,但逻辑处理都放在biz层中)。如果项目很大的话就还有一个放接口的包
      

  10.   

    action配发任务到 service,service通过调用不用的DAO完成任务,并返回相应结果给action其实action和service有时候是比较难界定的 
      

  11.   

    我觉得楼主忽略了Spring的作用,SSH框架是秉着java中面向对象开发的思想而生的,Spring更是起到至关重要的作用。简单的说它就像一个秘书,管理对象(IOD)和事务管理(AOP)。
    把业务处理放在Service层是为了能更好的进行事务管理,如果把业务层放到ACTION层,Spring就失去了它的意义,没有存在价值。
    纯JSP+SQL则偏离了面向对象的思想。
    呵呵 纯属个人理解