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.rhkb.cn/news/202235.html

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

相关文章

服务器中了elbie勒索病毒解决办法,elbie勒索病毒解密数据恢复

科技技术的不断发展,为企业的生产运营提供了极大便利,但网络安全威胁也不断增加,近期云天数据恢复中心陆续接到很多企业的求助,企业的服务器中了elbie勒索病毒,导致系统瘫痪,所有业务无法正常开展&#xff…

关于用css设置input输入框hover的时候的样式以及当input为disabled的时候,不要让hover样式生效

效果如果&#xff1a; 编辑状态下的时候&#xff1a; 只读状态下的时候&#xff1a; 代码如图&#xff1a; <input type"text" name"dataForm.exportCode" id"exportCodeItem" required :disabled"editDisabled" />input:not(…

20230511 Windows Ubuntu vscode remote-ssh 连接配置

参考 &#xff1a; VSCode SSH 连接远程ubuntu Linux 主机 VSCode通过Remote SSH扩展连接到内网Ubuntu主机 Ubuntu 安装 sudo apt-get install openssh-server vscode: 安装remote-ssh 插件 连接到服务器IP 免密登录的公钥密钥传递用filezillaUbuntu 和 Windows 文件互传 …

PostgreSQL (Hologres) 日期生成

PostgreSQL 生成指定日期下一个月的日期 &#xff08;在Hologres中&#xff0c;不支持递归查询&#xff09; SELECTto_char(T, YYYYMMDD)::int4 AS date_int,date(T) AS date_str,date_part(year, T)::int4 AS year_int,date_part(month, T)::int4 AS month_int,date_part(da…

【DevOps】Git 图文详解(八):后悔药 - 撤销变更

Git 图文详解&#xff08;八&#xff09;&#xff1a;后悔药 - 撤销变更 1.后悔指令 &#x1f525;2.回退版本 reset3.撤销提交 revert4.checkout / reset / revert 总结 发现写错了要回退怎么办&#xff1f;看看下面几种后悔指令吧&#xff01; ❓ 还没提交的怎么撤销&#x…

uniapp 打包后各静态资源加载失败的问题(背景图,字体等)

原因: 1.部署地址不在域名根目录下 解决办法(推荐办法2): 办法1.如果部署在域名的文件夹下(例如h5), 则运行的基础路径修改为/h5/ 且注意路由模式 办法2.不修改运行的基础路径(还是./), 将代码中涉及背景图(background-image)和字体资源的路径前统一加,如图:

2014年10月6日 Go生态洞察:Go在Google I/O和Gopher SummerFest的应用

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

【产品安全平台】上海道宁与Cybellum将整个产品安全工作流程整合到一个专用平台中,保持构建的互联产品的网络安全和网络合规性

Cybellum将 整个产品安全工作流程 整合到一个专用平台中 使设备制造商能够 保持他们构建的互联产品的 网络安全和网络合规性 产品安全性对 每个人来说都不一样 每个行业的系统、工作流程和 法规都存在根本差异 因此&#xff0c;Cybellum量身定制了 Cybellum的平台和技…

【开源】基于Vue和SpringBoot的创意工坊双创管理系统

项目编号&#xff1a; S 049 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S049&#xff0c;文末获取源码。} 项目编号&#xff1a;S049&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员端2.2 Web 端2.3 移动端 三、…

一张图,了解美格智能高算力AI模组

美格智能高算力A模组&#xff0c;澎湃算力让AI触手可及&#xff01;

ElementPlusError: [ElOnlyChild] no valid child node found

突然发现页面报了一堆黄色的错误提示 查了下原来是这里导致的&#xff0c;只需要把v-if 挪到popover那层即可 解决

用好语言模型:temperature、top-p等核心参数解析

编者按&#xff1a;我们如何才能更好地控制大模型的输出? 本文将介绍几个关键参数&#xff0c;帮助读者更好地理解和运用 temperature、top-p、top-k、frequency penalty 和 presence penalty 等常见参数&#xff0c;以优化语言模型的生成效果。 文章详细解释了这些参数的作用…

java代码调用twitter-api用例实战

一、申请twitter开发者账号 首先先申请twitter开发者免费的API&#xff0c;要填写申请的内容&#xff0c;放心大胆地写&#xff0c;申请完&#xff0c;会提供免费的API接口。 以下是我申请到的三个免费API 申请完开始进行测试调用。 读官方文档账户认证那块&#xff1a;https…

.skip() 和 .only() 的使用

.skip() 和 .only() 的使用 说明 在做自动化测试中&#xff0c;跳过执行某些测试用例&#xff0c;或只运行某些指定的测试用例&#xff0c;这种情况是很常见的Cypress中也提供了这种功能 如何跳过测试用例 通过describe.skip() 或者 context.skip() 来跳过不需要执行的测试…

spark数据倾斜的解决思路

数据倾斜是&#xff1a;多个分区中&#xff0c;某个分区的数据比其他分区的数据多的多 数据倾斜导致的问题&#xff1a; 导致某个spark任务耗时较长&#xff0c;导致整个任务耗时增加&#xff0c;甚至出现OOM运行速度慢&#xff1a;主要发生在shuffle阶段&#xff0c;同样的k…

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…

中职组网络安全B模块-渗透提权2

任务五&#xff1a;渗透提权2 任务环境说明&#xff1a; 仅能获取xxx的IP地址 用户名&#xff1a;test&#xff0c;密码&#xff1a;123456 访问服务器主机&#xff0c;找到主机中管理员名称&#xff0c;将管理员名称作为Flag值提交&#xff1b; Flag:doyoudoyoudo 访问服…

数组对象判重最佳实践

数组对象判重最佳实践 赶紧挣钱&#xff0c;回家过年… 1.问题回顾 deviceSelectedRow(row) {this.ElectricalPartList.push(row)}&#xff0c;在此方法中&#xff0c;ElectricalPartList需要多次push进去数据&#xff0c;但是row可能存在重复&#xff0c;如何判重呢&#xff…

从裸机启动开始运行一个C++程序(十三)

前序文章请看&#xff1a; 从裸机启动开始运行一个C程序&#xff08;十二&#xff09; 从裸机启动开始运行一个C程序&#xff08;十一&#xff09; 从裸机启动开始运行一个C程序&#xff08;十&#xff09; 从裸机启动开始运行一个C程序&#xff08;九&#xff09; 从裸机启动开…

使用Pytorch从零开始构建WGAN

引言 在考虑生成对抗网络的文献时&#xff0c;Wasserstein GAN 因其与传统 GAN 相比的训练稳定性而成为关键概念之一。在本文中&#xff0c;我将介绍基于梯度惩罚的 WGAN 的概念。文章的结构安排如下&#xff1a; WGAN 背后的直觉&#xff1b;GAN 和 WGAN 的比较&#xff1b;…