SpringMVC

ssm:mybatis+Spring+SpringMVC

javaSE javaweb 框架

理解的DAO层和Service层

先简单来讲下Dao层,和Service层的概念:

Service是业务层,Dao是数据访问层,这样的分层是基于MVC架构来说的。

Dao层:全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表、某个实体的增删改查

Service层:被称为服务,肯定是相比之下比较高层次的一层结构,相当于将几种操作封装起来。

具体起来,Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求;
而Service,则是专注业务逻辑,对于其中需要的数据库操作,都通过Dao去实现。
简单来说就是Dao层是底层,具体到某一张表的增删查改,可以理解为有多少张表就有多少个Dao层,而Service成可以理解为是Dao层的 “上司”,通过Service层来控制Dao层。 一个Service层控制一个或者多个Dao层。 举个栗子:Service层好比是老大,手下跟着一大帮小弟 (Dao层), 老大不用亲自出马,有事情吩咐小弟去干就行,老大只管下命令,小弟只管做事跑腿。
而为什么我们要通过Service层去调用Dao层,这样做的最大好处就是: 解耦。 说的通俗点就是降低代码之间的耦合,尽量让代码之间不要有太大的联系。 好比主板上内存坏了,我换内存就行,没必要连主板一起换。我不用知道内存是哪家生产,不用知道多大容量,只要是内存就都可以插上这个接口使用。
这样当某部分代码出错或者需要修改时,其他代码就不需要修改或者变更,好处就在这里。 而 Dao 层,只负责接收最终的 sql 语句,具体到某一张表的增删查改。 再用上面的老大和小弟的例子,小弟 (Dao层) 脑子一般不太灵光,不具备什么决策能力。能当上老大脑瓜都比较好使,命令由老大去下达,累活脏活交给小弟去干 (增删查改),底下一大帮子小弟听老大指挥,老大叫谁干什么就干什么。最后完成老大布置的任务。 Service层也不是就非有不可,对于极小的项目而言,加了Service层,反而增加了代码量,而且Dao层中已经预见了可能出现的情况,并进行了相应的扩展。那么,此时就不需要了。 虽然小弟脑子可能不太好使,但是有些事,你没脑子都能完成啊,这时就不需要老大出马了,不然一点屁大点的事都要麻烦老大,老大也太掉价了吧。 但是存在即合理,存在Service层肯定有其原因,通过Service层去调用Dao层,不仅可以解耦合,而且可以增加代码的拓展性。

MVC:模型(model)(dao,service) 视图(view)(jsp) 控制器(controll)(servlet)

一种软件设计规范

  • 是将业务逻辑、数据、显示分离的方法来组织代码
  • MVC主要作用是降低了视图与业务逻辑间的双向耦合
  • MVC不是一种设计模式,MVC是一种架构模式

MVVM

前端 数据传输 实体类

最经典的MVC就是JSP+servlet+javabean模式

Alibaba早期提出

去IOE(IOE架构就是使用IBM的小型机、Oracle数据库、EMC存储设备)

IBM代表硬件以及整体解决方案服务商,Oracle代表数据库,EMC代表数据存储。

All in One---->微服务(所有的项目都是由一个小项目逐渐演变过来的)

Controller:控制器

  • 取得表单数据
  • 调用业务逻辑
  • 转向指定页面

Model:模型

  • 业务逻辑
  • 保存数据状态

view:视图

  • 显示

MVC框架要做的事情

  • 将url映射到java类或Java类的方法
  • 封装用户提交的数据
  • 处理请求--调用相关的业务处理--=封装响应数据
  • 将响应的数据进行渲染.jsp/html等表示层数据

常见的MVC框架:Struts,SpringMVC,ASP.NET MVC、Zend Framework、JSF;

常见的前端MVC框架:vue、angularjs、react、backbone;

由MVC演化的另一些模式:MVP、MVVM等;

