日期:2014-05-17  浏览次数:20666 次

SSH 各层的作用。。。。 大家分析一下
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层。。。






------解决方案--------------------
人为过度分层,有种为了模式而模式!
------解决方案--------------------
每层有每一层的作用 无论service层还是dao层都有目的 既然要降低耦合 必然要分层
不过 2楼说的也对 有时间确实是为了 模式而模式
------解决方案--------------------
service 主要为了 处理逻辑 当action 出现了重大漏洞或 因为一些特殊情况需要更换框架时 不用重新编写逻辑 。省时省力 。个人理解!
------解决方案--------------------
分层最好根据实际业务需要,不要为了分层而分层,不过起码的三层还是需要的,根据业务添加服务层,领域层