在之前我们先简单那谈谈Spring、SpringBoot以及Spring MVC框架之间有什么关系?
首先Spring是一个框架,SpringBoot脚手架是为了快速开发Spring框架而创造的技术。可以理解为SpringBoot又在Spring上面包了一层壳子,是基于Spring的,是为了让使用Spring更爽,其核心还是Spring。然后,Spring MVC是Spring中的一个Web框架模块,是基于Servlet API构建的。
那MVC又是什么呢?
MVC 是Model View Controller 的首字母缩写,翻译中文就是“模型、视图、控制器”,它是一种设计模式,这种设计模式将软件(项目)分为三部分:模型、视图和控制器。
MVC和 Spring MVC是什么关系?
MVC是一种设计思想,而Spring MVC是一个具体的实现框架。有点类似IoC和DI的关系了,IoC是一种思想,而DI是这种思想的一种具体实现。
Spring MVC是一个基于MVC设计模式和Servlet API实现的Web 项日,同时Spring MVC 又是Spring 框架中的一个WEB模块,它是随着Spring 的诞生而存在的一个框架。Spring 和 Spring MVC诞生的历史是比较久远,在它们之后才有了Spring Boot。
Spring MVC项目如何创建呢?
基于Spring Boot框架添加一个Spring Web(它使用的就是Spring MVC)依赖,此时项目就变成了Spring MVC项目。
本文主要从以下三个方面进行阐述:
1、实现用户和程序的映射(在浏览器输入URL地址之后,能够在程序中匹配到相应方法)。
2、服务器端获取到用户的请求参数。
3、服务器端要将结果返回给用户(前端)。
1、实现用户和程序的映射
方法一:@RequestMapping("/ xxx")
@RequestMapping特征:
1、@RequestMapping 既能修饰类((可选)也能修饰方法。
2、默认情况下@RequestMapping 既支持 POST请求方式,也支持GET请求方式。
@RequestMapping 参数扩展(只支持某种类型的请求方式,比如 POST、GET、PUT等类型的请求方式):
方法2:使用@PostMapping ("/xxx")
方法3:使用@GetMapping("/xxx")
2、服务器端获取到用户的请求参数
1.获取单个参数
2.获取多个参数
3.获取对象
扩展功能:参数重命名
使用@RequestParam注解,当前端传过来的参数名称与我们在后端所写的参数名字不相对应的时候,而且还不能改动前端代码的时候以及后端代码大量使用了这个名称不便修改时,这个时候往往我们可以通过参数重命名的方式来解决。
比如前端传过来的是name,而我们后端大量使用的是username:
@RequestParam注意事项:如果在参数中添加@RequestParam注解,那么前端一定要传递此参数,否则就会报错,如果想要解决此问题,可以给@RequestParam里面添加required = false。
4.接收.JSON格式的数据
使用Postman模拟发送JSON数据给服务器:
5.从URL地址中获取参数(不是从URL地址中的参数部分获取参数)
6.上传文件
在上传文件之前,先讲讲不同运行平台的配置文件设置:
1、新建不同平台的配置文件(不同平台配置文件的命名规则: application-平台.yml(properits)【必须这样命名】)
2、在主配置文件中设置运行的配置文件
3.服务器端代码
4.使用Postman模拟上传文件
这个时候就会在目录下面看到上传的文件了:
Spring中设置上传文件的大小:
application.properties配置:
spring.servlet.multipart.max-file-size=100MB # 单个文件 spring.servlet.multipart.max-request-size=100MB # 单次请求,例如一个请求有多文件
application.yml配置:
spring: servlet: multipart: maxFileSize: 100Mb maxRequestSize: 1000Mb
7获取Cookie
a) Servlet获取Cookie 的方法
b)使用@Cookievalue注解实现Cookie 的读取
8、获取Header(请求头)里面的信息
a) Servlet获取Header的方法
b)使用@RequestHeader注解实现
9存储和获取Session
存储Session: Servlet和 SpringMVC操作方式是一样的。
获取Session方法1(Servlet 模式):
获取session方式2:@SessionAttribute
3、服务器端要将结果返回给用户(前端)
1.返回一个非静态页面的数据,使用@ResponseBody 注解
@ResponseBody 可以修饰类:表示当前类中所有方法都会返回一个非静态页面的数据;可以修饰方法:表示当前方法返回的是一个非静态页面的数据。否则默认返回的是一个html页面
2.使用@RestController(=Controller+ResponseBody)
3.后端接受JSON数据的标准格式
4.请求重定向和请求转发
请求转发(forward)实现方式1:(请求转发是服务器端帮用户实现的)
请求转发的实现方式2:
请求重定向(redirect)的实现方式1:(重定向的请求发生在客户端(浏览器端))
请求重定向实现方式2:
请求重定向和请求转发有什么区别?
1.定义不同
2.跳转方式不同
3.数据共享不同
4.最终URL地址不同
5.代码实现不同