SpringMVC 基础知识

学习目标

  1. 掌握基于 SpringMVC 获取请求参数与响应 json 数据操作
  2. 熟练应用基于 REST 风格的请求路径设置与参数传递
  3. 能够根据实际业务建立前后端开发通信协议并进行实现
  4. 基于 SSM 整合技术开发任意业务模块功能

1 SpringMVC 简介

1.1 概述

1.1.1 web程序开发流程

【执行过程】

web 程序通过浏览器访问页面,前端页面使用异步提交的方式发送请求到后端服务器;

后端服务器采用表现层、业务层、数据层的三层架构的形式进行开发,页面发送的请求由表现层接收,获取用户的请求参数后,将参数传递到业务层,再由业务层访问数据层,得到用户需要访问的数据后,将数据返回给表现层,表现层拿到数据,将数据转换成 json 格式发送给前端页面;

前端页面接收数据后解析数据,并组织成用户浏览的最终页面信息交给浏览器 

1.1.2 SpringMVC 概述 

一种基于 Java 实现 MVC 模型的轻量级 Web 框架,是表现层框架技术,用于进行表现层功能开发

1.2 入门案例

1.2.1 代码开发

1.2.2 注解介绍 

1.3 入门案例工作流程分析

1.4 Controller 加载控制

简化开发

1.5 PostMan 

网页调试与发送网页 HTTP 请求的插件,用于接口测试

【注】这类插件有很多,比如 YApi 等,可自行选择一个合适的工具

2 请求与响应

2.1 请求映射路径

为避免多个模块下的请求路径发生冲突,需要设置模块名作为请求路径前缀

2.2 请求参数

2.2.1 Get 请求

2.2.2 Post 请求

 2.2.3 五种参数类型传递

普通参数

【注】如果地址参数和形参变量名不相同,可以采用 @RequestParam 注解的方式 可以实现请求参数和形参的绑定

public String commonParam(@RequestParam("name") String userName,int age)

POJO 类型参数 

【注】请求参数名与形参对象属性名相同,定义POJO类型形参即可接收参数

嵌套 POJO 类型参数

【注】 请求参数名与形参对象属性名相同,按照对象层次结构关系接收嵌套POJO属性参数

数组类型参数

【注】请求参数名与形参对象属性名同且请求参数为多个,定义数组类型形参即可接收参数

集合类型参数

2.2.4 json 数据传递

 传递 json 对象

 传递 json 数组

2.3 日期类型参数传递

内部转换工作过程:利用 Converter 接口

2.4 响应 json 数据

内部转换工作过程:HttpMessageConverter 接口

【注】和上述 Converter 接口功能一样,只是转换的东西不一样,这个是用来转换 http 的消息, 并不是一个类型转换到另一个类型

3 REST 风格

3.1 REST 简介

【注】REST 风格描述的是一种资源的访问形式, 根据 REST 风格对资源进行访问称为RESTful

【注】① 通过上述约定,通过路径和请求的方式就可以确认一个资源的访问行为。② 描述模块的名称通常使用复数,也就是加 s 的格式描述,表示此类资源,而非单个资源,例如:users、books、accounts.....

3.2 RESTful 入门案例

3.3 REST 快速开发

问题描述:

当前程序仍然存在代码冗余

代码简化:

3.4 案例:基于 RESTful 页面数据交互

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

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

相关文章

【搭环境】装Python3.8 open3d

先装Python3.8 方法一试了找不到Python3.8的库,所以用方法二装上了。 Python3加入环境变量 更改Python默认指向 open3d需要Python3.6以上,最好用Ubuntu18版本,我用的16版本。。

从入门到精通!Python数据分析畅销书《利用Python进行数据分析》第三版中文版助你成为数据分析师!

Python数据分析畅销书《利用Python进行数据分析》第三版中文版助你成为数据分析师! 个人简介什么是数据分析如何自学数据分析书籍推荐作译者简介作者简介译者简介 主要变动导读视频:购书链接:参与方式往期赠书回顾 个人简介 🏘️&…

【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏

【好玩的开源项目】Linux系统之部署proxx扫清黑洞小游戏 一、proxx小游戏介绍1.1 proxx小游戏简介1.2 开源地址 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、部署Node.js环境4.1 下载Node.js安装包4.…

动态规划求二维网格中从左上角到右下角的最短路径( 每次只能向下、向右、向右下走 ) java 实现

dp[i][j] 表示在以点(0,0)作为左上角,点(i,i) 作为右下角的二维网格中 左上角到右下角的最短路径, 动态转移方程为:dp[i][j] min{ dp[i][j-1],dp[i-1][j],dp[i-1][j-1] }.distance weight[i][j] ImageUtils.java: import java.a…

vue3的 nextTick()的使用

引言: 当你修改了响应式状态时,DOM 会被自动更新。但是需要注意的是,DOM 更新不是同步的。Vue 会在“next tick”更新周期中缓冲所有状态的修改,以确保不管你进行了多少次状态修改,每个组件都只会被更新一次。 要等待…

