首页 > 编程语言 > 详细

MVC模式,SSM框架,三层架构,Java开发中常见包名的意义

时间:2020-04-09 15:15:47      阅读:253      评论:0      收藏:0      [点我收藏+]

什么是MVC模式?

M model 模型-编写程序应有的功能,数据管理和数据库设计。

V view 视图层-界面设计人员进行界面设计。

C controller 控制-控制器负责转发请求,对请求进行处理。

什么是SSM框架?

SSM是Spring+Spring MVC+Mybatis的缩写,主流的Java EE企业级框架。

其中,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,可以帮助我们创建对象。

Spring MVC控制开发,让开发简单规范。

MyBatis是一个基于Java的持久层框架,封装了增删改查操作。

 

Spring

看到这个,很多人会和你说什么控制反转(IoC),依赖注入(DI)、AOP、事务什么……对新手来说,这些是什么鬼呢?

控制反转

我不写定义,就说一下你的电脑。你的电脑上有usb口吧,有hdmi口吧。电脑上用什么键盘,不取决于电脑本身,而是插在usb上的键盘是什么?这个能理解吧。你看控制电脑用什么输入的设备并不是由电脑控制的,而是你插入的键盘是什么来控制的。这个控制不就反了吗?

依赖注入

就是控制反转。电脑的输入设备依赖它被插入的是什么键盘。插入机械键盘,输入设备就是机械键盘,插入数字键盘就只能输入数字。从插键盘这个事来说:无非是从电脑角度看,是依赖注入,输入设备是什么依赖注入的键盘是什么;从键盘角度看是控制反转,插入的键盘来控制电脑是什么输入设备。

为什么要用依赖注入?目的就是可以灵活搭配。如果你的电脑上的键盘是焊死在电脑上的,键盘坏了,你的电脑也废了。你肯定不想这样吧。

Java开发中,我们需要创建大量的对象,有些重要的对象牵一发而动全身,这样的对象我们可以交给Spring帮我们来创建,我们只需要提供配置文件,这个配置文件可以是xml,也可以是java本身。好比Spring是个工厂,按图纸就可以做出产品。

AOP

什么是切面?你可以这样想:一个公司有多个销售部,都需要行政帮忙搞定日常的订文具、机票、办公室、出差酒店什么的,都需要财务搞定报销、收付款什么的事务吧,要仓库帮忙发货什么的。不可能每个销售部都去招几个行政、财务和仓管什么吧,销售部门只要做好业务就行了,订文具什么的事情交个专门的部门去办就行。

在Spring AOP 中,把这些公共的事务,也就是这个例子中的行政啊、财务啊、仓管啊,看成一个个切面,让你的开发的时候,专注于核心业务。

事务

说个例子:比如我支付宝转给你100块钱,正常操作应该是我的账号里少了100,你的多了100。如果由于各种原因,我少100后,系统出问题了。没有事务的话,你的账号不会多100,而我的账号少了100。这个就是有问题了。有事务的话:要不我少100你多100都成功,要不就都不成功,这样钱才不会少。而手写一个事务还是有点小难度的,Spring的事务(spring-tx)可以帮我们轻松实现。

Spring MVC

这个的话,你要先理解一下MVC是什么?

C - Controller:控制器。接受用户请求,调用 Model 处理,然后选择合适的View给客户。

M - Model:模型。业务处理模型,接受Controller的调遣,处理业务,处理数据。

V - View:视图。返回给客户看的结果。注意这里的客户未必是人,可能是浏览器,可能是APP。

这样想必你不明白,举例:你去饭店吃饭,坐下来后,服务员小妹来找你点菜。你点了个宫保鸡丁,小妹就拿着你的点菜单都后厨。后厨的师傅打开食物储藏柜,找到鸡丁,开炉子,放油,一顿爆炒,装盘。小妹端起盘子回到你的桌子。当然,如果小妹觉得你帅,说不定还会偷偷加个鸡腿给你;如果你碰巧是当年甩了小妹的前男友,说不定小妹会吐口口水在里面。

这里,你就是客户,你点菜就是发出请求(Request),小妹就是Controller,后厨就是 Model,小妹最后给的盘子及里面的内容就是View,小妹给你盘子就是响应(Respond)。Controller处理客户请求,反馈给Model。Model处理,返回数据(宫保鸡丁)给Controller(小妹)。小妹可以直接给你,也可以给你加鸡腿或吐口水后给你。最终,你得到了一盘吃的(View)。

Spring MVC就是个MVC框架,和Spring天生就集成。

MyBatis

一个帮你和数据库打交道的框架。帮你把数据库的表翻译成类,字段翻译成类的字段,记录翻译成对象。(当然这些全要靠你自己定义。)

这样做的后果就是,你可以像写java一样操作数据库了。什么打开JDBC,防止sql注入,不用考虑,MyBatis帮你搞定。

Spring中,通过简单的设置就可以集成MyBatis这个框架,所以会有SSM框架的说法。

 

如果我们把 SSM + 另外一些功能的框架看成一台台式电脑,主机上插了键盘、鼠标、显示器、优盘、音响……那么 Spring 框架好像是电脑的主机,Spring MVC类似于显示器(Web交互很漂亮,对不对),MyBatis好比是个硬盘(移动硬盘、优盘),其他的功能框架如安全框架 Shiro 好比是个指纹登录器。这些东西是不是都是插主机上的?

 

三层架构

三层架构师指:视图层view,服务层service,持久层Dao,它们的功能是:

1.view层:用来接收用户请求的代码,比如请求如何分发;

2.service层:系统的业务逻辑主要写在这里,比如借书系统会有借书的业务;

3.Dao层:直接操作数据库的代码,之所以分Dao层,主要是可能相同的sql语句可能使用在比较多的地方,改动的时候可以理解为只改动一处即可。

为了降低耦合度,在这里,使用面向抽象编程,也就是上层对下层的调用,直接通过接口来完成,下层对上层的真正服务提供者,是下层实现的接口实现类,实现类是可以更换的,这就实现了层间的解耦合。

技术分享图片

MVC与三层架构的区别

MVC架构里面的Controller以及View层合并在一起就是三层架构的View层,而MVC的Model层就包含了三层架构的Service层以及Dao层。

Java开发中常见包名的意义

Java:

  bean 实体类,对应数据库中的表,构造方法,属性,getter setter,toString()
  dao 持久层 数据库增删改查
  service 业务层
  controller 控制层 跳转哪里

resources:

  mapper dao实现类
  applicationContext.xml Spring的配置文档
  db.properties 数据库连接信息
  log4j.properties 日志配置文件
  springmvc.xml 配置springmvc

webapp:

  jsp等页面
  web-inf
  web.xml 加载过滤器 拦截器

 

 

 

 

MVC模式,SSM框架,三层架构,Java开发中常见包名的意义

原文:https://www.cnblogs.com/SallyShan/p/12667057.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!