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

相关推荐
Geoking.20 小时前
【设计模式】策略模式(Strategy)详解:把 if-else 变成可切换的算法
java·设计模式·策略模式
代码改变生活-12020 小时前
idea 清除缓存之后重启项目编译失败
java·缓存·intellij-idea
Microsoft Word20 小时前
HashMap面试题总结
java·开发语言
stillaliveQEJ20 小时前
【MyBatis】DML映射
java·mybatis
我来整一篇20 小时前
[Razor] ASP.NET Core MVC 前端组件快速使用总结
前端·asp.net·mvc
qq_124987075320 小时前
基于SSM框架的智能密室逃脱信息管理系统(源码+论文+部署+安装)
java·大数据·人工智能·spring boot·后端·毕业设计·计算机毕业设计
ekkcole20 小时前
java实现对excel文件合并单元格(只针对文件)
java·开发语言·excel
no245441020 小时前
RAGFlow 全面接入 MinerU 2.0,支持 pipeline、vlm-transformers、vlm-sglang 三种模式,解析精度大幅度up
java·大数据·人工智能·python·ai·sglang
lkbhua莱克瓦2421 小时前
MySQL事务隔离级别:从并发混乱到数据一致性守护者
java·数据库·mysql·隔离级别