三十分钟学会Shell(上)

Shell ​ Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,是用户和Linux文件系统之间的桥梁。Shell 有自己的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux&#x…

Windows日常故障自我排查:用工具eventvwr.msc(事件查看器)分析问题故障

windows故障排查方法一: 工具用法 系统故障问题时,找不到解决方法 首先, 在搜索栏输入: 事件查看器(eventvwr.msc) 打开程序 根据程序找到程序运行的LOG 根据程序Operational筛选出错误日志: 日志中找错误原因&…

假期宅家不无聊,用极米投影仪H6 Pro 4K解锁宅家多样玩法

不知道大家平时的假期是怎么度过的,是选择出门游玩?还是要在家好好安排自己的学习充电计划?平日工作这么累,不如趁假期好好休息一下,把以前落下的番剧补回来。不过手机的屏幕太小,电脑又不能躺在床上看,只有够大尺寸…

如何解决EMI问题 电磁干扰问题诊断四步骤

电磁干扰的观念与防制﹐在国内已逐渐受到重视。虽然目前国内并无严格管制电子产品的电磁干扰(EMI)﹐但由于欧美各国多已实施电磁干扰的要求﹐加上数字产品的普遍使用﹐对电磁干扰的要求已是刻不容缓的事情。笔者由于啊作的关系﹐经常遇到许多产品已完成成…

Lora学习资料汇总

目录 LoRa联盟 Semtech lora网关供应商: LoRaMAC API文档 论坛 开发板 主流技术对比分析 LoRa网络距离模拟测试方法 LoRa应用 Lora LoraWAN教程 LoRa联盟 LoRa联盟:LoRaWAN规范的制定组织 https://www.lora-alliance.org/ LoRa技术白皮书:htt…

Android扫码ZXing

1. 获取权限 请注意动态申请及重写申请结果返回方法。 <uses-permission android:name"android.permission.CAMERA"/> 2. 添加依赖 //Gradle Scripts -> build.gradle(Module:app) implementation com.google.zxing:core:3.4.1 implementation com.jour…

解决mv3版本浏览器插件,不能注入js脚本问题

文章目录 背景引入ifream解决ifream和父页面完全跨域问题参考链接 背景 浏览器插件升级mv3版本后&#xff0c;不能再使用content_script内容脚本向原浏览器&#xff08;top&#xff09;注入script标签达到注入脚本的目的。浏览器认为插入未经审核的脚本是不安全的行为。 引入…

python给视频增加字幕

python给视频增加字幕 安装所需库 在开始之前&#xff0c;我们需要安装一些Python库。主要使用到的库如下&#xff1a; moviepy&#xff1a;用于处理视频和音频的库。 pydub&#xff1a;用于处理音频的库。 speech_recognition&#xff1a;用于语音识别的库。 首先&#xff0…

ajax请求方式处理

1、前置准备 1.1、SpringBoot项目下&#xff1a;写一个controller RestController public class TestController {RequestMapping("/yyy")public void test(HttpServletRequest request, HttpServletResponse response){String yang request.getParameter("y…

AI助力钢铁产业数字化,python基于YOLOv5开发构建钢铁产业产品智能自动化检测识别系统

AI为工业产业智能化数字化赋能早已不是什么新鲜事&#xff0c;越来越多的行业和领域开始更大范围去拥抱AI&#xff0c;享受科技带来的变革力量&#xff0c;在我们之前的文章中也有很多相关领域项目的实践经历&#xff0c;本文的核心目标就是想要基于钢铁领域产品数据来开发构建…

Vue框架的element组件table文字居中

1、代码展示 <el-table:data"table.data.slice((table.currentPage - 1) * table.limit, table.currentPage * table.limit)"style"width: 100%; margin-top: 15px"border:header-cell-style"{ textAlign: center }":cell-style"{textAl…

【KMP算法】学习总结

说明&#xff1a; 文章内容为对KMP算法的总结&#xff0c;以及力扣例题&#xff1b;文章内容为个人的学习总结&#xff0c;如有错误&#xff0c;欢迎指正。 文章目录 1. KMP算法1.1 算法步骤1.2 关于指针回退问题 2 . LeetCode例题 1. KMP算法 1.1 算法步骤 KMP算法通常用于…

springboot_vue知识点

代码放到了仓库。 springboot_vue知识点 1.搭建1.vue2.springboot 2.前后端请求和响应的封装1.请求封装2.响应封装 3.增删改查1.查询2.分页3.新增和编辑4.删除 4.跨域和自定义异常5.JWT鉴权1.配置pom2.拦截前端请求的拦截器3.生成token并验证token4.登录后生成token5.前端获取…

git如何查看配置,修改配置,设置配置

# 显示当前的Git配置 $ git config --list# 编辑Git配置文件 $ git config -e [--global]# 设置提交代码时的用户信息 $ git config [--global] user.name "[name]" $ git config [--global] user.email "[email address]"