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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/762888.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

依托天拓四方工业智能网关实现CNC数控机床的远程运维

随着工业4.0时代的到来,智能制造和工业互联网成为了推动制造业转型升级的重要力量。CNC数控机床作为制造业的核心设备,其运行效率与稳定性直接关系到企业的生产效益。因此,实现CNC数控机床的远程运维,对于提升企业竞争力、降低运营…

使用systemd管理Linux下的frps服务:安装、配置及自动化操作指南

在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。以下是具体的操作步骤: 1. 安装 systemd 如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum(适用于 Cent…

K8S学习教程(一):使用PetaExpress云服务器安装Minikube 集群题

什么是Minikube Minikube是一款工具,主要用于在本地运行 Kubernetes 集群。Kubernetes 开源的平台,用于自动化容器化应用的部署、扩展和管理,而Minikube 使得开发人员能够在本地机器上轻松创建一个单节点的 Kubernetes 集群,从而…

从新手到高手:Scala函数式编程完全指南,Scala 数据类型(4)

1、Scala 数据类型 Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型:

JMH319【亲测整理】2017剑侠情缘2剑网2汉化版+网游VM单机版+修复纹饰翅膀+内置GM命令无限道具+一键端视频安装教学

资源介绍: 这一套新端早就在手上 一直没分享出来 既然大家放出来了 我也就发出来大家研究吧 目前在改另外一套 是否需要虚拟机:是 文件大小:压缩包约7G 支持系统:win7、win10、win11 硬件需求:运行内存12G …

如何在OpenEuler 上快速部署一套Zabbix7.0监控系统

如何在OpenEuler 上快速部署一套Zabbix监控系统 一、环境信息 用途机器IP操作系统备注zabbix-server172.22.33.180openeuler 22.03 LTS SP37.0 LTS 版本,容器部署zabbix-agent172.16.10.182openeuler 22.03 LTS SP37.0 源码编译部署 二、Docker 部署 2.1 二进制…

七月论文审稿GPT第5版:拿我司七月的早期paper-7方面review数据集微调LLama 3

前言 llama 3出来后,为了通过paper-review的数据集微调3,有以下各种方式 不用任何框架 工具 技术,直接微调原生的llama 3,毕竟也有8k长度了 效果不期望有多高,纯作为baseline通过PI,把llama 3的8K长度扩展…

生产环境部署与协同开发-Docker(原创超全)

关闭防火墙 systemctl stop firewalld.service 关闭SELinux vim /etc/selinux/config 查看yum支持的包并安装docker引擎 yum listyum install -y docker 启动docker设置docker自启动测试docker是否安装成功? systemctl start dockersystemctl enable dockerdoc…

把图片的透明部分去掉

问题: canvas裁剪的图把整个画布都剪下来了,但只要有元素的部分 // 图像处理// 把图片的透明部分去掉 export function getImagesRealSize(dataUrl) {return new Promise((resolve, reject) > {// 将Base64解码为二进制数据let binaryString atob(…

【启明智显活动分享】 启明与你,上海慕尼黑电子展不见不散!

启明与你,上海慕尼黑电子展不见不散!🎉 🔍 展会现场,你将亲眼目睹RTOS、LINUX、Android全系列方案及产品的精彩展示。从经典到前沿,一站式满足你的技术探索需求。 💡 更值得期待的是&#xff0…

微信小程序毕业设计-英语互助系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

硬件实用技巧:cadence Aleego创建焊盘过程

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140110911 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

windows USB 设备驱动开发-Host端和Device端

Windows 中的 USB 宿主端驱动程序 下图显示了适用于 Windows 的 USB 驱动程序堆栈的体系结构框图。 此图显示了适用于 USB 2.0 和 USB 3.0 的单独 USB 驱动程序堆栈。 当设备连接到 xHCI 控制器时,Windows 加载 USB 3.0 驱动程序堆栈。 Windows 为连接到 EHCI、OHC…

Windows/Linux/Mac 系统局域网服务发现协议及传输速度比较

简介 分析 / 验证对比常见局域网服务发现协议在 Windows/Linux/Mac 等不同系统下的支持和表现 在使用不同系统的智能硬件时,如常见的树莓派 / Openwrt 路由器 / Debian/Fedora/Windows/Mac 等系统是,系统间相互发现以及网络共享本应是系统的基础服务&a…

【RT摩拳擦掌】基于RT106L/S语音识别的百度云控制系统

【RT摩拳擦掌】基于RT106L/S语音识别的百度云控制系统 一 文档简介二 平台构建2.1 使用平台2.2 百度智能云2.2.1 物联网核心套件2.2.2 在线语音合成 2.3 playback语音数据准备与烧录2.4 开机语音准备与添加2.5 唤醒词识别词命令准备与添加 三 代码准备3.1 sln-local/2-iot 代码…

黑马点评下订单-小程序下单没问题但是Postman发送请求失败了,返回401

经过多方探索,这个✓8错误就是由于黑马点评使用了拦截器,我们直接发送请求是会被拦截器拦截下来的,我给出的解决方案是通过配置Postman解决,方法很简单! 解决方案 右边的value写上Redis里面登录所用token值就可以了…

【TB作品】打地鼠游戏,ATMEGA16单片机,Proteus仿真 打地鼠游戏

11个按键LCD1602显示器9个灯蜂鸣器打地鼠小游戏就是九个灯泡,对应九个按键,灯泡有红黄蓝,每间隔一会儿就会亮一个灯,代表地鼠冒出来,按一下按键让灯泡灭掉代表打地鼠,红的三分,黄的两分&#xf…

开发自动发送国际短信的工具需要用到哪些源代码?

在当今数字化、全球化的时代,国际短信作为一种高效、便捷的沟通方式,在各个领域发挥着越来越重要的作用。 开发一款能够自动发送国际短信的工具,不仅能够帮助企业实现精准营销、客户服务,还能为个人提供便捷的跨国交流方式。 本…

手把手教你搭建PyTorch环境:MindStudio中PyTorch模型开发实战

本次实验的视频链接如下:​https://www.bilibili.com/video/BV1iA4y1f7o1/ 本次实验在MindStudio上进行,请先按照 教程 配置环境,安装MindStudio。 ​ MindStudio的是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台,该IDE上功能很多…

Leetcode.1735 生成乘积数组的方案数

题目链接 Leetcode.1735 生成乘积数组的方案数 rating : 2500 题目描述 给你一个二维整数数组 q u e r i e s queries queries ,其中 q u e r i e s [ i ] [ n i , k i ] queries[i] [n_i, k_i] queries[i][ni​,ki​] 。第 i i i 个查询 q u e r i e s [ i …