zoukankan      html  css  js  c++  java
  • SSH框架总结(框架分析+环境搭建+实例源代码下载)

     

    首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是眼下较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序

     

    集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层)。

     

    Struts作为系统的总体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持Spring一方面作为一个轻量级的IoC容器,负责查找、定位、创建和管理对象及对象之间的依赖关系,还有一方面能使StrutsHibernate更好地工作。

     

     

    SSH构建系统的基本业务流程是:

     

    1在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts依据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给对应的Action处理。

    2在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完毕业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。

    3在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

     

    採用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,并且还实现了业务逻辑层与持久层的分离。这样不管前端怎样变化,模型层仅仅需非常少的修改,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。并且因为不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。

     

     

    以下我们再具体看一下组成SSH的这三个框架

    一、Spring

    1、什么是Spring?

    简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

     

    2、Spring的特性

    详细自己百度吧

    全部Spring的这些特征使你可以编写更干净、更可管理、而且更易于測试的代码

     

    3、为什么使用Spring?

    Spring的以上特性使得开发者使用主要的JavaBean来完毕曾经仅仅可能由EJB完毕的事情。然而,Spring的用途不仅限于server端的开发。从简单性、可測试性和松耦合的角度而言,不论什么Java应用都能够从Spring中受益。

     

    二、Struts

    1、什么是Struts?

    它通过採用 Java Servlet/JSP 技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。

     

    2、Struts1的核心构成

     

    在 Struts1 中,由一个名为 ActionServlet 的 Servlet 充当 控制器(Controller)的角色,依据描写叙述模型、视图、控制器相应关系的 struts-config.xml 的配置文件,转发视图(View)的请求,组装响应数据模型(Model)。

     

    在 MVC 的模型(Model)部分,常常划分为两个主要子系统(系统的内部数据状态与改变数据状态的逻辑动作),这两个概念子系统分别详细相应 Struts 1里的 ActionForm 与 Action 两个须要继承实现超类。在这里,Struts 1能够与各种标准的数据訪问技术结合在一起,包含Enterprise Java Beans(EJB), JDBC 与 JNDI。

     

    在 Struts 1的视图(View) 端,除了使用标准的JavaServer Pages(JSP)以外,还提供了大量的标签库使用,同一时候也能够与其它表现层组件技术(产品)进行整合,比方 Velocity Templates,XSLT 等。

     

    通过应用 Struts 的框架,终于用户能够把大部分的关注点放在自己的业务逻辑(Action)与 映射关系的配置文件(struts-config.xml)中。

     

    3、Struts1的基本运行流程

    详见《STRUTS基本工作流程》

     

    4、什么是struts2

    Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构区别巨大。Struts 2以WebWork为核心,採用拦截器的机制来处理用户的请求,这种设计也使得业务逻辑控制器可以与ServletAPI全然脱离开,所以Struts 2可以理解为WebWork的更新产品

     

    5、strut2的体系结构

     

     

    解析:

    当Web容器收到请求(HttpServletRequest)它将请求传递给一个标准的的过滤链包含  流程(ActionContextCleanUp)过滤器,然后经过Other filters(SiteMesh ,etc),

    接下来须要调用FilterDispatcher核心控制器,然后它调用ActionMapper确定请求那个Action,ActionMapper返回一个收集Action具体信息的ActionMaping对象。

    接下来FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager) 从配置文件里读取配置信息(struts.xml),然后创建ActionInvocation对象,ActionInvocation在调用Action之前会依次的调用所用配置拦截器(Interceptor N) 一旦运行结果返回结果字符串ActionInvocation负责查找结果字符串相应的(Result)然后运行这个Result Result会调用一些模版(JSP)

    来呈现页面,之后拦截器(Interceptor N)会在被运行(顺序和Action运行之前相反)最后响应(HttpServletResponse)被返回在web.xml中配置的那些过滤器和(核心控制器)(FilterDispatcher)。

     

    6、为什么使用Struts?

    首先,Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并依据J2EE的特点,做了对应的变化与扩展减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化

     

    另外, struts具有页面导航功能,使系统的脉络更加清晰。通过一个配置文件,就可以把握整个系统各部分之间的联系,这对于后期的维护有着莫大的优点。尤其是当还有一批开发人员接手这个项目时,这样的优势体现得更加明显。

    7、 Struts1和Struts2的差别

    详见《Struts1 和 Struts2

    三、Hibernate

    1、什么是Hibernate?

    Hibernate是一个开放源码的对象关系映射框架,它对JDBC进行了很轻量级的对象封装,使得Java程序猿能够随心所欲的使用对象编程思维来操纵数据库。 Hibernate能够应用在不论什么使用JDBC的场合,既能够在Java的client程序使用,也能够在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate能够在应用EJB的J2EE架构中代替CMP,完毕数据持久化的重任

     

    2、Hibernate核心构成

     

    详细就不展开了

     

    3、Hibernate基本运行流程

     

    为什么使用Hibernate?

    1. 对JDBC訪问数据库的代码做了封装,大大简化了数据訪问层繁琐的反复性代码。

    2、Hibernate是一个优秀的ORM实现。他非常大程度的简化DAO层的编码工作,将软件开发者从大量同样的数据持久层相关编程工作中解放出来,使开发更对象化了。

    3、移植性好,支持各种数据库,假设换个数据库仅仅要在配置文件里变换配置就能够了,不用改变hibernate代码。

    4、支持透明持久化,由于hibernate操作的是纯粹的(pojo)java类,没有实现不论什么接口,没有侵入性。所以说它是一个轻量级框架。

    最后附上SSH1和SSH2框架搭建的实例,点击就可以下载

    SSH1框架搭建实例(spring2+struts1+hibernate3)採用旧版本号,详见代码中凝视

    SSH2框架搭建实例(spring3.2+strust2.3.4+hibernate4.2)所有採用最新版本号,详见代码中凝视

    开发环境搭建,參照我的还有一篇博客

    Win7(64) + eclipse(64)+ tomcat7(64)+ jdk7(64)开发环境配置

     一些说明:
    
    索要代码的邮箱,我基本上都发过了,假设有漏发,请联系我。
    
    
    还是希望大家去csdn下载页去下载。假设速度慢,能够去这里http://pan.baidu.com/s/1eQh7FXo
    
    
    开发环境配置。http://blog.csdn.net/shan9liang/article/details/8807784
      
    在war中,找到application-common.xml。改动数据源,指定自己的数据库就可以。项目部署后,会自己主动映射表。
      
      
    <!--配数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
    <property name="username" value="ssh" />
    <property name="password" value="ssh" />
    </bean>
      
    以上是oracle的配置。
    
    假设使用其它数据库,请在lib文件夹下,增加驱动包。并改动数据源。
    
    强烈建议:
    
    
    https://code.csdn.net/shan9liang/tgb
    这是在CSDN CODE托管的,採用ssh搭建的一个考勤管理系统,maven项目,比原来那个更规范了,建议用这个,并且我会持续更新,逐渐增加各种主流框架,相信我。
    。只是不是eclipse项目,须要手工导入eclipse,近期特喜欢用intellij。建议直接用git clone。


  • 相关阅读:
    Asp.net弹出浏览器客户端确认对话框代码 Carlwave
    VS 2005 与SQL Server 2005整合优势在哪里?(from csdn.net) Carlwave
    如何让搜索引擎收录我的站点 Carlwave
    超强扩展性的DNNDotNetNuke模块功能分类列表(from 中国DNN) Carlwave
    DotNetNuke命名空间概述 Carlwave
    Most Popular Questions and Answers on ASP.NET Whidbey(from asp.net forums,write by ASP.NET Team) Carlwave
    火箭官方宣告麦蒂缺阵五周 季后赛前景蒙上阴影 Carlwave
    asp.net有效使用缓存(转) Carlwave
    《Business Rules Engine Overview》《业务规则引擎概述》write by Mark Kamoski Carlwave
    中国详细省市县自治区名称列表(含access数据库和sql2000备份数据库) Carlwave
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4292193.html
Copyright © 2011-2022 走看看