zoukankan      html  css  js  c++  java
  • MVC模式,SSM框架,三层架构,Java开发中常见包名的意义

    什么是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 加载过滤器 拦截器

     

  • 相关阅读:
    九度OJ 1010 A+B
    九度OJ 1052 找x
    oracle数据库创建备份与恢复 脚本
    在select标签中添加a标签
    如何在select标签中使用a标签跳转页面
    网站访问不了
    js实现input的赋值
    PHP如何实现百万级数据导出
    互联网产品需求管理杂思2需求收集,互联网营销 狼人:
    做网站用UTF8还是GB2312?,互联网营销 狼人:
  • 原文地址:https://www.cnblogs.com/SallyShan/p/12667057.html
Copyright © 2011-2022 走看看