【JavaEE进阶】——第五节.SpringMVC学习介绍(上)(获取参数,传递参数——关于前后端传参交互的总结、from表单、Ajax数据提交)

news/2024/7/7 23:21:28

作者简介:大家好,我是未央;

博客首页:未央.303

系列专栏:JavaEE进阶

每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!

目录

文章目录

前言

一、什么是SpringMVC ?

二、Spring MVC项目的连接(用户 和 程序 的 映射)

三、获取参数的功能的实现

3.1 传递较少数量的参数

3.2 通过对象传递大量参数

3.3 获取表单参数

3.4 获取Json对象

3.5 上次文件

3.6 一点补充

四、传参总结

总结


前言

今天我们将进入到有关spring  MVC的学习当中;我们将学习到spring  MVC进行参数获取,参数传递;关于前后端传参交互的总结、from表单、Ajax数据提交等等的有关介绍;


一、什么是SpringMVC ?

定义:

 官⽅对于 Spring MVC 的描述是这样的:

Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more commonly known as “Spring MVC”.
翻译:

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为“Spring MVC”。


相关介绍:

1、因为 Spring Web MVC 是基于 Servlet API,所以 Servlet 是 Spring MVC 的 “父亲”。

因此,Servlet 那一套编程方法,在 Spring MVC 中,也是可以使用的!!!
但是,一般不推荐使用 servlet 的编程方式。因为,Spring MVC 更简单!


2.Spring Web MVC,从⼀开始就包含在 Spring 框架中。

即:Spring 是一个很大体系(框架),Spring MVC 只是属于 Spring 体系中的一个 Web 模块。

这也是为什么在学习 Spring 的时候,我们都都是通过 main 方法去访问bean方法的原因。因为我们没有引入 web 模块,因此想要通过 浏览器输入 URL 来访问 方法,是不行的;

 接下来我们就在IDEA社区版中创建一个我们第一个SpringMVC项目

在创建 Spring Boot 项⽬时,我们勾选的 Spring Web 框架其实就是 Spring MVC 框架,如下图所示:

其实:Spring MVC 项⽬创建和 上篇博客我所讲的Spring Boot 创建项⽬相同 ;

Spring MVC 使用Spring Boot 的方式创建在创建的时候选择 Spring Web 就相当于创建了 Spring MVC 的项目)

简言之就是:

1、删除不必要的文件

2、通过Maven包管理添加项目所依赖的包和库;

详见SpringBoot项目创建,我们这个SpringMVC项目本来就是基于SpringBoot来创建的呀!


总结:

学习 Spring MVC 我们只需要掌握以下 3 个功能:

1、 连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。

2、 获取参数的功能:⽤户访问的时候会带⼀些参数,在程序中要想办法获取到参数。

3、输出数据的功能:执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤户。

  二、Spring MVC项目的连接(用户 和 程序 的 映射)

通过@RequestMapping注解进行路由配(即可以修饰类也可以修饰方法,放在类上是一级目录,放在方法上是二级目录)

                                                                                                                                                  

 当然其他的注解:@GetMapping和@PostMapping也可以进行路由配置  

关于Spring MVC项目的连接的一点补充:

为什么只能用@Controller,而不能用其他五大类注解???

注意:我们这里的SpringMVC还是和之前我们说的Spring Core还是有些不一样的。 

Spring MVC 是基于 Servlet API 构建的。

然⽽要真正的理解什么是 Spring MVC?我们⾸先要搞清楚什么是 MVC?

MVC

概念:

是 Model View Controller (模型视图控制器)的缩写,它是软件⼯程中的⼀种软件架构模式,它把软件系统分为模型、视图和控制器三个基本部分。

图示说明:

  • Model(模型) 是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
  • View(视图) 是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。
  • Controller(控制器) 是应用程序中处理⽤户交互的部分。通常控制器负责从视图读取数据,控制⽤户输⼊,并向模型发送数据。

下面我们来进一步分析 四者之间的关系。

 当然了,其实上面分析的是传统的MVC模式是前后端不分离的,可以说服务器的视图和客户端的视图是杂糅在一起的。 


我们要讲的SpringMVC其实是前后端分离开来的

