Spring MVC请求基础

SpringBootApplication

SpringBootApplication,启动类的注解,只要启动这个主函数,就相当于启动了整个程序

RestController

因为我们这个是基于spring框架下搭建的,所以有很多个文件,如果让idea每次启动都去扫描那一大堆文件,是不现实的,所以我们会在自己写的类中,加上RestController这个注解,属于类注解,相当于告诉idea,只需要扫描我写的了注解的这几个文件,其他的不用管

RequestMapping

映射路径,默认支持所有的HTTP的所有方法,就好像是告诉别人门牌号,别人才知道你在哪里,你这个资源怎么样才可以被访问到,既可以当做类注解,也可以当做方法注解,写在类前就是类注解,写在方法前就是方法注解

这个就相当于是地址,告诉别人到哪里去哪里获取东西,加载类前面是类路径,在方法前面是方法路径

资源路径=类路径+方法路径

之所以这样写,是为了提高可读性和避免发生错误

举例(post和get请求)

Fiddler抓包之后,可以看到get请求是可以的

使用postman模拟post请求

Post请求正常,说明RequestMapping可以支持get和post请求

RequestMapping支持所有的HTTP请求,上述只是演示了两个

GETMapping

只支持get方法去访问,使用其他方法的时候会报错

服务器使用GET的时候,如果使用POST请求去访问就会被拦截,404,客户端错误,无法找到该资源

POSTMapping

只支持post请求,使用其他的会报错404

同样的道理,后端使用post,访问使用get,就会404,找不到该资源

总结

直接使用RequestMapping解决百分之九十九的问题

传参

传一个参

可以正常传参

那如果是传入不同的类型呢

直接就是报错,说明传入不同的类型,会报错

引用类型和基本类型

在引用类型的时候,不传入会默认是null,在基本类型的时候,必须要传参数,否则就会报错

传多个参数(类)

传递数组

传递数组之间,需要使用逗号隔开,或者分多次发送

传递集合

使用RequestParam去接收表单的参数

重命名RequestParam

假设前端叫做A,如果我们不想要叫做A,可以使用RequestParam去重命名

如果类型不一样,就会报错,进行绑定的时候,需要注意参数是否一样

传递json

Spring框架已经帮我写好了转义的过程了,从json转成可以识别的java对象,在之前,这个部分是需要自己写的

抓包可以看到

转换过程

这一步Spring框架已经帮我们做好了,所以就不需要再手动去转换了

注意:1. Java转成json的时候,需要有get方法,不然就会报错

2.json转换成java的时候,需要有一个为空的构造方法,不然初始化对象就会报错

在url中获取信息

会根据url中的信息,去获取到对应的信息

上传文件

Spring封装好了fileinputstream和fileoutputsream,不需要我们去读写,直接调用transferto就可以了。

HttpServletRequest,这个类是用来模拟http请求的,在请求里的全部东西,都可以使用这个获取

取出cookie

添加cookie的时候需要注意在postman中的域名要一样

使用注解的方式(不常用,因为只能获取一个,不能读取多个cookie)

Session

可以看到getsession有两个构造函数,没有写boolean值的默认是true,即当这个session不存在的时候,会创建一个新的,使用false的时候,不存在就会返回一个null

Session的三种获取方式

三种方式都可以

头部中的其他元素

如header的User-Agent

总结

@SpringBootApplication

类注解,这个注解表示的是启动类,启动这个就启动了整个程序

@RequestMapping

类注解和方法注解,包含所有的http请求,表示映射的路径,说人话就是门牌号

@PostMapping

@GetMapping

类注解和方法注解,表示只能通过这种方式才能访问

@RequestParam

参数注解,专门用来接收URL\表单中的数据,用来绑定参数的

@RequestBody

参数注解,专门用来接收json,xml这种格式的

MultipartFile

专门用来上传文件的,Spring中封装好了文件IO

HttpServletRequest

Spring中封装好的http请求,通过这个可以获取到请求中的任何东西

@CookieValue

参数注解,专门用来获取cookie的,缺点太明显了,一次只能获取一个,不如直接使用HttpServletRequest

@SessionAttribute

参数注解,专门用来获取session对象的

@RequestHeader

参数注解,专门用来获取header部分的

真神

HttpServletRequest request

相关推荐
IT_Octopus2 小时前
Java Protobuf+Zstd 压缩存储Redis实践&问题解决&对比Gzip压缩的大小和性能
java·开发语言·redis
网安_秋刀鱼2 小时前
【java安全】URL链拆解
java·开发语言·安全·web安全·网络安全
翻斗花园岭第一爆破手2 小时前
flutter2:Container的简介与尺寸
java·服务器·前端
二十雨辰2 小时前
[SSM]SpringMVC快速入门
java·spring
Seven972 小时前
动态规划
java
BF06242 小时前
EPICS Archiver Appliance部署Quickstart方式
java·tomcat
杜子不疼.3 小时前
Spring AI 与向量数据库:构建企业级 RAG 智能问答系统
数据库·人工智能·spring
想不明白的过度思考者4 小时前
Spring Boot 配置文件深度解析
java·spring boot·后端
第二只羽毛4 小时前
Java图书管理系统的设计与实现
java·大数据·安全·系统安全