具体来说,SSH不是两个架构,而是数个架构(struts spring hibernate)的软件系统,是目前较盛行的一种Web插件开放源码软件系统架构,用于构筑灵巧、更易扩充的第二层Web插件。

软件系统SSH架构的掌控系统从职能上分为三层:links、销售业务方法论层、统计数据长久层和域组件层(虚拟层)。

Struts做为掌控系统的整体虚拟化,负责管理MVC的分立,在Struts架构的数学模型部分,掌控销售业务重定向,利用Hibernate架构对长久层提供更多支持。Spring一方面做为两个轻量的IoC罐子,负责管理搜寻、功能定位、建立和taught及第一类间的倚赖关系,另一方面能使Struts和Hibernate更快地组织工作。

自动草稿

由SSH构筑掌控系统的基本销售流程是:

1、在links中,具体来说通过JSP网页同时实现可视化介面,负责管理传输允诺(Request)和转交积极响应(Response),然后Struts根据命令行(struts-config.xml)将ActionServlet转交到的Request指派给相应的Action处置。

2、在销售业务层中,管理服务组件的Spring IoC罐子负责管理向Action提供更多销售业务数学模型(Model)组件和该组件的协同第一类统计数据处置(DAO)组件完成销售业务方法论,并提供更多会话、缓冲器池等罐子组件以提升掌控系统操控性和Teredo的准确性。

3、在长久层中,则倚赖Hibernate的无性态射和资料库可视化,处置DAO组件允诺的统计数据,并回到处置结果。

采用上述合作开发数学模型,不仅同时实现了快照、掌控器与数学模型的全盘分立,所以还同时实现了销售业务方法论层与长久层的分立。这样不论后端如何变动,数学模型层只需极少的更动,并且资料库的变动也不会对后端有所影响,大大降低了掌控系统的可F83E43Se性。所以由于不同层间耦合度小,有助于项目组核心成员博戈达组织工作,大大降低了合作开发工作效率。

上面我们再详尽看一下组成SSH的这三个架构

一、Spring

1、什么是Spring?

简单来说,Spring是两个轻量的掌控探底回升(IoC)和面向全国锐角(AOP)的罐子架构。

2、Spring的优点

自动草稿

具体自己百度一下

所有Spring的这些特征使你能够编写更干净、更可管理、并且更更易测试的代码

3、为什么使用Spring?

Spring的以上优点使得合作开发人员使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的合作开发。从简单性、可测试性和松耦合的角度而言,任何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的客户端程序使用,也可以在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)全部采用最新版本,详见代码中注释

一些说明:

以上是oracle的配置。

如果使用其他资料库,请在lib目录下,加入驱动包。并修改统计数据源。

强烈建议:

这是在CSDN CODE托管的,采用ssh构筑的两个考勤管理掌控系统,maven项目,比原来那个更规范了,建议用这个,所以我会持续更新,逐渐加入各种主流架构,相信我。

。不过不是eclipse项目,需要手工导入eclipse,最近特喜欢用intellij。建议直接用git clone。

1.本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!