【整理】JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系

时间:2024-01-18 19:40:44
#【整理】JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系

![关系图解](https://images0.cnblogs.com/blog/84053/201402/171320568752410.gif)

[visio文件下载](http://files.cnblogs.com/p2227/JavaEE_Frameworks.7z)

##概述
一个JavaEE的项目,页面用JSP,后台用了Struts2+Spring+MyBatis,数据库用的是Oracle,这么多技术名词,他们之间的关系如何,整体是怎么运作的,用什么东西进行关联?这是开发过程中任何一个成员都必须要了解的。即使你只关注某一个方面,例如前端。 ##Web端
`Struts`其实是JavaEE常用的MVC框架,统筹Servlet(C)、视图层(V)和后台Action及Action中的Model之间的关系。用户通过**http请求**去访问Servlet,Struts就会给你指定好类,并把request中的数据按照一定的规则放在Model中。当Action中的Model数据发生变化,通过response返回的JSP页面上也能通过el表达式或者其他库去访问到这些变化。我们就不用把心思花在通讯协议及一些数据格式(JSON和Java实体类)之间的处理上。 ##三层架构
在Web1.0时代,我们的业务逻辑都是交给后台去处理的,也就是Action层、Manager、Dao层所组成的JavaEE后台。我们推荐action层处理去视图之间的关系,这样当你用客户端和浏览器访问同一个应用时,只需要在action层上下工夫即可。manager层是真正的java逻辑,用各种java类、库去处理数据。dao层关注数据库层面的逻辑,这样当你访问Oracle或者MSSQL数据库时,只需要关注dao层即可。`Spring`统筹这三者之间的关系,通过IoC等概念去解决这三层之间的耦合关系。 ##数据库
在Dao层,我们关注后台内存中的变量与数据库持久层之间的通讯,我们一般用**jdbc**去进行通讯的,这是方式。内容则是由`MyBatis`去处理,通过mybatis去写SQL接收变量,接收返回的数据或者数据集。 ## Web 2.0时代的MVC
进入Web2.0时代,我们在Struts统筹的视图层中,也包含了较多的业务逻辑,特别是**不涉及到密码、权限等敏感数据,以提高用户体验为宗旨**的逻辑。所以在这一层上也要有以MVC的概念去统筹各代码的关系,使之条理化的框架如`angular`。HTML/CSS是视图,业务逻辑的javascript是控制器,记录数据的javascript(或者叫JSON)是模型。这一层与后台之间的以包装了http请教的`ajax`技术去实现。 ##最后的话
另外一个方面,数据库的存储过程等东西表明,这里面也有较复杂的逻辑。一个软件项目各个层面的领域发展,都达到一定高度,有一定复杂性。JavaEE的框架也是其中一种组织代码的框架,但从中抽象化出来的原理,理解了,去看其他类似框架时,也就能举一反三。