java框架个人理解


简单的说,对于一个网站来说,你从点开网页到你获取数据这个过程你知道吧。
struts就是负责页面的显示处理,而hibernate则是负责对数据库的CRUD操作,从而把用户要的资源从数据库拿出显示到页面上,而spring则是这两者在耦合,事务方面做一些工作。俗称MVC三层的分工,

简短说下,ssh框架总体是为了解耦合使用的,struts管理表示层,spring管理业务逻辑层,hibernate管理持久化层,


Hibernate 做为之久层框架封装了对数据库的连接
Struts2 会依据web.xml、struts2.xml配置文件形成对整个流程的控制最终实现跳转页面
Spring 整合了Hibernate与Struts2实现了代码的完全的解耦,使3大框架完美结合,降低了组件与组件之间的关联、改善程序结构、便于系统的维护与扩展.当然Spring还可以整合其他的的框架

SSH的流程可以大致理解为:
请求到达前端控制器,前端控制器根据struts2.xml配置文件建立请求与action之间的对应关系、Spring容器实例在服务器启动时由web.xml中定义的Spring监听器创建、创建之后会实现各组件之间的注入关系、最终将Service注入到action中,action根据输入算输出然后决定转到哪个页面。
S2SH集成框架简介
struts 负责 web 层ActionFormBean 接收网页中表单提交的数据,然后通过 Action 进行处理,再 Forward 到对应的网页。
spring 负责业务层管理,即 Service (或 Manager). service 为 action 提供统计的调用接口,封装持久层的 DAO。同时可以写一些自己的业务方法。Spring负责统一 javabean 管理方法和声明式事务管理,最后spring来集成 Hiberante 。
Hiberante ,负责持久化层,完成数据库的 crud 操作,hibernate 为持久层,提供 OR/Mapping 。 它有一组 .hbm.xml 文件和 POJO, 是跟数据库中的表相对应的。然后定义 DAO ,这些是跟数据库打交道的类,它们会使用 PO 。
在 struts+spring+hibernate 的系统中,对象的调用流程是: jsp-> Action - > Service ->DAO ->Hibernate 。 数据的流向是 ActionFormBean 接受用户的数据, Action 将数据从 ActionFromBean 中取出,封装成 PO,再调用业务层的 Bean 类,完成各种业务处理后再 forward 。而业务层 Bean 收到这个 PO 对象之后,会调用 DAO 接口方法,进行持久化操作。

一:基本概念

框架技术:框架是一个提供了可重用的公共结构的半成品,他保证了我们程序结构风格的统一。

1.struts框架:是MVC设计模式的最经典的实例,它定义了通用的Controller(控制器),通过配置文件(一般是struts- config.xml)隔离了Model(模型)和 view(视图),以Action的概念对用户的请求进行了封装,是代码更清晰易读还提

供了自动将请求数据填充到对象以及页面标签简化了编码。

2.hibernate框架:hibernate是一个优秀的持久化框架,负责简化将对象数据保存的数据库或从数据库中读取数据并封装

到对象的工作,同过简单的配置和编码就可以替代JDBC复杂的编码程序,hibernate处理数据库操作的方式代表了当前

的趋势。

Hibernate:可以理解成为是一个中间件,它负责把Java程序的sql语句接受过来并发送到数据库,而数据库返回来的信息有Hibernate接受后直接生成一个对象传给Java。

使用Hibernate原因:对JDBC访问数据库的代码做了封装,大大简化了数据访问 层的重复性代码


3.spring框架:是现有的javaEE技术更易用和促进良好的编程习惯,它是一个轻量级的框架,渗透了javaEE技术的方方面

面。主要作为依赖注入容器和AOP实现存在。还提供了声明式事务,对DAO层的支持等简化开发的功能。

SSH集成框架指的就是struts+spring+hibernate的技术框架。使用这个集成框架使我们的应用程序更加健壮,稳固,轻巧

和优雅。


