SSH简单的说:struts 控制用的hibernate 操作数据库的spring 用解耦的详细的说:STRUTS 在 SSH 框架中起控制的作用 , 其核心是 Controller, 即 ActionServlet, 而 ActionServlet 的核心就是 Struts-confi g.xml. 主要控制逻辑关系的处理 .hibernate 是数据持久化层 , 是一种新的对象、关系的映射工具 , 提供了从 Java 类到数据表的映射,也提供了数据查询和恢复等机制 , 大大减少数据访问的复杂度。把对数据库的直接操作 , 转换为对持久对象的操作 .SPRING 是一个轻量级的控制反转 (IoC) 和面向切面 (AOP) 的容器框架 , 面向接口的编程 , 由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。这也就是所谓 “ 控制反转 ” 的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。依赖注入,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中
起到的主要作用是解耦
spring可以将struts和hibernate纳入自己的管理。
例如,struts要调用service层的 UserService.java 的方法,不用spring的话,就要先new 一个UserService,才能调用其中的方法。而用spring则可以把UserService作为一个Struts Action 的属性,由spring去实例化,这样实例化对象的任务就交给了spring。
用Spring可以简化存储对象时的代码,DAO层的代码继承HibernateDaoSupport,用getHibernateTemplate()方法可以简单进行增删查改。
简言之,就是降低耦合。
对象的调用流程是: jsp-> Action - > Service ->DAO ->Hibernate 。为什么要用Service层。????逻辑处理一般都写在Service层吗。。???
action就等于是控制作用。。 负责调用对应Service的吗???把逻辑处理写在action里不可以吗。。 然后再调用dao层

解决方案 »

  1.   

    Action可以直接调用DAO层啊,加了一个Service层无非是想模拟现实业务的处理流程,比如说你申请一个项目,得获得你的上级的审批,还得获得你上级的上级的审批……,审批这个动作可以是封装到DAO层中有统一的函数实现,可是在业务层最好只用一个函数来实现整个审批过程:上级审批->上上级审批……从这个角度看,service层也不算是多余的。
    个人理解,仅作参考……
      

  2.   

    个人感觉似乎为了层次分明。。action就负责控制调用Service负责业务处理 dao就db处理如果把业务处理也写在action里,觉得有点乱。。不知道这样理解对不对。。
      

  3.   

    每层有每一层的作用 无论service层还是dao层都有目的 既然要降低耦合 必然要分层
    不过 2楼说的也对 有时间确实是为了 模式而模式
      

  4.   

    有时间确实是为了 模式而模式 这是什么意思不用service层不行吗
      

  5.   

    LZ说的就不错,SSH框架基本就这功能,你就是不分层都写在JSP页面里也可以呀
      

  6.   

    关键还是hibernate那块,spring只是中间件,业务逻辑,代码写死,struts只是控制器
      

  7.   

     对于超大型项目 service层 一来降低耦合,二来便于维护  
      

  8.   

    service 主要为了 处理逻辑 当action 出现了重大漏洞或 因为一些特殊情况需要更换框架时  不用重新编写逻辑 。省时省力 。个人理解!
      

  9.   

    学习中,ssh- - 头晕啊- -