`

SSH职责

阅读更多

SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层。
其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。
系统业务的基本流程:在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。
使用本框架的优点:不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。

 

 

 





-------------------------------------------------------------------------------------
典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。

表现层是传统的JSP技术,自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。

中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。

Web层,就是MVC模式里面的“C”(controller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts。

Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。

DAO层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。

PO,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。

Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。

一个良好的框架可以让开发人员减轻重新建立解决复杂问题方案的负担和精力;它可以被扩展以进行内部的定制化;并且有强大的用户社区来支持它。框架通常能很好的解决一个问题。然而,你的应用是分层的,可能每一个层都需要各自的框架。仅仅解决UI问题并不意味着你能够很好的将业务逻辑和持久性逻辑和UI 组件很好的耦合。

不可否认,对于简单的应用,采用ASP或者PHP的开发效率比采用J2EE框架的开发效率要高。甚至有人会觉得:这种分层的结构,比一般采用JSP + Servlet的系统开发效率还要低。

笔者从一下几个角度来阐述这个问题。

— 开发效率:软件工程是个特殊的行业,不同于传统的工业,例如电器、建筑及汽车等行业。这些行业的产品一旦开发出来,交付用户使用后将很少需要后续的维护。但软件行业不同,软件产品的后期运行维护是个巨大的工程,单纯从前期开发时间上考虑其开发效率是不理智的,也是不公平的。众所周知,对于传统的ASP和 PHP等脚本站点技术,将整个站点的业务逻辑和表现逻辑都混杂在ASP或PHP页面里,从而导致页面的可读性相当差,可维护性非常低。即使需要简单改变页面的按钮,也不得不打开页面文件,冒着破坏系统的风险。但采用严格分层J2EE架构,则可完全避免这个问题。对表现层的修改即使发生错误,也绝对不会将错误扩展到业务逻辑层,更不会影响持久层。因此,采用J2EE分层架构,即使前期的开发效率稍微低一点,但也是值得的。

— 需求的变更:以笔者多年的开发经验来看,很少有软件产品的需求从一开始就完全是固定的。客户对软件需求,是随着软件开发过程的深入,不断明晰起来的。因此,常常遇到软件开发到一定程度时,由于客户对软件需求发生了变化,使得软件的实现不得不随之改变。当软件实现需要改变时,是否可以尽可能多地保留软件的部分,尽可能少地改变软件的实现,从而满足客户需求的变更?答案是——采用优秀的解耦架构。这种架构就是J2EE的分层架构,在优秀的分层架构里,控制层依赖于业务逻辑层,但绝不与任何具体的业务逻辑组件耦合,只与接口耦合;同样,业务逻辑层依赖于DAO层,也不会与任何具体的DAO组件耦合,而是面向接口编程。采用这种方式的软件实现,即使软件的部分发生改变,其他部分也尽可能不要改变。

注意:即使在传统的硬件行业,也有大量的接口规范。例如PCI接口、显卡或者网卡,只要其遵守PCI的规范,就可以插入主板,与主板通信。至于这块卡内部的实现,不是主板所关心的,这也正是面向接口编程的好处。假如需要提高电脑的性能,需要更新显卡,只要更换另一块PCI接口的显卡,而不是将整台电脑抛弃。如果一台电脑不是采用各种接口组合在一起,而是做成整块,那将意味着即使只需要更新网卡,也要放弃整台电脑。同样,对于软件中的一个个组件,当一个组件需要重构时,尽量不会影响到其他组件。实际上,这是最理想的情况,即使采用目前最优秀的架构,也会有或多或少的影响,这也是软件工程需要努力提高的地方。

技术的更新,系统重构:软件行业的技术更新很快,虽然软件行业的发展不快,但小范围的技术更新特别快。一旦由于客观环境的变化,不得不更换技术时,如何保证系统的改变最小呢?答案还是选择优秀的架构。

在传统的Model 1的程序结构中,只要有一点小的需求发生改变,将意味着放弃整个页面。或者改写。虽然前期的开发速度快,除非可以保证以后永远不会改变应用的结构,否则不要采用Model 1的结构。

采用Hibernate作为持久层技术的最大的好处在于:可以完全以面向对象的方式进行系统分析、系统设计。

DAO模式需要为每个DAO组件编写DAO接口,同时至少提供一个实现类,根据不同需要,可能有多个实现类。用Spring容器代替DAO工厂

通常情况下,引入接口就不可避免需要引入工厂来负责DAO组件的生成。Spring实现了两种基本模式:单态模式和工厂模式。而使用Spring可以完全避免使用工厂模式,因为Spring就是个功能非常强大的工厂。因此,完全可以让Spring充当DAO工厂。

由Spring充当DAO工厂时,无须程序员自己实现工厂模式,只需要将DAO组件配置在Spring容器中,由 ApplicationContext负责管理DAO组件的创建即可。借助于Spring提供的依赖注入,其他组件甚至不用访问工厂,一样可以直接使用 DAO实例。

优点:
Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。
除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。
关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
缺点:
Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程,甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。
Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。
Struts从产生到现在还不到半年,但已逐步越来越多运用于商业软件。虽然它现在还有不少缺点,但它是一种非常优秀的J2EE MVC实现方式,如果你的系统准备采用J2EE MVC架构,那么,不妨考虑一下Struts。
[/size]

 

--------------------------------------------------------------------------------------------------------------------

Struts的目的是为了分离视图层和控制层
Spring是为了让你养成用接口编程的好习惯 提高程序的重用率还有可维护性(健壮性)
Hibernate的目的是为了实现用面向对象的思想来管理数据库 实现与数据库之间的低耦合

三个框架没有具体去代表什么层的含义 他们存在的目的是为了更好的完成MVC模式
分享到:
评论

相关推荐

    SSH(springmvc)环境

    在实际开发中,SSH框架的使用不仅可以提高开发效率,还能使代码结构清晰,职责分明。不过,随着Spring Boot的兴起,SSH框架逐渐被取代,因为Spring Boot集成了许多开箱即用的功能,简化了配置,提高了开发速度。但...

    javaweb ssh 聊天项目

    6. **MVC模式**:实践MVC设计模式,了解各部分职责,提升代码组织和可维护性。 7. **数据库设计**:分析chat.sql中的表结构,理解聊天系统的数据模型和关系设计。 8. **安全性**:学习如何在Struts2中添加拦截器实现...

    最新SSH的jar包

    总之,SSH框架的jar包集合为Java Web开发者提供了一套成熟的开发工具,它们各自负责不同的职责,共同协作以实现复杂的应用程序。正确理解和使用这些jar包,能够大大提高开发效率,同时保持代码的可维护性和扩展性。

    SSH2框架搭建实例源码

    每个组件都有其特定职责,共同构成了SSH2框架的完整工作流程。 总的来说,SSH2框架搭建实例是一个学习和理解Java Web开发的好素材。通过实践这个项目,开发者可以深入理解如何整合三大框架,以及如何利用它们来实现...

    SSH框架JAR包集合

    这些框架各自负责不同的职责,Spring作为基础架构框架,Struts处理视图与控制,Hibernate则专注于数据持久化。下面我们将深入探讨这三个框架的核心功能和它们之间的协同工作方式。 **Spring框架**: Spring是一个...

    ssh框架jar包大全

    2. **模块化**:各框架专注于自己的职责,使得系统结构清晰,易于扩展。 3. **易维护**:通过配置文件和注解调整组件行为,便于后期修改和维护。 4. **强大的数据库支持**:Hibernate提供的ORM功能简化了数据库操作...

    ssh框架所有jar包

    2. **模块化**:每个框架专注于其专长领域,使得代码结构清晰,职责分明。 3. **统一的事务管理**:Spring提供全局事务管理,可以协调多个数据访问操作,确保事务的一致性。 4. **丰富的功能集**:SSH结合了MVC、ORM...

    淘宝网站 ssh框架

    DI允许开发者在运行时动态地将对象与服务绑定,而AOP则使得代码的模块化和职责分离更加清晰,便于进行事务管理、日志记录等通用任务。 Struts框架主要负责MVC(Model-View-Controller)设计模式的实现,是Web层的...

    SSH整合经典实例

    此外,应遵循良好的设计原则,如单一职责原则,使代码易于理解和维护。对于大型项目,还可以引入MyBatis、Spring Boot、Spring Cloud等更现代的技术栈来提升开发效率和系统的扩展性。 综上所述,SSH整合实例展示了...

    SSH整合的jar包.zip

    这三种框架分别负责不同的职责:Spring作为应用的管理核心,提供依赖注入(DI)和面向切面编程(AOP);Struts则主要处理MVC(模型-视图-控制器)模式中的控制层逻辑;Hibernate则作为持久层框架,简化了数据库操作...

    sshSource.zip

    首先,我们来详细了解一下SSH框架各自的职责: 1. Spring:这是一个全面的、开源的应用框架,主要关注于简化企业级应用的开发。Spring的核心是依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-...

    WEB开发-SSH三层框架

    **Struts2** 是一个基于MVC设计模式的Web应用框架,它强调了控制器的职责,使得业务逻辑和视图层可以更好地分离。Struts2提供了丰富的拦截器和插件体系,可以方便地实现用户交互、表单验证和国际化等功能。 **...

    ssh 的电信项目(ssh 的电信项目)

    3. 设定访问权限:根据角色和职责分配不同的SSH访问权限,确保最小权限原则。 4. 监控和日志记录:启用SSH会话的审计和日志记录,以便追踪和分析网络活动,及时发现潜在的安全问题。 5. 定期更新:保持SSH软件版本的...

    订单管理系统(SSH框架)

    SSH,即Struts、Spring和Hibernate,是Java Web开发中的三大神器,它们各自承担着不同的职责,共同构建出稳定、灵活的业务逻辑。 Struts是MVC(Model-View-Controller)设计模式的一种实现,主要用于控制应用程序的...

    SSH2实现的商城系统

    这种架构清晰地划分了职责,方便团队协作和代码复用。 7. **安全性和性能优化**:在SSH2框架下,可以通过配置过滤器、拦截器等方式增强安全性,例如防止SQL注入、XSS攻击等。同时,针对高并发的商城系统,还可以...

    ssh实例简单demo

    2. 高度模块化:每个组件都有明确的职责,方便替换或扩展。 3. 测试友好:Spring的DI和AOP特性使得单元测试变得容易。 4. 整合性强:SSH可以与其他开源库无缝集成,如MyBatis、Quartz等。 在"my_ssh"这个压缩包文件...

    SSH示例源码下载

    Struts是基于MVC(Model-View-Controller)架构模式的开源Web应用框架,它的主要职责是处理HTTP请求,将这些请求映射到相应的控制器,并协调视图和模型的交互。在Struts中,Action类是核心,它定义了业务逻辑并控制...

    基于SSH框架的员工管理系统

    整个流程清晰,职责明确,降低了各层之间的耦合度。 5. **开发实践**:在实际开发过程中,为了实现员工管理系统的功能,开发人员会创建一系列的类和接口,如Employee实体类、EmployeeService服务接口、...

    SSH框架整合jar包

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。它们分别负责Web层、业务逻辑层和服务数据访问...理解SSH框架各自的职责和整合方式,对于Java Web开发人员来说至关重要。

    一个简单的extjs+ssh实例

    1. **前后端分离**:SSH处理业务逻辑和数据管理,ExtJS专注于用户界面,这样的分离使得两者的职责明确,有利于团队协作和代码维护。 2. **灵活性**:SSH提供了灵活的配置和扩展性,能够适应不同的项目需求。ExtJS则...

Global site tag (gtag.js) - Google Analytics