当前位置: 首页 > news >正文

SpringMVC基础入门(一)之理论基础概念

文章目录

  • SpringMVC
    • 1.概念
    • 2.常用注解
  • 请求与响应
    • 1.请求参数
    • 2.JSON传输
    • 3.常用注解
  • 响应
    • 1.响应页面
    • 2.响应JSON数据
  • Rest风格
    • 1.介绍
    • 2.常用注解

SpringMVC

1.概念

(1)定义
SpringMVC是一种基于Java实现MVC模型的轻量级Web框架

(2)为什么要引入SpringMVC?

回顾之前Web开发流程——MVC三层架构

  • controller负责请求和数据的接收,接收后将其转发给service进行业务处理
  • service根据需要会调用dao对数据进行增删改查(比如组合数据访问层中基本功能,完成复杂的业务逻辑功能如注册功能
  • dao负责对数据库的CRUD基本操作,把数据处理完后将结果交给service,service再交给controller
  • controller根据需求组装成Model和View,Model和View组合起来生成页面转发给前端浏览器

在这里插入图片描述

上面的是同步调用,但是随着互联网发展,性能逐渐跟不上需求,于是就有了下面的异步调用

因为是异步调用,所以后端不需要返回view视图,将其去除

前端如果通过异步调用的方式进行交互,后台就需要将返回的数据转换成json格式进行返回

(3)SpringMVC主要作用

  • controller如何接收请求和数据
  • 如何将请求和数据转发给业务层
  • 如何将响应数据转换成json发回到前端

相比 Servlet, SpringMVC 使用更简单,开发更便捷

2.常用注解

名称类型位置作用
@Controller类注解SpringMVC控制器类定义上方设定SpringMVC的核心控制器bean
@RequestMapping类注解或方法注解SpringMVC控制器类或方法定义上方设置当前控制器方法请求访问路径
@ResponseBody类注解或方法注解SpringMVC控制器类或方法定义上方设置当前控制器方法响应内容为当前返回值,无需解析

请求与响应

1.请求参数

前端发送请求参数,后端该如何接收和返回?

通常这些有GET请求方式,POST请求方式等

GET请求如:

http://localhost/commonParam?name=itcast&age=15

Contorller接收如:

@Controller
public class UserController {@RequestMapping("/commonParam")@ResponseBodypublic String commonParam(String name,int age){System.out.println("普通参数传递 name ==> "+name);System.out.println("普通参数传递 age ==> "+age);return "{'module':'commonParam'}";}
}

POST请求一般是表单类型

普通参数 url地址传参,地址参数名与形参变量名相同,定义形参即可接收参数。如果形参与地址参数名不一致该如何解决?

如:

在这里插入图片描述

此时需要采用形参!

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

2.JSON传输

目前前后台常用异步方式进行交换,传输的数据使用的是JSON,那么前端该如何传输,后端该如何接收?

JSON数据一般有三种

  • json普通数组([“value1”,“value2”,“value3”,…])
  • json对象({key1:value1,key2:value2,…})
  • json对象数组([{key1:value1,…},{key2:value2,…}])

@EnableWebMvc——开启json数据类型自动转换

3.常用注解

名称类型位置作用
@RequestParam形参注解SpringMVC控制器方法形参定义前面将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次
@RequestBody形参注解SpringMVC控制器方法形参定义前面绑定请求参数与处理器方法形参间的关系(主要接收JSON)
@EnableWebMvc配置类注解SpringMVC配置类定义上方开启SpringMVC多项辅助功能(包含了将JSON转换成对象的功能)

响应

1.响应页面

设置返回页面

2.响应JSON数据

常用注解

名称类型位置作用
@ResponseBody方法\类注解SpringMVC控制器方法定义上方和控制类上设置当前控制器返回值作为响应体,
写在类上,该类的所有方法都有该注解功能

当方法上有@ReponseBody注解后

  • 方法的返回值为字符串,会将其作为文本内容直接响应给前端
  • 方法的返回值为对象,会将对象转换成JSON响应给前端

Rest风格

1.介绍

(1)简介

REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格

(2)为什么要引入Rest风格

当表示一个网络资源时,传统风格资源描述形式

  • http://localhost/user/getById?id=1 查询id为1的用户信息
  • http://localhost/user/saveUser 保存用户信息

REST风格描述形式

  • http://localhost/user/1
  • http://localhost/user

优点:隐藏资源的访问行为,无法通过地址得知对资源是何种操作;书写简化

(3)如何区分某请求是什么操作?

一个相同的url地址即可以是新增也可以是修改或者查询,所以该怎么区分?

按照REST风格访问资源时使用行为动作区分对资源进行了何种操作

资源描述作用行为动作
http://localhost/users查询全部用户信息GET(查询)
http://localhost/users/1查询指定用户信息GET(查询)
http://localhost/users添加用户信息POST(新增/保存)
http://localhost/users修改用户信息PUT(修改/更新)
http://localhost/users/1删除用户信息DELETE(删除)

总结一下,常见的请求方式:GET, POST, PUT, DELETE。

2.常用注解

名称类型位置作用
@PathVariable形参注解SpringMVC控制器方法形参定义前面绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应
@RestController类注解基于SpringMVC的RESTful开发控制器类定义上方设置当前控制器类为RESTful风格,
等同于@Controller与@ResponseBody两个注解组合功能
@GetMapping @PostMapping @PutMapping @DeleteMapping方法注解基于SpringMVC的RESTful开发控制器方法定义上方设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,
例如@GetMapping对应GET请求

三种形参注解@RequestBody@RequestParam@PathVariable 的区别和应用分别是什么?

  • 区别

    • @RequestParam用于接收url地址传参或表单传参
    • @RequestBody用于接收json数据
    • @PathVariable用于接收路径参数,使用{参数名称}描述路径参数
  • 应用

    • 发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
    • 如果发送非json格式数据,选用@RequestParam接收请求参数
    • 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值
http://www.lryc.cn/news/4949.html

相关文章:

  • 前端知识点
  • 【docker知识】从容器中如何访问到宿主机
  • MySQL入门篇-MySQL常用流程控制函数小结
  • 大数据技术架构(组件)35——Spark:Spark Streaming(1)
  • 实现超大文件上传逻辑
  • JavaScript HTML DOM EventListener
  • 构建RFID系统的重要组成部分
  • PID控制算法简介
  • 【王道数据结构】第八章 | 排序
  • 95后外贸SOHO,年入7位数,他究竟是怎么做的?
  • 2023年全国最新消防设施操作员精选真题及答案
  • mysql 无需修改配置文件,即可改变表数据存储位置
  • 轻松解决Session-Cookie 鉴权(含坑)附代码
  • pyinstaller使用详细
  • java -数据结构,List相关基础知识,ArrayList的基本使用,泛型的简单、包装类介绍
  • RabbitMQ学习总结(10)—— RabbitMQ如何保证消息的可靠性
  • 购物车案例【版本为vue3】
  • Multisim14 安装包及安装教程
  • Java实现简单的图书管理系统源码+论文
  • 前端调试2
  • AlphaFold 2 处理蛋白质折叠问题
  • 问卷调查会遇到哪些问题?怎么解决?
  • 量化选股——基于动量因子的行业风格轮动策略(第1部分—因子测算)
  • 工作常用git命令
  • test3
  • 领证啦,立抵3600,软考证书到手后还有很多作用
  • 响应式布局之viewport-超级简单
  • 分布式计算考试资料
  • Java修饰符和运算符,超详细整理,适合新手入门
  • 软件功能测试包含了哪些测试项目?功能测试报告收费标准