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

Spring MVC是什么?详解它的组件、请求流程及注解

作者:Insist--

个人主页:insist--个人主页

作者会持续更新网络知识和python基础知识,期待你的关注

前言

本文将讲解Spring MVC是什么,它的优缺点与九大组件,以及它的请求流程与常用的注解。

目录

一、Spring MVC是什么?

二、Spring MVC的优缺点

1、优点

2、缺点

三、Spring MVC的九大组件

1、HandlerMapping

2、HandlerAdapter

3、HandlerExceptionResolver

4、ViewResolver

5、RequestToViewNameTranslator

6、LocaleResolver

7、ThemeResolver

8、MultipartResolver

9、FlashMapManager

四、Spring MVC请求流程

五、Spring MVC常用的注解有哪些?

1、@RequestMapping

2、@RequestBody

3、@ResponseBody


一、Spring MVC是什么?

c49d6682fabf6b211a55e0f2dcf408cb.jpeg

Spring MVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

二、Spring MVC的优缺点

4e34b360590a4a8ea25a4a5d1c72d878.jpg

SpringMVC是一个典型的轻量级MVC框架,在整个MVC架构中充当控制器框架,相对于之前的struts2框架,SpringMVC运行更快,其注解式开发更高效灵活

1、优点

①拥有强大的模块化功能,代码可读性高;

②可以通过 POJO (Plain Ordinary Java Object,简单的Java对象)对测试数据进行简单的注入;

③可以灵活使用DI(DependencyInjection,依赖注入,或者叫控制反转);

④不同模块间是低耦合的(上面四点优点归根结底还是耦合度低)。

2、缺点

①对于新手来说,实现的难度比较大;

②学习曲线比较陡峭,即入门比较难。

三、Spring MVC的九大组件

1、HandlerMapping

根据Request找到相应的处理器。因为Handler(Controller)有两种形式,一种是基于类的Handler,另一种是基于Method的Handler(也就是我们常用的)。

2、HandlerAdapter

调用Handler的适配器。如果把Handler(Controller)当做工具的话,那么HandlerAdapter就相当于干活的工人。

3、HandlerExceptionResolver

对异常的处理。

4、ViewResolver

用来将String类型的视图名和Locale解析为View类型的视图。

5、RequestToViewNameTranslator

有的Handler(Controller)处理完后没有设置返回类型,比如是void方法,这是就需要从request中获取viewName。

6、LocaleResolver

从request中解析出Locale。Locale表示一个区域,比如zh-cn,对不同的区域的用户,显示不同的结果,这就是i18n(SpringMVC中有具体的拦截器LocaleChangeInterceptor)。

7、ThemeResolver

主题解析,这种类似于我们手机更换主题,不同的UI,css等。

8、MultipartResolver

处理上传请求,将普通的request封装成

MultipartHttpServletRequest。

9、FlashMapManager

用于管理FlashMap,FlashMap用于在redirect重定向中传递参数。

四、Spring MVC请求流程

在Web应用程序中,请求是必不可少的,每次请求由用户(客户端)发起,到用户(客户端)接收到响应结束,下图展示了一个请求在Spring MVC中所经历的每个流程:

d58f871f9f144ce48add7f0f986bd9f4.jpg

下面我将对图中的每个流程做个讲解

1、请求离开浏览器时(上图①),会带有用户所请求内容的信息,比如请求的URL和提交的表单信息。

2、然后进入到请求的第一站,即Spring的DispatcherServlet,它的任务是将请求发送给Spring MVC控制器。

3、因为在应用程序中会有多个控制器,因此DispatcherServlet会查询一个或多个处理器映射(handler mapping),处理器映射会根据请求所携带的URL来确定应该将请求发送给哪个控制器(上图②)。

4、确定好控制器后,DispatcherServlet会将请求发送给确定好的控制器,然后等待控制器处理用户提交的信息,不过一般情况下,控制器本身几乎不处理工作,而是将业务逻辑委托给一个或多个服务对象进行处理(图中的③)。

5、控制器完成业务逻辑处理后,通常会产生一些模型(Model)信息,这些信息需要返回给用户并在浏览器上显示,为了更友好的展示这些信息,比如以html形式展示,我们需要将信息发送给一个视图(View),比如JSP。

6、控制器所做的最后一件事就是将模型数据打包,并且标示出用于渲染输出的视图名。它会将请求连同模型和视图名发送回DispatcherServlet(上图④),不过控制器只会返回一个视图的逻辑名称,而不是返回具体的某个特定视图,这个逻辑名称将会用来查找产生结果的真正视图。DispatcherServlet会使用视图解析器(view resolver)来将逻辑视图名匹配为某个特定视图(上图⑤),比如JSP或者Thymeleaf。

7、请求的最后一站是视图的实现(上图⑥),在这里视图将使用模型数据渲染输出,这个输出会通过响应对象传递给用户/客户端(上图⑦)。

五、Spring MVC常用的注解有哪些?

1、@RequestMapping

用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。

2、@RequestBody

注解实现接收http请求的json数据,将json转换为java对象。

3、@ResponseBody

注解实现将conreoller方法返回对象转化为json对象响应给客户。

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

相关文章:

  • 基于Spring Boot的广告公司业务管理平台设计与实现(Java+spring boot+MySQL)
  • docker 基本命令安装流程
  • 尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】
  • 【LeetCode每日一题合集】2023.7.3-2023.7.9
  • java企业工程项目管理系统平台源码
  • 软件设计模式与体系结构-设计模式-行为型软件设计模式-访问者模式
  • 【LeetCode】503. 下一个更大元素 II
  • 使用infura创建以太坊网络
  • TCP/IP协议是什么?
  • python图像处理实战(三)—图像几何变换
  • 学习vue2笔记
  • 【SQL】查找多个表中相同的字段
  • “未来之光:揭秘创新科技下的挂灯魅力“
  • Spring boot MongoDB实现自增序列
  • MyBatis查询数据库【秘籍宝典】
  • 目标检测舰船数据集整合
  • 第一章 Android 基础--开发环境搭建
  • 【LeetCode周赛】2022上半年题目精选集——二分
  • vuejs如何将线上PDF转为base64编码
  • Repo工作原理及常用命令总结——2023.07
  • Python教程(2)——开发python常用的IDE
  • 【lambda函数】lambda()函数
  • ThreeJs CSS3DObject 点击失效问题
  • 飞书深诺、恒生面试(部分)(未完全解析)
  • Spring Cloud Config: 了解、原理和使用
  • 基于图的路径规划算法对比
  • SQL Server 索引
  • java抽奖
  • 【springboot+云计算】B/S医院信息管理系统源码(云HIS)
  • go 读写 excel 读取 txt 繁体中文转码