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

本文深入介绍了SSH框架(Struts+Spring+Hibernate)的概念、组成及其在Web应用程序中的应用。详细阐述了Struts、Spring和Hibernate三个核心组件的功能与作用,并概述了SSH框架如何帮助实现MVC设计模式,提高开发效率。

首先,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的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何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)全部采用最新版本,详见代码中注释

 

开发环境搭建,参照我的另一篇博客

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

 

 

  1.  一些说明:  
  2.   
  3. 索要代码的邮箱,我基本上都发过了,如果有漏发,请联系我。  
  4.   
  5.   
  6. 还是希望大家去csdn下载页去下载。如果速度慢,可以去这里http://pan.baidu.com/s/1eQh7FXo  
  7.   
  8.   
  9. 开发环境配置。http://blog.csdn.net/shan9liang/article/details/8807784  
  10.     
  11. 在war中,找到application-common.xml。修改数据源,指定自己的数据库即可。项目部署后,会自动映射表。  
  12.     
  13.     
  14. <!--配数据源 -->  
  15. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
  16. destroy-method="close">  
  17. <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />  
  18. <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />  
  19. <property name="username" value="ssh" />  
  20. <property name="password" value="ssh" />  
  21. </bean>  
  22.     
  23. 以上是oracle的配置。  
  24.   
  25. 如果使用其他数据库,请在lib目录下,加入驱动包。并修改数据源。  
  26.   
  27. 强烈建议:  
  28.   
  29.   
  30. https://code.csdn.net/shan9liang/tgb  
  31. 这是在CSDN CODE托管的,采用ssh搭建的一个考勤管理系统,maven项目,比原来那个更规范了,建议用这个,而且我会持续更新,逐渐加入各种主流框架,相信我。  
  32. 。不过不是eclipse项目,需要手工导入eclipse,最近特喜欢用intellij。建议直接用git clone。

转自:http://blog.csdn.net/shan9liang/article/details/8803989

