Spring MVC—Spring MVC概述

news2025/1/22 15:50:28

文章目录

  • Java web的发展历史
    • 一.Model I和Model II
      • 1.Model I开发模式
      • 2.Model II开发模式
    • 二. MVC模式
  • SpringMVC 的工作原理和流程
  • springmvc 的拦截器
  • Spring和SpringMVC的区别

————————————————————————————————

Java web的发展历史

一.Model I和Model II

1.Model I开发模式

Model1的开发模式是:JSP+JavaBean的模式,它的核心是JSP页面,在这个页面中,Jsp页面负责整合页面和JavaBean(业务逻辑),而且渲染页面,它的基本流程如下:
在这里插入图片描述
这样的设计模式到这一个jsp页面负责了视图的展示和业务流程的控制高度耦合的结果是Jsp代码十分复杂,后期维护困难!

2.Model II开发模式

在Model II的模式下。利用jsp页面、servlet和JavaBean组件分工协作共同完成系统的所有任务。其中jsp负责数据显示逻辑任务,servlet负责程序的流程控制任务,JavaBean负责处理业务逻辑任务。它的基本流程如下:
在这里插入图片描述

Model2:相对于Model1来说,职责分工更为明确,在Model1的基础上,抽取了Servlet层,体现了一个分层的思想,适合大型的项目开发!(当时的评判标准是适合大型项目开发的,现在看起来已经过时了!

二. MVC模式

Spring mvc是基于Spring的一个模块,专门做web开发,可以理解为是Servlet的升级
在Spring MVC框架当中,Controller替代Servlet担负控制器的职能,
M:指model:模型层, 指工程当中的Java Bean,作用是处理数据
Java Bean分两类:
一类是实体类Bean:专门存储业务数据的
一类为业务处理Bean:指Servlet或Dao对象,专门处理业务逻辑和数据
V:View,视图层, 指项目当中的html或jsp等页面,作用是与用户进程交互,展示数据
C:Contoller,控制层, 指工程当中的servlet,作用是接受请求和响应数据
MVC思想不是那个语言所特有的设计模式,也不是web应用所特有的思想,而是一种规范。
MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器), 这三个部分以最少的耦合协同工作,从而提高了应用的可扩展性和可维护性。

SpringMVC 的工作原理和流程

浏览器的请求首先会经过 SpringMVC 里面的核心控制器 DispatcherServlet,它负责对请求进行分发到对应的 Controller。

Controller 里面处理完业务逻辑之后,返回 ModeAndView 对象 。然后 DispatcherServlet 寻找一个或者多个 ViewResolver 视图解析器,找到ModeAndView 指定的视图,并把数据显示到客户端

Spring MVC的入口函数也就是前端控制器 Dispatcherservlet的作用是接收请求,响应结果。

流程说明:

  1. 客户端(浏览器)发送请求,直接请求到Dispatcherservlet。

  2. Dispatcherservlet根据请求信息调用HandlerMapping,解析请求对应的 Handler。

  3. 解析到对应的Handler(也就是我们平常说的contro11er控制器)后,开始由HandlerAdapter适配器处理。

  4. HandlerAdapter会根据Handler来调用真正的处理器开处理请求,并处理相应的业务逻辑。

  5. 处理器处理完业务后,会返回一个(Mode1Andview对象,Mode1是返回的数据对象,view是个逻辑上的view 。

  6. viewResolver会根据逻辑view查找实际的view 。

  7. Dispaterservlet把返回的Model传给view(视图渲染)。

  8. 把view返回给请求者(浏览器)

springmvc 的拦截器

Spring的处理程序映射机制包括处理程序拦截器,当你希望将特定功能应用于某些请求时,例如,检查用户主题时,这些拦截器非常有用。拦截器必须实现org.springframework.web.servlet包的
HandlerInterceptor。此接口定义了三种方法:

  1. preHandle:在执行实际处理程序之前调用。
  2. postHandle:在执行完实际程序之后调用。
  3. afterCompletion:在完成请求后调用。

Spring和SpringMVC的区别

首先 springmvc和spring它俩都是容器,都是管理bean对象的地方,springmvc就是管理controller对象的容器,spring就是管理service和dao的容器。所以我们在springmvc的配置文件里配置的扫描路径就是controller的路径,而spring的配置文件里自然配的就是service和dao的路径。

其次, spring容器和springmvc容器的关系是父子容器的关系。spring容器是父容器,springmvc是子容器。在子容器里可以访问父容器里的对象,但是在父容器里不可以访问子容器的对象,说的通俗点就是,在controller里可以访问service对象,但是在service里不可以访问controller对象。Spring为简化我们的开发工作,封装了一系列的开箱即用的组件功能模块,包括:

Spring JDBC 、Spring MVC 、Spring Security所以这么看的话,所有的bean,都是被spring或者springmvc容器管理的,他们可以直接注入。然后springMVC的拦截器也是springmvc容器管理的,所以在springmvc的拦截器里,可以直接注入bean对象。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VS Code debug调试时无法查看变量内容【已解决】

问题场景:新换成的vscode编译软件,但是在debug调试时发现与QtCreator不同,无法直接查看变量,显示的都是地址或其他。 比如:QString或QStringList无法查看具体的内容,正常是这样显示的,反正我不…

Linux神器——vim

目录 一、vim基本概念 二、vim基本操作 三、vim正常模式命令集 四、vim末行模式命令集 五、vim操作总结 六、vim界面配置 vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而…

上班15年后,普通程序员能实现财富自由吗?

对于职业生涯还没有开挂的普通程序员来说,有可能实现财务自由吗? 先来说下财务自由的最低标准 北上广深:身价3000万,含房产1000万、现金2000万。 杭州、南京、成都等二线城市:身价1500万,含500万房产、现…

集成底座双K8S集群扩展升级方案

集成底座方案是应用于企业信息化建设的集成整合阶段,通过建立统一、标准、柔性、可复用、可扩展的IT架构,解决企业信息化建设过程中缺乏整体规划、集成整合难度大、安全管控不到位等问题,强化企业信息化的架构建设、集成整合、数据治理、安全…

某鱼兼职并不是那么好做,钱也不是漫天要价

文章目录一、背景二、雇主的期望2.1、jinja2代码三、题主的期望3.1、删除功能3.2、前端体现3.3、留言列表实现降序3.4、效果显示四、总结一、背景 上周某鱼推送过来的单子多到题主应接不暇,不得已拒绝了几单,但是接下来的单子呢又不那么顺利,…

提速3.7倍!何恺明团队再发新作,更快更高效的FLIP模型:通过Masking扩展语言-图像预训练(附论文原文下载)

原创/文 BFT机器人 研究论文地址:https://arxiv.org/abs/2212.00794 计算机视觉和深度学习领域大神何恺明携团队再发新作!论文围绕近来火热的CLIP(Contrastive Language-Image Pre-Training)模型展开研究,并提出了一种…

Python怎么进行时区的转换

pytz 是一个用于处理时区的 Python 库,它为 Python 提供了对时区的支持。 它提供了大量的时区信息,包括时区名称、偏移量、是否使用夏令时等。你可以使用 pytz 库来处理本地时间、UTC 时间和其他时区之间的转换。 它提供了许多函数来帮助你处理时区相关的信息。 …

C++之多态(中篇)(最全总结)

这里接上面C之多态(上篇) 本篇目录4.多态的原理4.2 多态的原理4.3 C 11 override和final4.4 重载、重写(覆盖)、隐藏(重定义)的对比 (函数之间的关系)5.抽象类5.1概念5.2接口继承和实…

三、基于kubeadm安装kubernetes1.25集群第二篇

在上一篇中我们已经安装kubernetes要求做了服务器初始化,看这篇之前,建议先看下上篇:https://blog.csdn.net/u011837804/article/details/128350651 那我们正式开始kubernetes1.26集群安装 1、每台机器安装docker20.10.22 docker的安装细节…

数据结构训练营4

开启蓝桥杯备战计划,每日练习算法一题!!坚持下去,想必下一年的蓝桥杯将会有你!!笔者是在力扣上面进行的刷题!!由于是第一次刷题!找到的题目也不咋样!所以&…

itop-imx8m开发板gstreamer日志级别设置

gst 的日志等级分为 none(0)error(1) warning(2) info(3) debug(4) log(5)。默认 gst 的日志等级为 1,即 error 打印,出错时会打印。 1)全局日志级别设置 如果需要更高级别打印,修改环境变量 GST_DEBUG 即可。如需要 warning 级别…

