当前位置: 首页 > news >正文

001 SpringMVC介绍

文章目录

  • 基础概念介绍
    • BS和CS开发架构
    • 应用系统三层架构
    • MVC设计模式
  • SpringMVC介绍
    • SpringMVC是什么
    • SpringMVC与Spring的联系
    • 为什么要学习SpringMVC
  • 六大组件介绍
    • 六大组件(MVC组件其他三大组件)说明

基础概念介绍

BS和CS开发架构

  • 一种是C/S架构,也就是客户端/服务器
  • 一种是B/S架构,也就是浏览器/服务器

说明:
我们现在使用Java开发的大多数都是web应用,这些应用几乎全都是基于 B/S 架构进行开发的。
那么在 B/S 架构中,应用系统标准的三层架构分为:表现层、业务层、持久层。这种三层架构在
我们的实际开发中使用的非常多。

JavaEE制定了一套规范,去进行BS结构的处理。这套规范就是Servlet。

应用系统三层架构

表现层:

  • 也就是我们常说的web 层。
  • 它负责接收客户端请求,向客户端响应结果,通常客户端使用http 协议请求web 层,web 层
    需要接收 http 请求,完成 http 响应。
  • 表现层包括展示层和控制层:控制层负责接收请求,展示层负责结果的展示。
  • 表现层依赖业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应
    给客户端。
  • 表现层的设计一般都使用 MVC 模型。(MVC 是表现层的设计模型,和其他层没有关系)

业务层:

  • 也就是我们常说的 service 层。
  • 它负责业务逻辑处理,和我们开发项目的需求息息相关。web 层依赖业务层,但是业务层不
    依赖 web 层。
  • 业务层在业务处理时可能会依赖持久层,如果要对数据持久化需要保证事务一致性。(也就
    是我们说的, 事务应该放到业务层来控制)

持久层:

  • 也就是我们是常说的 dao 层。
  • 负责数据持久化,包括数据层即数据库和数据访问层,数据库是对数据进行持久化的载体,
    数据访问层是业务层和持久层交互的接口,业务层需要通过数据访问层将数据持久化到数据
    库中。
  • 通俗的讲,持久层就是和数据库交互,对数据库表进行曾删改查的。

MVC设计模式

MVC 是模型(model)-视图(view)-控制器(controller)的缩写, 是一种用于设计编写 Web 应用程序
表现层的模式。

MVC 设计模式的三大角色:

  • Model(模型):
    模型包含业务模型和数据模型,数据模型用于封装数据,业务模型用于处理业务。
  • View(视图):
    通常指的就是我们的 jsp 或者 html。作用一般就是展示数据的。
    通常视图是依据数据模型创建的。
  • Controller(控制器):
    是应用程序中处理用户交互的部分。作用一般就是处理程序逻辑的。

SpringMVC介绍

SpringMVC是什么

  • SpringMVC 是一种基于MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于
    SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面。Spring 框架提供了构建
    Web 应用程序的全功能 MVC 模块。
  • 使用 Spring 可插入的 MVC 架构,从而在使用 Spring 进行 WEB 开发时,可以选择使用 Spring 的
    Spring MVC 框架或集成其他 MVC 开发框架,如 Struts1(现在一般不用),Struts2 等。
  • SpringMVC 已经成为目前最主流的 MVC 框架之一,并且随着 Spring3.0 的发布,全面超越
    Struts2,成为最优秀的 MVC 框架。
  • 它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还
    支持RESTful 编程风格的请求。

SpringMVC与Spring的联系

Spring MVC 全名叫 Spring Web MVC ,它是 Spring家族Web模块 的一个重要成员。这一点,我们可以
从 Spring 的整体结构中看得出来:
springmvc

为什么要学习SpringMVC

也许你要问,为什么要学习Spring MVC呢?Struts2不才是主流吗?看SSH的概念有多火?
其实很多初学者混淆了一个概念,SSH实际上指的是 Struts1.x+Spring+Hibernate 。这个概念已经
有十几年的历史了。在Struts1.x时代,它是当之无愧的霸主,但是在新的MVC框架涌现的时代,形式已经不是这样了,Struts2.x借助了Struts1.x的好名声,让国内开发人员认为Struts2.x是霸主继任者(其实两者在技术上无任何关系),导致国内程序员大多数学习基于Struts2.x的框架,又一个貌似很火的概念出来了S2SH( Struts2+Spring+Hibernate )整合开发。
SpringMVC的市场占有率较高,这说明了学习SpringMVC的必要性
了,再说了,SpringMVC本身就是spring家族的一员,整合spring时,SpringMVC根本无需中间整合包,而struts2得需要。

六大组件介绍

六大组件

六大组件(MVC组件其他三大组件)说明

  1. 在 springmvc 的各个组件中,前端控制器、处理器、视图称为 springmvc 的MVC组件
  2. 在 springmvc 的各个组件中,处理器映射器、处理器适配器、视图解析器称为 springmvc
    的三大组件
  3. 需要开发的组件有:处理器、视图
  • DispatcherServlet:前端控制器

用户请求到达前端控制器,它就相当于mvc模式中的C,dispatcherServlet是整个流程控制的中心,
由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

  • Handler:处理器

Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下
Handler对具体的用户请求进行处理。
由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。

  • View:视图

springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、
pdfView等。我们最常用的视图就是jsp。
一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务
需求开发具体的页面。

  • HandlerMapping:处理器映射器

HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不
同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

  • HandlAdapter:处理器适配器

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的
处理器进行执行。

  • View Resolver:视图解析器

View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视
图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

相关文章:

  • Go语言标准库之log和三方库zap
  • 【基础篇】第5章 Elasticsearch 数据聚合与分析
  • 六西格玛绿带培训如何告别“走过场”?落地生根
  • ‘艾’公益——微笑行动「广安站」为艾祝福,让笑起舞
  • 华为OD面试分享18
  • 【C++航海王:追寻罗杰的编程之路】关联式容器的底层结构——AVL树
  • 机器学习(三)
  • 泛微E9开发 根据故障来源新增明细行,并且初始化错误类型
  • Java 线程池之SingleThreadExecutor
  • 滤波算法学习笔记
  • 深入理解【 String类】
  • 计算机网络 —— 路由协议:RIP、OSPF、BGP、MPLS
  • 【基础算法总结】分治—快排
  • 《数据仓库与数据挖掘》 总复习
  • 小试牛刀-Solana合约账户详解
  • [deviceone开发]-do_Webview的基本示例
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 「面试题」如何实现一个圣杯布局?
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Angular数据绑定机制
  • C语言笔记(第一章:C语言编程)
  • django开发-定时任务的使用
  • JavaScript的使用你知道几种?(上)
  • JS变量作用域
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux下的乱码问题
  • magento2项目上线注意事项
  • Median of Two Sorted Arrays
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • opencv python Meanshift 和 Camshift
  • ubuntu 下nginx安装 并支持https协议
  • XForms - 更强大的Form
  • 读懂package.json -- 依赖管理
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 技术胖1-4季视频复习— (看视频笔记)
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 树莓派 - 使用须知
  • 正则学习笔记
  • scrapy中间件源码分析及常用中间件大全
  • 大数据全解:定义、价值及挑战
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • !!Dom4j 学习笔记
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #职场发展#其他
  • (30)数组元素和与数字和的绝对差
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)fiber的基本认识
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (四)Controller接口控制器详解(三)
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)