开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第33天,点击查看活动详
大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN java领域新星创作者blog.csdn.net/bug..
- 掘金LV3用户 juejin.cn/user/bug..
- 阿里云社区专家博主,星级博主,developer.aliyun.com/bug..
- 华为云云享专家 bbs.huaweicloud.com/bug..
设置参数必传(@RequestParam)
当我们加了这个注解后如果,前端的名称不匹配,就会报错!
可能你会疑惑,刚刚没重命名都只是接收不到数据而已,也不会报错呀!
为啥会这样呢?
因为我们
@RequestParam注解加上后,默认该参数必传,如果前端没有传递该名称的参数就会报错!
修改默认参数必传
@RequestParame("username",requird=false)
修改required属性值为false即可修改默认!
修改为
false后,我们没有传递username参数也不会报错!
RequestBody接收json数据
我们直接前端发送json数据给服务器:
显然服务器接收不到!
我们通过在参数上加上@RequestBody就可以接收到json数据了!
获取URL中的参数@PathVariable
@ResponseBody
@Controller
@RequestMapping("/user")
public class Path {
@GetMapping("get/{name}/{password}")
public void getPathVariable(@PathVariable String name,@PathVariable String password){
System.out.println("name:"+name);
System.out.println("password:"+password);
}
}
在参数上加上
@PathVariable注解还有在Mapping路由设置上加上对应的参数名!@GetMapping("get/{name}/{password}")
上传文件@RequestPart
@Controller
@ResponseBody
@RequestMapping("/file")
public class ParamePart {
@RequestMapping("/get")
public void getPart(@RequestPart MultipartFile file) throws IOException {
//将前端的文件保存在服务器路径
String filePath = file.getOriginalFilename();
//文件保存路径
String path = "D:/java/上传/"+filePath;
//创建文件对象
File desc = new File(path);
//该文件目录在磁盘中不存在,就创建该目录
if(!desc.exists()){
desc.mkdir();
}
//上传到该目录下
file.transferTo(desc);
}
}
未上传前
启动项目!
上传文件
注意:
上传文件默认文件最大值大小是有限制的,所以如果没有修改单次文件上传大小,上传大文件就可能会服务器报错!
获取Cookie/Session/header
@Controller
@RequestMapping("/header")
public class Param {
@RequestMapping("/get")
public void getHeader(HttpServletRequest request, HttpServletResponse response){
//这里获取cookie方式和之前Servlet一样,因为SpringMVC基于Servlet API
//获取cookie
Cookie[] cookies = request.getCookies();
System.out.println(Arrays.toString(cookies));
//获取Header中的其他信息
String UserAgent = request.getHeader("User-Agent");
System.out.println(UserAgent);
}
}
也可以通过注解
@CookieValue获取Cookie和@RequestHeader获取Header
@Controller
@RequestMapping("/header")
public class Param {
@RequestMapping("/get")
public void getHeader(HttpServletRequest request, HttpServletResponse response){
//这里获取cookie方式和之前Servlet一样,因为SpringMVC基于Servlet API
//获取cookie
Cookie[] cookies = request.getCookies();
System.out.println(Arrays.toString(cookies));
//获取Header中的其他信息
String UserAgent = request.getHeader("User-Agent");
System.out.println(UserAgent);
}
@RequestMapping("/get1")
public String get1(@RequestHeader("User-Agent") String UserAgent , @CookieValue("bug") String cookieValue){
System.out.println("UserAgent:"+UserAgent+" \n Cookie bug:"+cookieValue);
return " ";
}
}