基于python的transform行人车辆识别

Transformer是一种神经网络体系结构,由于它能够有效地处理顺序数据中的长期依赖性,因此在自然语言处理(NLP)任务中受到欢迎。它还被应用于各种其他任务,包括图像分类、对象检测和语音识别。 在车辆和行人识别方面,transformer可用…

浅谈安科瑞电能预付费系统在大电力客户中的设计及应用分析

摘 要 随着我国供电企业的不断发展,而用电模式也在不断改革,预付费技术在气、电等部门得到普遍的使用,本文主要针对预付费系统在大电力客户中的使用情况进行分析,提高用电用户的缴费率,有效的避免了客户恶意偷窃电行…

【小5聊】Winform从指定服务器下载文件的方式

在一些实际项目中,我们往往需要上传一些excel、word等办公文件,甚至是mp3、mp4等音频视频文件。 当然,大多数小型网站会放到自己服务器,如果文件量不大的话 如果文件数量会很多,那么就需要考虑使用第三方来保管存储 不…

Elasticsearch:使用 NLP 问答模型与你喜欢的圣诞歌曲交谈

自然语言处理 (NLP) 是人工智能 (AI) 的一个分支,旨在通过将计算语言学与统计、机器学习和深度学习模型相结合,尽可能接近人类解释地理解人类语言。 NLP 的最大挑战之一是在考虑到各种语言表示的情况下预训练文本数据的过程。 2018 年,谷歌…

企业报表插件怎么用?

最近因为单位年底要做部门总结汇报,需要使用很多的数据以报表的形式来引证今年的工作情况,内部的 OA、ERP 这些业务系统是指望不上了。作为懂一点 SQL、又经常用 Excel 来给领导做报表的我,在网上一轮操作(就是百度啦)…

算法通关手册 刷题笔记1 数组基础

算法通关手册 刷题笔记1 数组基础 持续更新中 文章目录算法通关手册 刷题笔记1 数组基础数组操作题目0189 轮转数组AC自己的解法其他解法知识点查漏补缺关于python中的数组赋值python中对象的引用0066 加一AC自己的解法其他解法知识点查漏补缺0724 寻找数组的中心下标AC自己的解…

大数据必学Java基础(一百一十六):Application域监听器

文章目录 Application域监听器 一、认识Application域监听器 二、监听器代码 Application域监听器 一、认识Application域监听器

关于金字塔格式转tiff并且openslide能获取到缩略图等标签信息

我们都知道openslide通过openslide_get_associated_image_names获取相关的图像名称,比如"thumbnail",“label”,“macro"等。那我们将"thumbnail”,“label”,"macro"写入tiff的时候,如何才能保证openslide能够获取到呢&a…

2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 建模方案及代码实现(更新中)

【BetterBench原创】2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 建模方案及代码实现(更新中) 更新进展 2022年12月20日 22:00 发布初步思路 (待更新)发布初步思路实现代码 …