Hibernate 负责数据,如果简单,用JDBC也行 
Struts 负责用户的交互,如果简单,用JSP也行。 
Spring 可以让他们更好的合作 

所以:
没有Spring是可以的 
没有另外2部分是不可以的。

Spring管理的是java类的生成和销毁、注入调用,类与类之间的关系
一切与数据库有关的操作都是hibernate的,处理访问请求和页面数据是struts2的
spring只是管理了它们的类,
其实就是用spring的IOC(控制反转)将其他框架的对象加载。SSH2一般就是用spring的这个啊
ssh三个框架各自对应展现层、业务层、持久层,各层之间通过接口调用以实现松散耦合,其中spring又是三者之间的粘合剂,由spring来实现三层之间的模块装配,具体如何装配由你在spring的配置文件中指定。


框架说白了就是JAVA工作者多年以来总结出的一些开发标准。让我们可以以成功的经验模式来开发我们自已的系统,一般使用框架的好处是 
·在好的框架下,开发者只需要写一些必须的代码;他们不需要直接接触底层的API。 这一点很重要。 

·经过良好设计的框架可以为程序提供清晰的结构并且提高程序的内聚性。好清晰的结构使得其他人可以更容易加入项目。 

·一个容易使用的框架可以通过一些例子和文档为用户提供最佳实践。 

·采用成功的框架的代码比自己的代码容易测试 

J2EE本身提供了一些框架。比如, Enterprise Java-Beans (EJB) container或者 Servlet engine 而这些框架一般在中小工程中我们都不会使用,会让我们把大量的时间浪费在开发框架上。 
而现在比较流行开源框架,主要是struts,hibernate,spring等 
比如struts是在原有mvc基础上实现在代码分离等功能,非常好用。 
而hibernate可以把我们的关系型数据库转换成我们在JAVA中的面像对像来使用。从而让我们在开发时不需要直接写SQL语句,比如database.getName();就可以直接把数据库中的用户名取出来。 
Spring 
J2EE框架被大规模地运用到项目中,而项目总要负责这些框架以及自己业务代码的连接,使之真正融合到一起。Spring就是专注于这个问题的,它和Hibernate融合的很好。 
这三种框架在一起并不冲突,所以现在最常用的框架就是 
struts+hibernate+spring就像我们盖房子一样,先把框架搭好,我们在在上面写代码就很规范。 

Struts框架介绍 :

Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的 Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。 
Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实 现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。 
就是说可将两者一起使用,达到将两者自身的特点进行互补。

spring 框架介绍 :

它关注的领域是其他许多流行的Framework未曾关注的。Spring要提供的是一种管理你的业务对象的方法。 

Spring既是全面的又是模块化的。Spring有分层的体系结构,这意味着你能选择仅仅使用它任何一个独立的部分,而它的架构又是内部一致。 因此你能从你的学习中,得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。 

它的设计从一开始就是要帮助你编写易于测试的代码。Spring是使用测试驱动开发的工程的理想框架。 

Spring不会给你的工程添加对其他的框架依赖。Spring也许称得上是个一站式解决方案,提供了一个典型应用所需要的大部分基础架构。它还涉及到了其他framework没有考虑到的内容。 

尽管它仅仅是一个从2003年2月才开始的开源项目,但Spring有深厚的历史根基。

Spring架构上的好处 

在我们进入细节之前,让我们来看看Spring能够给工程带来的种种好处: 

Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。 

Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验,这是一个很大的问题,它降低了系统的可测试性和面向对象的程度。 

通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个 魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性。 Inversion of Control的使用(在下面讨论)帮助完成了这种简化。 

通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。 

Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。 

使用Spring构建的应用程序易于单元测试。 

Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。 

Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适用于许多web应用。例如,Spring能使用AOP提供声明性事务管理而不通过EJB容器,如果你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。 

Spring为数据存取提供了一个一致的框架,不论是使用的是JDBC还是O/R mapping产品(如Hibernate)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值