前端发送的请求数据,会先给 controller。
controller 验证完数据之后,就会将其给 Model。
Model 在和 数据库交互之后,将其得到的结果返回给 controller。
此时 controller 收到的数据,还不能直接返回给前端。
controller 需要将数据 交给 服务器的视图(View),进行处理和渲染。
最终,将渲染得到的结果,返回给前端。
此时,用户就看到的源码 就是 html标签 的内容。(浏览器的开发者工具可以查看)
看到的页面,就是浏览器对 HTML标签内容的解析。

 所以说SpringMVC,叫spring web更合适。

三、获取参数的功能的实现

传统的获取前端传来参数的方式:

因为我们的SpingMVC其实底层还是基于servlet,所以我们可以通过HttpServlet来获取前端传来的参数;

传统的传递方式:

SpringMVC有更简单的方式:

这样的方式又分为多种情况:

3.1 传递较少数量的参数

注意:

当然了,也可以通过postman以post的形式传递参数:

用Fiddler抓取此次的包:  


3.2 通过对象传递大量参数

既然要传递对象,就要用对应的实例对象去接收这些参数。

我们通过postman传参如下:  


3.3 获取表单参数

  用Fiddler抓包结果如下:


3.4 获取Json对象

用Fiddler抓包结果如下: 


3.5 上次文件

在网站中,我们不可避免要上传一些东西——比如用户头像的上传

那么一起看看,SpringMVC怎么实现上传文件吧!

 用Fiddler抓包结果如下:


3.6 一点补充

http的请求体body的几种数据格式

表单提交只是POST请求的一种方式,表单提交有好几种提交的数据格式:

Form表单提交的四种数据格式

举例说明:

栗子一:multipart/form-data


栗子二:application/x-www-form-urlencoded 


栗子三 注意接收Json对象和用对象接收from表单提交的键值对数据的不同 


四、传参总结

总结:一般来说,我们在项目中用到的from表单提交、ajax提交,默认的数据格式都是application/x-www-form-urlencoded;


总结

今天的内容就介绍到这里,我们下一节将继续介绍有关内容,让我们下一期内容再见!!!!!

 


http://lihuaxi.xjx100.cn/news/1101821.html

相关文章

《可穿戴式血压测量设备与高血压管理的新方法:数字时代》阅读笔记

目录 一、论文摘要 二、论文十问 Q1:论文试图解决什么问题? Q2:这是否是一个新的问题? Q3:这篇文章要验证一个什么科学假设? Q4:有哪些相关研究?如何归类?谁是这一课…

从入门到精通:数据库设计指南

数据库设计是指根据特定需求和目标,设计和构建数据库结构和组织的过程。它是软件开发、企业管理和数据分析中最基本、最重要的部分之一。如果你是个初学者,想要深入了解数据库设计,那么这里有一份十分详细具体的学习资料,来帮助你…

Unity 向量

向量的基本概念 向量:既有大小又有方向的量叫做向量。 零向量:各分量都是0的向量。 归一化向量:方向不变,将向量的长度变为1。 单位向量:长度为1的向量(归一化后的向量)。 向量的模:只有长度没有方向。…

解决docker启动时报‘Error response from daemon: network xxx not found‘问题

公司近期更换了网络设备,网段也更换了,导致原来的测试服务器无法连接,网关强制重启后才得以解决。 服务器启动后几个docker服务没有正常重启。 执行命令查询服务状态 docker ps -a确实有几个服务停止运行了,于是手动执行启动命令…

thinkphp+vue+html超市零食品美食推荐系统零食购物商城网站7v281

本系统的开发使获取食品推荐系统信息能够更加方便快捷,同时也使食品推荐系统管理信息变的更加系统化、有序化。系统界面较友好,易于操作 运行环境:phpstudy/wamp/xammp等 开发语言:php 后端框架:Thinkphp5 前端框架:vu…

项目实战——获取树形结构

获取树形结构 一、背景介绍二、 思路和方案方案一:使用递归查询的方式并构建树形结构方案二:使用临时表的方式构建树形结构使用临时表的优缺点 三、过程项目案例核心代码 四、总结五、升华 一、背景介绍 我们在开发中时常会遇到需要用到树形结构这种表示…

APSIM模型

随着数字农业和智慧农业的发展,基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…

C++入门2(缺省参数 inline函数 函数重载 函数模板)

C入门2 缺省参数结合优先级 inline函数vs中的测试实例inline函数要点内联函数与宏定义区别: 函数重载定义名字粉碎技术C编译时函数名修饰约定规则 函数模板 缺省参数 函数定义时,缺省值赋值是从右向左依次赋值 调用函数时,从左向右依次给实参值&#xf…