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

概述
一个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的框架也是其中一种组织代码的框架,但从中抽象化出来的原理,理解了,去看其他类似框架时,也就能举一反三。
JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系的更多相关文章
- 【整理】JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系
#[整理]JavaEE基本框架(Struts2+Spring+MyBatis三层,Struts MVC)之间的关系 
这几天搭了个spring+struts2+mybatis的架子,练练手,顺便熟悉熟悉struts2. 环境:myEclipse10+tomcat7+jdk1.6(1.8的jre报错,所以换成了1.6) ...
- SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程
1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One ...
- JavaWeb_(SpringMVC框架)SpringMVC&Spring&MyBatis整合
JavaWeb_(SpringMVC框架)测试SpringMVC&Spring&MyBatis三大整合 传送门 1.整合ssm 3大框架 过程 a)导包 -> spring_Ja ...
- 3.spring:自动装配/Bean之间的关系/作用域/外部文件/spel/
1.自动装配/手动装配 xml配置文件里的bean自动装配 Spring IOC 容器里可以自动的装配Bean,需要做的仅仅是在<bean>的autowire属性里面指定自动装配模式 -& ...
- struts2 + spring + mybatis 框架整合
在Eclipse下基于Maven整合Struts2,Spring和Mybatis3框架. 新建Maven project,type选择webapp 工程目录如下 修改pom.xml文件如下: < ...
随机推荐
- Java中java.util.concurrent包下的4中线程池代码示例
先来看下ThreadPool的类结构 其中红色框住的是常用的接口和类(图片来自:https://blog.csdn.net/panweiwei1994/article/details/78617117 ...
- SoapUI--the use of Script Library
SoapUI--the use of Script Library 有两种方法在soapUI中引用自己的groovy脚本库. 方法一:把自己的script folder放到soapUI install ...
- ansible资产配置
参考链接:https://www.cnblogs.com/iois/p/6403761.html ansible主机组的使用,我们在对一个集群进行管理的时候集群会有很多角色,在执行统一命令操作的时候我 ...
- 独家!DevExpress VCL Controls 2019发展路线图(No.1)
[DevExpress VCL Controls下载] 根据调查结果和反馈,DevExpress官方团队最终确定了DevExpress VCL Controls 2019年的路线图. 关于调查结果的重 ...
- SQL Server用表组织数据
一.主键 主键作为表中的唯一标识,标识这一列不允许出现重复数据 如果两列或多列组合起来唯一标识表中的每一行,该主键叫“复合主键” 选择主键的原则 最少性 尽量选择单个键作为主键 ...
- L358 World Book Day
World Book Day is celebrated by UNESCO and other related organisations every year on the 23rd of Apr ...
- Spring动态获取已注入的对象的方法
1.根据类获取对象 @Autowired ApplicationContext context; GenericMapper<T,String> dao=(GenericMapper< ...
- amaze ui 滚动监听
引入 此框架的css js 前提还要有jquery http://amazeui.org/javascript/scrollspy 然后看这个链接里的各种动画 运用方法就是 在你想要有动 ...
- css中换行与不换行的样式
常见的css样式分为换行与不换行两种需求 1.不换行显示省略号 text-overflow:ellipsis; white-space:normal; 2.换行自适应 word-break: brea ...
- django 模型操作
# 添加 Fruit.objects.create(name='Apple') # 更新 UserProfile.objects.filter(user=admin).update(**{'onlin ...