SSH框架总结(框架分析+环境搭建+实例源代码下载)

SSH框架总结(框架分析+环境搭建+实例源代码下载)

 

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

 

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

 

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

 

<span>SSH框架总结(框架分析+环境搭建+实例源代码下载)</span>

 

由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的特性

<span>SSH框架总结(框架分析+环境搭建+实例源代码下载)</span>

详细自己百度吧

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

 

3、为什么使用Spring?

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

 

二、Struts

1、什么是Struts?

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

 

2、Struts1的核心构成

<span>SSH框架总结(框架分析+环境搭建+实例源代码下载)</span>

 

在 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的体系结构

 <span>SSH框架总结(框架分析+环境搭建+实例源代码下载)</span>

 

解析:

当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核心构成

 <span>SSH框架总结(框架分析+环境搭建+实例源代码下载)</span>

详细就不展开了

 

3、Hibernate基本运行流程

<span>SSH框架总结(框架分析+环境搭建+实例源代码下载)</span>

 

 

为什么使用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。

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119212.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 因果推断学习笔记三——Uplift模型「建议收藏」

    因果推断学习笔记三——Uplift模型「建议收藏」一、Uplift模型因果推断在互联网界应用主要是基于Upliftmodel来预测额外收益提升ROI。Uplift模型帮助商家计算人群营销敏感度,驱动收益模拟预算和投放策略制定,促成营销推广效率的最大化。同时如何衡量和预测营销干预带来的“增量提升”,而不是把营销预算浪费在“本来就会转化”的那部分人身上,成为智能营销算法最重要的挑战。举个例子????:对用户A和用户B都投放广告,投放广告后用户A的CVR(转化量/点击量)为5%,用户B的CVR为4%,那么是否就给用户A投广告呢?仅从投放广告后的结果来看是这

    2022年11月1日
  • vim命令复制粘贴命令_linux编辑文件命令vim

    vim命令复制粘贴命令_linux编辑文件命令vim今天被vim的复制粘贴弄得很烦,它不像windows那样,每次复制会把以前的内容覆盖。所以有时粘贴出来的东西并不是你想要的。在不同终端中,用vim打开的两个文件之间的复制粘贴1.用同一个终端,直接使用这个命令:vimfile1file2这样就可以直接用y和p复制粘贴了。但是这样比较麻烦,需要在两个文件之间切换。2.之所以不能直接用y和p复制粘贴。是因为每个终端中的vim复制的内容存储在不同…

    2022年9月22日
  • 开发发版流程_文件签发流程

    开发发版流程_文件签发流程迭代流程开发人员:周一到周五产品设计:周一到周五测试人员:周六收集需求:周一周二周三周四需求梳理周五用户意见周六第二次需求梳理需求阶段第一次需求梳理会议开发人员和测试人员通过此会议了解下一次迭代

    2022年8月5日
  • linux的软连接命令_linux软连接怎么用

    linux的软连接命令_linux软连接怎么用Linux命令之软连接详解。结合示例详细说明软链接的创建,同时给出如何正确删除一个软链接。

    2022年9月30日
  • plsqldeveloper_电脑病毒勒索比特币

    plsqldeveloper_电脑病毒勒索比特币plsql dev引起的数据库被黑勒索比特币实现原理分析和解决方案—-惜分飞

    2022年4月20日
  • sdn和nfv是什么_他她它怎么区分

    sdn和nfv是什么_他她它怎么区分那到底什么是NFV(网络功能虚拟化),它和之前的SDN(Software-definedNetworking)软件定义网络概念是一回事吗?它们有什么区别?SDN-诞生于校园,成熟于数据中心:SDN初始于园区网络,一群研究者(斯坦福的达人们)在进行科研时发现,每次进行新的协议部署尝试时,都需要改变网络设备的软件,这让他们非常郁闷,于是乎,他们开始考虑让这些网络硬件设备可编程化,并且可以被集中的一个盒子所管理和控制,就这样,诞生了当今SDN的基本定义和元素·分离控制和转发的功能·

    2022年9月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号