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

news2024/12/22 21:00:40

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

博客首页:未央.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://www.coloradmin.cn/o/494140.html

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

相关文章

车载红外夜视「升温」

红外夜视赛道,正在升温。 本周,全球车载后视镜头部供应商Gentex宣布,领投以色列热成像技术初创公司ADASKY,后者在B轮融资中拿到了3000万美元。按照计划,Gentex将协助ADASKY将红外夜视技术推向汽车市场。 事实上&#x…

基于3D网格模型的加密域可逆信息隐藏文献学习

————————————————————————————————————————————— 文献学习: 题目:Separable Reversible Data Hiding Based on Integer Mapping and MSB Prediction for Encrypted 3D Mesh Models. 作者:Na Xu…

系统分析师之需求工程(十四)

目录 一、概述 二、需求获取 三、需求分析 3.1 需求分类 3.2 结构化需求分析(SA) 3.3 面向对象的需求分析OOA 四、需求定义 五、需求验证 六、需求管理 6.1 软件需求基线 6.2 需求跟踪 6.3 需求风险管理 一、概述 软件需求是指用户对系统在功…

产品经理进阶:一份为创业者准备的商业模式作战指南(加餐)

目录 大环境 精益画布 专栏一:产品经理进阶指南 CSDN学院课程地址 课程目录 专栏二:华为流程体系课程 课程地址 课程目录 专栏三:华为BLM战略管理课 目录 大环境 今天来谈谈商业模式这个话题。 2023 年很快就要过半了&#xff0c…

堆(什么是堆以及怎样自己创建堆)

🎁**“我们不必非常聪明才能改变世界。我们只需要比绝大多数人更早地认识到问题,并付诸行动。”- 毛里茨萨克斯** 🏀作者:不能再留遗憾了 📱关于作者:博主正在学习C和Java,目前有些关于leetcode…

【Halcon】找到设备上的 标识牌

如图,找到设备上的 标识牌 。 标识牌最明显的特征是比其他区域亮, 二值化选择出亮区域,再通过面积选择出目标区域。 先显示图片 *获取图片的大小 get_image_size(Image,Width,Height)*关闭窗口 dev_close_window()*打开窗口 dev_open_win…

let‘s encrypt免费证书配置https

#sudo add-apt-repository ppa:certbot/certbot #sudo apt-get update sudo apt-get install certbot 这里要停止nginx certbot certonly --agree-tos --email xxxqq.com --standalone -d 域名1 -------------------------------------------------------------------------…

MTK8788 安卓智能模块 安卓核心板方案定制

MT8768核心板是一款高性能的芯片板,具备以下特点: 1.强大的处理器:MT8768核心板采用联发科MTK8768平台,搭载八核A53处理器,最高主频可达2.3GHz。除此之外,MT8768核心板还支持多种操作系统,包括A…

SDMTSP:星雀优化算法NOA求解单仓库多旅行商问题(提供MATLAB代码,可更改起点及旅行商个数)

一、单仓库多旅行商问题 单仓库多旅行商问题(Single-Depot Multiple Travelling Salesman Problem, SD-MTSP):𝑚个推销员从同一座中心城市出发,访问其中一定数量的城市并且每座城市只能被某一个推销员访问一次&#x…

webpack loader原理以及自定义loader

loader主要是帮助webpac将不同类型的文件转换为webpack可识别的模块。 分类:enforce属性 pre 前置loader,normal 普通loader,inline:内联loader,post:后置loader 如果不写默认是 normal类型 执行顺序&a…

ChatGPT会代替数据分析师吗?

大家好,我是朱小五。 最近一个多月以来,ChatGPT已经成为了“家喻户晓”的一个词。3月15日,OpenAI 开发布会宣布GPT-4,紧接着百度发布了自己AI产品文心一言。3月23日,OpenAI 宣布推出插件功能,赋予 ChatGPT …

【Linux Network】网络编程套接字(代码练习)—TCP

目录 1. 常用接口 2. 服务器和客户端的简单流程 3. C/S 回声通信 4. 创建子进程完成 C/S 回声通信 5. 创建孙子进程完成 C/S 回声通信 6. 创建线程完成 C/S 回声通信 7. 使用线程池完成 C/S 回声通信 Linux网络编程在✨ 本篇博文的代码虽然多,但都是修改一点点tcp_s…

动态规划--最长公共子序列

最长公共子序列 动态规划算法思想最长公共子序列题目最优解结构性质递归方程递归实现核心函数测试测试结果 非递归实现(画表)核心函数测试测试结果 求出具体的子序列 动态规划算法思想 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题﹐即将大规模变成…

通付盾携数智反欺诈应用防护解决方案亮相2023金融展

精彩亮相 银行数字化转型需求背景 数据驱动发展 数字经济时代,数据成为发展的重要资产,以数据驱动决策智能已是未来发展的必然趋势,智能化的决策将是重塑核心竞争力的关键抓手。 人工转向智能 银行的监测管理在一般业务场景中,…

Kyligence Zen 产品体验----设备销量商业数据

介绍 Kyligence Zen 是基于 Kyligence 核心 OLAP能力打造的一站式指标平台。凭借集业务模型、指标管理、指标加工、数据服务等于一体的解决方案,Kyligence 协助过多家金融、零售、制造企业客户搭建企业级指标平台。Kyligence Zen 是 Kyligence 基于丰富的指标平台建设实践打造…

MySQL优化二索引使用

1、索引分类 类型解释全局索引(FULLTEXT)全局索引,目前只有 MyISAM 引擎支持全局索引,它的出现是为了解决针对文本的模糊查询效率较低的问题,并且只限于 CHAR、VARCHAR 和 TEXT 列哈希索引(HASH)哈希索引是 MySQL 中用到的唯一 key-value 键…

《通过并行蒙特卡洛方法合成桡动脉的光电容积图(PPG),及其与体重指数(BMI)的相关性》阅读笔记

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

界面控件DevExpress WPF富文本编辑器,让系统拥有Word功能(二)

DevExpress WPF控件的富文本编辑器允许开发者将文字处理功能集成到下一个WPF项目中,凭借其全面的文本格式选项、邮件合并以及丰富的终端用户选项集合,可以轻松地提供Microsoft Word功能。 DevExpress WPF拥有120个控件和库,将帮助您交付满足…

图片生成功能,ChatGPT和New Bing谁更厉害?

大家好,我是可夫小子,关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加我,备注:chatgpt,拉你进群。 ChatGPT和New Bing虽然是大语言模型,但也有「生成图」的能力,它们该如何调教&#…

人员拥挤检测系统 yolov5

人员拥挤检测系统通过YOLOv5网络模型算法技术,人员拥挤检测系统算法模型对校园/厂区车间/街道等场景的异常的人群聚集(出现拥挤情况)时,立刻抓拍存档并通知相关人员及时处理。在介绍Yolo算法之前,首先先介绍一下滑动窗…