内容概要:本文详细介绍了MySQL中InnoDB存储引擎的逻辑存储结构及其表分区技术。InnoDB的逻辑存储单元由高到低依次为表空间、段、区、页和行,其中表空间包括系统表空间、独立表空间、通用表空间、Undo表空间和临时表空间,每种表空间具有不同的用途和管理方式。文章进一步讲解了表分区的概念与类型,包括RANGE、LIST、HASH、KEY以及多字段COLUMNS分区,阐述了分区的优势如提升查询性能、便于数据维护、支持跨物理设备存储等,并列举了实际SQL操作示例,帮助理解分区表的创建、修改、删除及重组等操作。同时指出了分区的限制条件,如最大分区数量、主键约束要求等。; 适合人群:具备一定MySQL数据库基础,从事数据库开发、运维或架构设计的技术人员,尤其是工作中涉及大数据量表管理与性能优化的1-3经验研发人员。; 使用场景及目标:①深入理解InnoDB存储机制,优化数据库物理结构设计;②掌握表分区技术,应用于海量数据存储与高效查询场景,如日志系统、订单系统的时间分区设计;③通过分区实现数据归档、快速删除历史数据、提升查询性能等运维目标; 阅读建议:学习时应结合MySQL实际环境动手实践文中提供的SQL命令,重点关注表空间管理和分区策略的选择,理解其对性能和维护的影响,并注意分区使用中的限制条件以避免设计失误。
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)【采用BPSK或GMSK的Turbo码】MSK、GMS内容概要:本文主要介绍了采用BPSK或GMSK调制方式的Turbo码相关技术研究,重点涵盖GMSK调制下的二比特差分解调方法、Turbo码与BPSK/GMSK调制相结合的系统性能分析,并提供了完整的Matlab代码实现方案。研究内容包括调制解调原理、编码结构设计、误码率仿真及系统优化等关键环节,旨在通过仿真手段验证所提出方案的有效性和可靠性,帮助研究人员深入理解现代数字通信系统中的关键技术和其实现方法。; 适合人群:具备一定通信原理和Matlab编程基础,从事无线通信、信号处理、编码理论等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握GMSK调制与Turbo码结合的系统设计与仿真方法;②学习二比特差分解调算法在实际通信系统中的应用;③通过Matlab代码实现提升对数字调制解调和信道编码技术的理解与实践能力;④为相关课题研究、毕业设计或工程项目提供参考和技术支持。; 阅读建议:建议读者结合文中提供的Matlab代码逐模块运行与调试,对照通信系统基本原理深入理解各环节功能,重点关注调制解调过程与Turbo译码的协同工作机制,并尝试修改参数以观察系统性能变化,从而达到理论与实践相结合的学习效果。
源码下载地址: https://pan.quark.cn/s/7958f591353c 在Java应用程序的开发过程中,尤其是针对SpringBoot项目的构建,IntelliJ IDEA(简称IDEA)被广泛地采纳为一个极为流行的集成开发平台。本文将系统性地阐述如何在IDEA环境中部署并执行一个SpringBoot项目,涵盖了必要的环境搭建、Maven的配置、JDK环境的设定以及数据库的设置等关键环节。在进行后续操作前,请确认已经安装了以下基础组件: 1. IDEA:作为一个专门用于Java应用程序开发的集成开发环境,它提供了丰富的功能选项和强大的代码辅助能力。 2. JDK1.8:由于SpringBoot项目通常基于Java 8版本或更新版本进行开发,因此需要在计算机系统中安装对应的JDK版本。 3. MySQL8.0:如果项目需求中涉及到MySQL数据库的使用,请确保该数据库已经安装并处于运行状态。 4. Maven:作为项目的构建工具,它负责管理和构建SpringBoot项目。 **步骤一:Maven的配置** 1. **未配置Maven的情况**:当系统内部没有预先配置Maven时,IDEA将采用其内置的Maven版本来进行构建工作。用户可以直接利用IDEA自带的默认配置。 2. **已配置Maven的情况**:对于拥有个人Maven配置的用户,需要在IDEA中进行相应的设置。通过访问`File` > `Settings` > `Build, Execution, Deployment` > `Build Tools` > `Maven`菜单路径,用户可以在`Maven home directory`字段中指定本地Maven安装的路径。此外,还需确保`...
源码链接: https://pan.quark.cn/s/a4b39357ea24 在Linux操作系统,特别是服务器部署场景下,网络连接的不可靠性或缺失是常见问题,因此,进行离线模式下的软件安装变得尤为关键。本文将系统阐述在CentOS虚拟平台上如何实现wget工具及其相关组件的脱网安装。 首先,让我们对wget的功能特性有一个清晰的认识。wget作为一款功能全面的网络数据获取软件,支持通过HTTP、HTTPS以及FTP等传输协议执行文件下载操作,并且具备在用户中断连接后自动续传的功能,特别适用于在终端操作界面中完成文件获取任务。值得注意的是,wget程序的有效运行可能需要依赖特定的系统库和其他辅助工具,因此在部署过程中必须确认这些前置条件已经得到满足。 在执行wget的离线安装作业前,需要在具备网络连接的条件下预先准备一个集成所有必要组件的归档文件。该归档通常包含了wget的安装程序以及其运行所需的所有支持库。根据所提供的文件清单信息,识别到存在一个命名为“wget_offline_dependencies”的压缩文档,此文件应包含所有必需的元素。 接下来,将遵循以下操作流程开展离线安装工作: 1. **配置安装环境**:保证CentOS虚拟机的操作系统版本是最新的,以避免因系统组件版本陈旧而引发的兼容性障碍。执行`sudo yum update`(适用于CentOS 7及更早版本)或`sudo dnf update`(适用于CentOS 8及后续版本)指令来更新系统组件。 2. **传输离线安装包**:将“wget_offline_dependencies”压缩文件从网络可用的设备传输至CentOS虚拟机。可以使用U盘存储设备、网络文件服务或其他个人偏...
已经博主授权,源码转载自 https://pan.quark.cn/s/653d18f4b516 个人归纳了电子学会Python一级考试的要点及常见错误点,有需求的用户请在评论区留言。考试内容范围: 一、明确Python存在多种开发平台,精通Python原配的IDLE开发平台,能够开展程序编写、调试及分析工作,需具备借助Python开发平台进行程序设计的实践能力: (1)认识Python常用的几种编程平台:IDLE、Visual Studio Code、JupyterNotebook; (2)熟练IDLE的操作步骤,能够启动IDLE,能够创建文档、储存文档;(3)熟练运用IDLE进行编程,能够修改文档、执行文档等操作;(4)熟悉IDLE的两种开发途径,能够在不同途径间进行切换; (5)明确Python的版本标识以及当前最普遍应用的Python版本。 二、掌握Python程序编写的基础方法: (1)掌握“输入、处理、输出”程序编写流程; (2)熟练Python的基本格式,编写代码时会恰当的使用空格缩进、注释、字符串界定; (3)掌握变量基础概念,能够运用变量,并且掌握变量命名的规范和保留字等基础语法规格; (4)理解字符串、数值型变量,能够对变量类型进行转换; (5)掌握并熟练编写含有数值类型需求的程序。 Python作为教育及考核领域内广泛使用的高级程序设计语言,特别适合初学者学习入门。电子学会的Python一级考核主要检测考生对Python基础知识的掌握程度及应用水平。以下是一些关键的要点: 1. **开发平台**:考生应认识到Python的多种编程平台,如IDLE(Python自带的集成开发平台)、Visual Studio Code和Jupyter Notebook...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值