JAVA中SSH框架

article/2025/11/7 4:30:57

前言

最近刚开始学习Java后端的一些知识,很多不懂的或者要学习的记录在这里,希望自己学习的同时也能帮助一些别人,如果有什么不对的地方或者需要补充的也欢迎大家留言,我也会继续学习和修改的!

标签

一、Spring

Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。

二、STRUCTS

Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。

三、Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。映射很简单呀,就是页面的映射呀,多做点练习就会了。

JAVA三大框架用来做WEN应用。 struts主要负责表示层的显示 spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作) hibernate主要是数据的持久化到数据库 在用jsp的servlet做网页开发的时候有个web.xml的映射文件,里面有个mapping的标签就是用来做文件映射的。 当你在浏览器上输入URL地址的时候,文件就会根据你写的名称对应到一个java文件,根据java文件里编写的内容显示在浏览器上,就是一个网页,所以网页名字是随便写的,随便起的名字,不管你起的是. php.jsp .do还是其他的什么都对应这个java文件,这个java文件里的代码进行什么操作就干什么,显示一句话还是连接数据库还是跳转到其他页面等等,这个java文件把数据进行封装起到安全和便于管理的作用。其实这个java文件编译过来是.class的一个字节码文件,没有那么一个类似html嵌入标签和代码的网页文件。他与jsp文件区别就是jsp把代码嵌入到html标签中。 还有servlet或者struts中html表单的action中的提交名称对应一个java文件,struts一般是.do的,都和上面一样是映射。


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的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何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)开发环境配置》

 

 

[html] view plain copy
 print?
  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. 以上是oracle的配置。   
  23. 如果使用其他数据库,请在lib目录下,加入驱动包。并修改数据源。   
  24. 强烈建议:  
  25. https://code.csdn.net/shan9liang/tgb  
  26. 这是在CSDN CODE托管的,采用ssh搭建的一个考勤管理系统,maven项目,比原来那个更规范了,建议用这个,而且我会持续更新,逐渐加入各种主流框架,相信我。  
  27. 。不过不是eclipse项目,需要手工导入eclipse,最近特喜欢用intellij。建议直接用git clone。  
另附一个Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程的网址:

http://blog.csdn.net/yeohcooller/article/details/9316923


http://chatgpt.dhexx.cn/article/qPHyqg5e.shtml

相关文章

Java开发需要学习哪些框架

​乔布斯曾经在演讲中提过&#xff1a;“过去我认为一个出色的员工能顶 2 名平庸的员工&#xff0c;现在我认为能顶 50 个。” 听起来有些夸张&#xff0c;可现实中对多数雇主方来说&#xff0c;宁可花更多的钱找一个厉害的员工&#xff0c;也不会用便宜的价格找一个水平较差的…

Java定时任务调度框架

Java定时任务调度框架 1. 定时任务调度概述1.1 业务场景概述1.2 任务调度场景1.3 调度任务分类 2. 定时任务调度详解2.1 Timer2.2 ScheduledExecutorService2.3 SpringTask2.4 Quartz2.5 xxl-job2.6 elastic-job 1. 定时任务调度概述 1.1 业务场景概述 日常开发中定时任务使用…

java web需要学多久_java框架都有哪些 要学多久

Java的框架有SpringMVC、Spring、Mybatis、Dubbo、Maven、RabbitMQ、Log4j、Ehcache、Redis、Shiro。这些框架不需要全部学会&#xff0c;只需要掌握其中几个比较常用的就足够了。 Java的主要框架 第一、SpringMVC SpringWebMVC是一种基于Java得&#xff0c;实现了WebMVC设计模…

2022年最值得学习的5款开源Java框架 小白教程

自从1996年首发&#xff0c;至今25年以来&#xff0c;Java凭借在后端、大数据、机器学习、Web、Android等领域的应用&#xff0c;使其仍然占据着统治地位&#xff0c;长期占据全球最受欢迎编程语言前三名。 在Python、JavaScript等脚本语言中出现了大量的框架、工具包&#x…

猿创征文|我的四个月Java学习成长之路——从基础到框架再到项目

个人简介&#xff1a; > &#x1f4e6;个人主页&#xff1a;赵四司机 > &#x1f3c6;学习方向&#xff1a;JAVA后端开发 > &#x1f4e3;种一棵树最好的时间是十年前&#xff0c;其次是现在&#xff01; > &#x1f496;喜欢的话麻烦点点关注喔&#xff0c;你们…

Java框架学习顺序,主要讲解三大框架

Java编程是世界第一编程语言&#xff0c;这已经达成共识&#xff0c;是毋庸置疑的真理&#xff0c;Java框架是程序员们必学的知识点&#xff0c;而且是十分重要的应用&#xff0c;Spring、Struts、Hibernate也是经典中的经典&#xff0c;最常用的框架类型。 作为Java零基础应该…

Java框架学习

这是一张Spring 3的框架图 spring分为5个部分&#xff1a;core、aop、data access、web、test corecore部分包含4个模块spring-core&#xff1a;依赖注入IoC与DI的最基本实现spring-beans&#xff1a;Bean工厂与bean的装配spring-context&#xff1a;spring的context上下文即I…

