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日
    浏览(10)
  • vue 中从后端获取到文件的 url 地址,前端根据 url 地址下载文件

    vue 中从后端获取到文件的 url 地址,前端根据 url 地址下载文件

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

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

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

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

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

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

    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日
    浏览(10)
  • 【Spring MVC】获取 @RequsetBody 标识的对象,使用适配器模式增加代码可读性

    【Spring MVC】获取 @RequsetBody 标识的对象,使用适配器模式增加代码可读性

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

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

    Spring Batch 作业对象-作业参数设置与获取

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

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

    【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日
    浏览(9)
  • Spring-Cloud-Gateway修改请求(json,form带文件请求)参数,返回值参数

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

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

    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日
    浏览(9)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包