Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header)

这篇具有很好参考价值的文章主要介绍了Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.获取参数

1.1获取单个参数

1.2获取多个参数

传参注意事项:

2.获取对象

 3.后端参数重命名@RequestParam

4.获取JSON对象@RequestBody

5.从 URL 地址中获取参数 @PathVariable

6.上传文件 @RequestPart

7.获取Cookie/Session/Header

7.1 获取 Request 和 Response 对象

7.2 获取Cookie

(1)Servlet 获取 Cookie 的方法

 (2)使用 @CookieValue 注解实现 Cookie 的读取

7.3 获取Header(请求头)中信息

(1)Servlet 获取 Header 的方法

 (2)使用 @RequestHeader 注解实现 Header 的获取

7.4 存储和获取 Session

(1)Session 存储和 Servlet 类似,是使⽤ HttpServletRequest 中获取的

(2)获取 Session 方法1(Servlet 模式)

(3)获取 Seesion 方法2:@SessionAttribute


1.获取参数

1.1获取单个参数

在 Spring MVC 中可以直接用方法中的参数来实现传参:

   @GetMapping("/hi") //等于@RequestMapping("/hi")
   //都能实现映射的功能
    public String sayHi(String name) {
        return "Hi:" + name;
    }

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header),spring,mvc,json,spring boot,java,后端

1.2获取多个参数

  @GetMapping("/hi") //等于@RequestMapping("/hi")
  //都能实现映射的功能
    public String sayHi(String name,Integer v) {
        return "Hi:" + name + "  v:" + v;
    }

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header),spring,mvc,json,spring boot,java,后端

传参注意事项:

在 Spring Boot(Spring MVC) 中传参一定要传包装类型,而非基础类型,否则传一个空的值就会出错, 并且这里的参数一定要和前端传递的参数名保持一致,否则就获取不到参数的值了

2.获取对象

并且Spring MVC可以自动实现参数对象的赋值,比如User对象;

@Data
public class User {
    private int id;
    private String name;
    private int age;
    //....
}
//普通对象
    @GetMapping("/show-User")
    public String showUser(User user){
        return user.toString();
    }

 Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header),spring,mvc,json,spring boot,java,后端

 3.后端参数重命名@RequestParam

有些特殊情况下,前端传递的参数 key 和我们后端接收的 key 可以不一致,比如前端传递了一个 time 给后端,而后端又是用 createtime 字段来接收的,这样就会出现参数接收不到的情况,如果出现这种情况,我们就可以使用 @RequestParam 来重命名前后端的参数值

@GetMapping("/show-Time")
    public String showTime(@RequestParam("t") String startTime,
                           @RequestParam(value = "t2") String endTime){

        return "开始时间:" + startTime +" 结束时间:" + endTime ;
    }

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header),spring,mvc,json,spring boot,java,后端

 注意:

我们观察@RequestParam源码可以看到:

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header),spring,mvc,json,spring boot,java,后端

 这里代表如果使用@RequestParam的话,前端一定要传递参数,否则就会报错,但是如果我们在代码中加入Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header),spring,mvc,json,spring boot,java,后端

就可以不用带参数了

4.获取JSON对象@RequestBody

服务器端实现 JSON 数据的接收需要使用 @RequestBody 注解:

    //接收json对象(和第三方系统通讯时常见的场景)
    @PostMapping("/show-jsonUser")//@RequestBody指定的就是接受一个json对象,需要配合PostMapping来使用
    public String showJsonUser(@RequestBody User user){
        return user.toString();
    }

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header),spring,mvc,json,spring boot,java,后端

5.从 URL 地址中获取参数 @PathVariable

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header),spring,mvc,json,spring boot,java,后端

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header),spring,mvc,json,spring boot,java,后端

6.上传文件 @RequestPart

@RequestMapping("/upfile")
    public String upfile(@RequestPart("myfile")MultipartFile file) throws IOException {
        String path = "D:\\Desktop\\img.png";
        //保存文件
        file.transferTo(new File(path));
        return path;
    }

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header),spring,mvc,json,spring boot,java,后端

文件上传我们使用这样的方法的话就存在一个问题:我们传输文件的地址是固定的,当李四传输了文件,张三再传输的时候,李四传输的文件就被覆盖了

7.获取Cookie/Session/Header

7.1 获取 Request 和 Response 对象

@GetMapping("/getparam")
    //HttpServletRequest req 是spring boot/spring MVC 内置的,不用去传,当其项目启动的时候就直接注入了,不用传,本身就有
    //HttpServletRespond 同样也内置了
    public String getParam(HttpServletRequest req){
        return req.getParameter("username");
    }

7.2 获取Cookie

(1)Servlet 获取 Cookie 的方法

 @RequestMapping("/getck")
    public String getCookie(HttpServletRequest request){
        Cookie[] cookies = request.getCookies();
        for (Cookie item:cookies){
            log.error(item.getName() + ":" + item.getValue());
        }
        return "get Cookie!";
    }

 (2)使用 @CookieValue 注解实现 Cookie 的读取

 @RequestMapping("/getck2")
    public String getCookie2(@CookieValue("awen") String val){
        return "Cookie value" + val;
    }

这里我是手动在浏览器中加入Cookie信息的

7.3 获取Header(请求头)中信息

(1)Servlet 获取 Header 的方法

 @RequestMapping("/getUa")
    public String gerUa(@RequestHeader("user-agent") String userAgent){
        return userAgent;
    }

 (2)使用 @RequestHeader 注解实现 Header 的获取

    @RequestMapping("getua2")
    public String getHead(@RequestHeader("User-Agent")String userAgent) {
        return "header: " + userAgent;
    }

7.4 存储和获取 Session

获取session:

和servlet时代存session是一样的,没有注解

存session信息:

(1)Session 存储和 Servlet 类似,是使⽤ HttpServletRequest 中获取的

  @RequestMapping("/setsess")
    //存session
    public String setSession(HttpServletRequest request){
        HttpSession session = request.getSession(true);
        session.setAttribute("userinfo","userinfo");
        return "Set Session Succeed";
    }

(2)获取 Session 方法1(Servlet 模式)

  @RequestMapping("/getsess")
    public String getSession(HttpServletRequest request){
        HttpSession session = request.getSession(false);//一定要加false
        if (session !=null && session.getAttribute("userinfo") != null){
            return (String) session.getAttribute("userinfo");
        }else {
            return "暂无 Session 信息";
        }
    }

(3)获取 Seesion 方法2:@SessionAttribute

  @RequestMapping("getsess2")
    //false 表示没有这个session也行
    public String getSession2(@SessionAttribute(value = "userinfo",required = false)String userinfo){
        return userinfo;
    }

我们观测到@SessionAttribute的源码中:

Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header),spring,mvc,json,spring boot,java,后端

意味着必须要有属性,通常情况下需要添加 required = false ,如果不添加,那么当 session 中不存在此属性的时候程序运行就会报错文章来源地址https://www.toymoban.com/news/detail-602456.html

到了这里,关于Spring MVC -- 获取参数(普通对象+JSON对象+URL地址参数+文件+Cookie/Session/Header)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 获取url地址后面参数的2种方法(小程序二维码跳转参数解析)

            微信扫描小程序二维码后,在页面的onLoad函数的参数options内可以拿到跳转参数scene值,但是需要对scene进行decodeURIComponent操作,方法如下: 方法一: 方法二:

    2024年02月17日
    浏览(54)
  • vue 中从后端获取到文件的 url 地址,前端根据 url 地址下载文件

    项目用的是 vben admin 框架,用的是 vue3 + TS 项目需求数据导出功能,前端需要实现文件下载功能 后端返回的是文件的 url 地址 (本项目中返回的是阿里云 oss 的文件地址) 从后端得到的是一个 url 地址,先通过 fetch api 请求这个 url 地址并转换成 blob 对象,通过 URL.createObjectUrl() 将 blo

    2024年02月06日
    浏览(49)
  • js 通过文件地址URL转为File文件对象

    通过文件地址URL,将所指文件转为File文件对象 文件url地址转为文件对象,代码如下(调用即可): 2.调用方式 代码如下(示例):

    2024年02月10日
    浏览(46)
  • Java 根据网络地址URL获取文件

    系统需要根据提供的文件地址URL获取该文件,代码实现如下:

    2024年02月11日
    浏览(53)
  • Spring MVC获取参数和自定义参数类型转换器及编码过滤器

    目录   一、使用Servlet原生对象获取参数 1.1 控制器方法 1.2 测试结果 二、自定义参数类型转换器 2.1 编写类型转换器类 2.2 注册类型转换器对象  2.3 测试结果  三、编码过滤器 3.1 JSP表单 3.2 控制器方法 3.3 配置过滤器 3.4 测试结果  往期专栏文章相关导读  1. Maven系列专

    2024年02月10日
    浏览(65)
  • 【Spring MVC】获取 @RequsetBody 标识的对象,使用适配器模式增加代码可读性

    一个技术需求引发的思考和实践: 思考 用 AOP 把校验代码 实践 用 Spring MVC 的 RequestBodyAdvice 做AOP逻辑 继承 RequestBodyAdviceAdapter 实现自己的 适配器 用自己的适配器让代码可读性增加 熟悉 Spring MVC 、Java 反射的一些实践 本文内容 澄清一个AOP校验JSON内容的思路 复习适配器模式

    2024年02月10日
    浏览(44)
  • Spring Batch 作业对象-作业参数设置与获取

    目录 引言 JobParameters 作业参数设置 作业参数获取 方案1:使用ChunkContext类   方案2:使用@Value 延时获取 转视频版 书接上篇Spring Batch批处理-作业Job简介,上篇带小伙伴们了解色作业Job对象,那这篇就看一下作业参数是啥一回事,同时要怎么设置参数并获取参数的。 前面提到

    2023年04月15日
    浏览(46)
  • 【Spring Boot】请求参数传json对象,后端采用(pojo)CRUD案例(102)

    请求参数传json对象,后端采用(pojo)接收的前提条件: 1.pom.xml文件加入坐标依赖:jackson-databind 2.Spring Boot 的启动类加注解:@EnableWebMvc 3.Spring Boot 的Controller接受参数采用:@RequestBody 4.postman入参采用json格式 1.pom.xml文件加入坐标: 2.Spring Boot 启动类:加注解:@EnableWebMvc POJO类

    2024年02月14日
    浏览(41)
  • Spring-Cloud-Gateway修改请求(json,form带文件请求)参数,返回值参数

    新项目需要在getway统一做入参、出参加解密,记录日志。记录一下form,x-www-form-urlencoded , json 这几种修改数据的方式。 gateway做拦截器是实现GlobalFilter接口,修改json方式网上有很多文章,后来又想研究研究能不能实现修改form-data参数,以及文件请求,后者文章不多大部分是怎

    2024年02月16日
    浏览(47)
  • springBoot 配置文件 spring.mvc.throw-exception-if-no-handler-found 参数的作用

    在Spring Boot应用中,可以通过配置文件来控制当找不到请求处理器(handler)时是否抛出异常。具体的配置参数是 spring.mvc.throw-exception-if-no-handler-found 。 默认情况下,该参数的值为 false ,即当找不到请求处理器时,Spring MVC会返回404 Not Found响应。如果将该参数设置为 true ,则当

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包