Java框架学习顺序是哪些

java编程是互联网行业不可或缺的一门编程语言&#xff0c;也是世界第一编程语言&#xff0c;Spring、Struts、Hibernate是经典中的经典&#xff0c;最常用的框架类型。下面小编就为大家详细的介绍一下Java框架学习顺序是哪些? Java框架学习顺序是哪些?详细步骤具体如下&#…

java开发学习框架

Java基础 1.1. Java简介与安装 1.2. Java基本语法 1.3. 数据类型与变量 1.4. 运算符与表达式 1.5. 流程控制&#xff08;分支与循环&#xff09; 1.6. 数组 面向对象编程 2.1. 类与对象 2.2. 继承与多态 2.3. 接口与抽象类 2.4. 封装与访问控制 2.5. 重载与覆盖 2.6. Java内存管…

43张图帮你快速理解Java30种常用框架(附相应学习笔记)

自1995年推出以来&#xff0c;Java始终处于首位&#xff0c;这使其成为有史以来最著名的软件编程语言之一。及时的更新和新版本发布使Java保持着活跃和竞争力。 而在Java的成长史中&#xff0c;诸多能为开发节省大量时间的框架也是功不可没&#xff0c;今天我们就用43张图来盘…

数据自动采集器

数据自动采集器&#xff08;Data Scraper&#xff09;是一种自动化工具&#xff0c;用于从互联网上提取数据并将其转换为有用的信息。这些工具通常使用Web爬虫程序来提取数据&#xff0c;其目的是帮助用户节省时间和精力。数据自动采集器可以从互联网上的各种网站和应用程序中提…

数据采集分析系统

1.系统概览 数据埋点分析系统都做了些什么&#xff1f;采集了哪些数据&#xff1f;这些数据我们将如何运用和分析&#xff1f;最终又将如何展示呢&#xff1f; 首先我们看下系统结构。整个系统由以下 4 个部分组成&#xff0c;期望能提供一套完整的用户行为分析的解决方案&am…

数据采集-数据采集方法-免费数据采集软件及教程

数据采集&#xff0c;互联网上的网络数据大致分为文字图片数据&#xff0c;音频数据&#xff0c;视频数据&#xff0c;我们怎么才能快速的采集这些数据为我们所用&#xff1f;今天给大家分享一款免费的网数据采集软件。全程可视化0基础采集&#xff0c;详细参考图片。 SEO技术经…

网络数据采集-免费全网数据采集软件

网络数据采集&#xff0c;互联网上的网络数据大致分为文字图片网络数据&#xff0c;音频网络数据&#xff0c;视频网络数据&#xff0c;我们怎么才能快速的采集这些数据为我们所用呢&#xff1f;今天给大家分享一款免费的网络数据采集软件。全程可视化0基础采集&#xff0c;详细…

采集器软件

采集器软件,为什么要用采集器软件?使用采集器软件可以快速采集内容分析。今天就给大家分享一款采集器软件。只需要输入关键词或者域名就能实现数据内容采集&#xff0c;接下来我们会以图片的形式给大家展示。大家注意看图&#xff08;采集器软件为&#xff1a;147采集器直接搜…

网络数据采集-免费网络数据采集软件

网络数据采集&#xff0c;相信每个人都了解数据的重要性。根据大量的数据可以分析以及预测出行业的发展趋势以及模式。今天给大家分享一款免费的网络数据采集工具&#xff0c;全程可视化点选采集详细如图。 在网站优化行业&#xff0c;一些新手有一个通病。很多人认为SEO与营销…

比较主流的数据采集分析工具

比较主流的数据采集分析工具 友盟神策GrowingIO 可操作性&#xff1a; 友盟 操作简单&#xff0c;能够迅速建站&#xff0c;快速开始部署&#xff0c;部署成功后&#xff0c;可看数据报表。 神策 相比较来讲&#xff0c;操作不友好&#xff0c;没有找到如何建站。 GrowingI…

工业数据采集平台

工业数据采集平台 杭州乐芯科技有限公司传统的DNC、MDC、SCADA只能满足部分设备数据采集&#xff0c;在工业互联网4.0时代&#xff0c;杭州乐芯开发新一代采集平台。平台功能更加贴合工业互联网要求&#xff0c;提出数据采集兼容性更强、数据逻辑计算、平台对接等新的功能。 平…

什么是数据采集?

什么是数据采集 数据采集&#xff0c;又称数据获取&#xff0c;是利用一种装置&#xff0c;从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛应用在各个领域。比如摄像头&#xff0c;麦克风&#xff0c;都是数据采集工具。 在互联网行业快速发展的今天&#x…

工业设备数据采集系统-采集精灵

一、项目概述 MDC数据采集系统用于帮助企业通过全自动的软件采集方式&#xff0c;实时采集生产现场产量与品质数据&#xff0c;减少了大量的人工报表&#xff0c;做到无纸化生产&#xff0c;监控车间机床的利用率、空闲率、报警率、零件生产量等情况&#xff0c;并将采集到的数…