SpringMVC前置复习以及扩展的更多相关文章

  1. 提高生产力:SpringMVC中,使用扩展数据类型TypedMap接收Web请求参数

    在Web项目中,如果前端MVC框架使用的是SpringMVC,可以使用Map接收前端请求参数,比bean要方便很多. 尤其是SpringMVC和Mybatis一起用的时候,用Map大大减少了需要的be ...

  2. SpringBoot日记——SpringMvc自动配置与扩展篇

    为了让SpringBoot保持对SpringMVC的全面支持和扩展,而且还要维持SpringBoot不写xml配置的优势,我们需要添加一些简单的配置类即可实现: 通常我们使用的最多的注解是: @Bea ...

  3. SpringMVC前置控制器SimpleUrlHandlerMapping配置

    1. <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5&qu ...

  4. springMVC知识点复习

    @ResponseBody和@RequestBody的使用 <html> <script type="text/javascript" src="rel ...

  5. SpringMVC学习记录5

    Springmvc流程中的扩展点有很多,可以在很多地方插入自己的代码逻辑达到控制流程的目的. 如果要对Controller的handler方法做统一的处理.我想应该会有很多选择,比如:@ModelAt ...

  6. spring+mybatis+springmvc的配置

    1.web.xml的配置 <?xml version="1.0" encoding="UTF-8"?><web-app version=&qu ...

  7. SpringMVC源码剖析(一)- 从抽象和接口说起

    SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的开发者们就算没使用过SpringMVC,也应该对其略有耳闻.我试图通过对SpringMVC的设计思想和 ...

  8. SpringMvc环境搭建(配置文件)

    在上面的随笔里已经把搭建springmvc环境的基本需要的包都下下来了,拉下来就是写配置文件了. 下面左图是总的结构,右图是增加包 一.最开始当然是web.xml文件了,这是一个总的宏观配置 < ...

  9. 调用链系列二、Zipkin 和 Brave 实现(springmvc、RestTemplate)服务调用跟踪

    Brave介绍 1.Brave简介 Brave 是用来装备 Java 程序的类库,提供了面向标准Servlet.Spring MVC.Http Client.JAX RS.Jersey.Resteas ...

随机推荐

  1. Nodejs实现图片的上传、压缩预览、定时删除

    前言 我们程序员日常都会用到图片压缩,面对这么常用的功能,肯定要尝试实现一番.第一步,node基本配置 这里我们用到的是koa框架,它可是继express框架之后又一个更富有表现力.更健壮的web框架 ...

  2. Moriis神级遍历!

    Moriis 遍历 Morris 遍历是二叉树遍历的一种方式,传统的递归和非递归遍历的时间复杂的都是O(N),空间复杂度都是O(h)(h为树的高度),而 Morris 遍历可以做到时间复杂的依然为 O ...

  3. python报错合集

    哈喽,大家好呀 我又来啦,今天让我们来看看python中有哪些常见的异常报错吧 说到python中的报错,我们总是脑壳疼现在我们要学会去认识报错的类型 这样子,在我们出现报错的时候就可以知道报错的原因 ...

  4. 【RocketMQ】消息的存储

    Broker对消息的处理 BrokerController初始化的过程中,调用registerProcessor方法注册了处理器,在注册处理器的代码中可以看到创建了处理消息发送的处理器对象SendMe ...

  5. 用 40 块搞个游戏机「GitHub 热点速览 v.22.27」

    作者:HelloGitHub-小鱼干 最便宜的小霸王游戏机都超过了五十,但是现在有了 PicoBoot 你用 40 块的树莓派就能搞出个任天堂游戏机(NGC).PicoBoot 替换了 NGC 的 I ...

  6. .NET ORM框架HiSql实战-第三章-使用自定义编号生成【申请编号】

    一.引言 上一篇.NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查) 中菜单编号采用的是雪花ID,生成的编号无法自定义.比如本系统的一个申请业务,需要按前缀+日期+流水号 ...

  7. pip安装报错Could not install packages due to an EnvironmentError: Missing dependencies for SOCK

    unset all_proxy && unset ALL_PROXY

  8. 免费SSL证书申请及部署实践

    网络上关于如何签发免费SSL证书的博文一大片,但是真正操作起来的能让新手不迷惑的却很少,很多操作步骤受限于国内无法访问外网的阻碍,导致无法真正实施成功. 实际上,关于申请免费SSL证书主要涉及两大部分 ...

  9. 005_面试题 Java_传递方式

    面试题: 问:java是值传递还是引用传递? 答:java只有值传递,基本类型传递的是具体的数,引用类型传递的是具体的地址

  10. Python动态属性有什么用

    Python 动态属性的概念可能会被面试问到,在项目当中也非常实用,但是在一般的编程教程中不会提到,可以进修一下. 先看一个简单的例子.创建一个 Student 类,我希望通过实例来获取每个学生的一些 ...