当前位置: 首页 > 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进行渲染将处理结果通过页面展示给用户。

http://www.lryc.cn/news/389315.html

相关文章:

  • 深入解析scikit-learn中的交叉验证方法
  • 分布式kettle调度管理平台简介
  • 002-基于Sklearn的机器学习入门:基本概念
  • ubuntu 默认的PATH配置
  • JAVA妇产科专科电子病历系统源码,前端框架:Vue,ElementUI
  • 代码随想录算法训练营Day56|所有可达路径、797.所有可能的路径
  • DNF手游鬼剑士攻略:全面解析流光星陨刀的获取与升级!云手机强力辅助!
  • npm创建一个空的vue3项目的方法或者pnpm创建vue3项目
  • LSH算法:高效相似性搜索的原理与Python实现I
  • cesium 添加 Echarts图层(人口迁徒图)
  • Windows下快速安装Open3D-0.18.0(python版本)详细教程
  • 无法下载 https://mirrors./ubuntu/dists/bionic/main/binary-arm64/Packages
  • 最新CRMEB商城多商户java版源码v1.6版本+前端uniapp
  • 【开发环境】MacBook M2安装git并拉取gitlab项目,解决gitlab出现Access Token使用无效的方法
  • Flask-Session使用Redis
  • Redis缓存管理机制
  • 初学嵌入式是弄linux还是单片机?
  • 【基础算法总结】分治—快排
  • [C++]——同步异步日志系统(1)
  • python 第6册 辅助excel 002 批量创建非空白的 Excel 文件
  • 力扣61. 旋转链表(java)
  • 智慧园区综合平台解决方案PPT(75页)
  • Python只读取Excel文件的一部分数据,比如特定范围的行和列?
  • 快速入门FreeRTOS心得(正点原子学习版)
  • 【博主推荐】HTML5实现简洁好看的个人简历网页模板源码
  • Android应用安装过程
  • Word中输入文字时,后面的文字消失
  • 【LeetCode】合并两个有序链表
  • 分子AI预测赛Task1笔记
  • ubuntu 安装并启用 samba