@RequestParam注解

319 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第33天,点击查看活动详

大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

作者简介:

设置参数必传(@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 " ";
    }
}

在这里插入图片描述