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 页面数据交互

相关推荐
风逸hhh3 分钟前
python打卡day58@浙大疏锦行
开发语言·python
Q_9709563915 分钟前
java+vue+SpringBoo足球社区管理系统(程序+数据库+报告+部署教程+答辩指导)
java·开发语言·数据库
要开心吖ZSH19 分钟前
微服务架构的演进:迈向云原生
java·微服务·云原生
为了更好的明天而战38 分钟前
Java 中的 ArrayList 和 LinkedList 区别详解(源码级理解)
java·开发语言
JosieBook1 小时前
【Java编程动手学】Java中的数组与集合
java·开发语言·python
qq_589568101 小时前
element-plus按需自动导入的配置 以及icon图标不显示的问题解决
开发语言·javascript·ecmascript
N_NAN_N1 小时前
类图+案例+代码详解:软件设计模式----单例模式
java·单例模式·设计模式
lsx2024061 小时前
SQLite Select 语句详解
开发语言
weixin_399380691 小时前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes
Dovis(誓平步青云)1 小时前
基于探索C++特殊容器类型:容器适配器+底层实现原理
开发语言·c++·queue·适配器·stack