广告位联系
返回顶部
分享到

SpringMvc接受请求参数的几种情况演示

java 来源:转载 作者:秩名 发布时间:2021-07-25 13:55:27 人浏览
摘要

说明: 通常get请求获取的参数是在url后面,而post请求获取的是请求体当中的参数。因此两者在请求方式上会有所不同。 1.直接将接受的参数写在controller对应方法的形参当中(适用于get提交方式) /** * 1.直接把表单的参数写在Controller相应的方法的形参中

说明:

通常get请求获取的参数是在url后面,而post请求获取的是请求体当中的参数。因此两者在请求方式上会有所不同。  

1.直接将接受的参数写在controller对应方法的形参当中(适用于get提交方式)

/**
     * 1.直接把表单的参数写在Controller相应的方法的形参中
     *
     * @param username
     * @param password
     * @return
     */
    @GetMapping("/addUser1")
    public String addUser1(String username, String password) {
        System.out.println ("username is:" + username);
        System.out.println ("password is:" + password);
        return username + "," + password;
    }

2.通过url请求路径获取参数
 
/**
     * 2、通过@PathVariable获取路径中的参数
     *
     * @param username
     * @param password
     * @return
     */
    @RequestMapping(value = "/addUser4/{username}/{password}", method = RequestMethod.GET)
    public String addUser4(@PathVariable String username, @PathVariable String password) {
        System.out.println ("username is:" + username);
        System.out.println ("password is:" + password);
        return "addUser4";
    }

  3.通过request请求对象来接受发来的参数信息(Get请求方式或者时Post请求方式都可以)

/**
     * 3、通过HttpServletRequest接收
     *
     * @param request
     * @return
     */
    @RequestMapping("/addUser2")
    public String addUser2(HttpServletRequest request) {
        String username = request.getParameter ("username");
        String password = request.getParameter ("password");
        System.out.println ("username is:" + username);
        System.out.println ("password is:" + password);
        return "demo/index";
    }

4.封装JavaBean对象的方式来接受请求参数(get方式与post方式都可以)

4.1首先在模块当中创建对应的JavaBean,并提供相应的get,set方法。
 
package com.example.demo.pojo;

import lombok.Data;

@Data
public class User1 {
    private String username;
    private String password;
}

4.2Controller层

/**
     * 4、通过一个bean来接收
     *
     * @param user
     * @return
     */
    @RequestMapping("/addUser3")
    public String addUser3(User1 user) {
        System.out.println ("username is:" + user.getUsername ( ));
        System.out.println ("password is:" + user.getPassword ( ));
        return "/addUser3";
    }

5.使用注解@RequestParam注解将请求参数绑定到Controller层对应方法的形参当中

/**
     * 5、用注解@RequestParam绑定请求参数到方法入参
     * @param username
     * @param password
     * @return
     */
    @RequestMapping(value="/addUser6",method=RequestMethod.GET)
    public String addUser6(@RequestParam("username") String username,@RequestParam("password") String password) {
        System.out.println("username is:"+username);
        System.out.println("password is:"+password);
        return "demo/index";
    }

下面介绍,发送json格式的请求,接受数据的情况:

1.将json请求的key,value值封装到实体对象的属性当中(通常将参数放在请求体body中,以application/json格式被后端获取)

 

1.1创建一个实体类

public class User2 implements Serializable {
    private static final long serialVersionUID = 1L;
    @JsonProperty(value = "id")
    private Integer id;
    @JsonProperty(value = "name")
    private String name;
    @JsonProperty(value = "age")
    private Integer age;
    @JsonProperty(value = "hobby")
    private List<String> hobby;
/**
     *将json请求的key,value封装到实体对象当中。
     * @param user
     * @return
     */
    @PostMapping("/save")
    public String saveUser(@RequestBody User2 user) {
//        list.add(user);
//        User2 user2 = new User2 (  );
//        user2.setId (user.getId ());
//        user2.setAge (user.getAge ());
//        user2.setName (user.getName ());
//        user2.setHobby (user.getHobby ());
        return "success"+user;
    }

2.将json请求的key,value值封装到request对象的属性当中(通常请求参数放body中,将content-type改为x-www-form-urlencoded)

/**
     * 将请求参数封装到request对象当中。
     * @param request
     * @return
     */
    @PostMapping("/save2")
    public User2 save(HttpServletRequest request) {
        Integer id = Integer.parseInt(request.getParameter("id"));
        String name = request.getParameter("name");
        Integer age = Integer.parseInt(request.getParameter("age"));
        String parameter = request.getParameter("hobby");
        List<String> stringList = new ArrayList<> (  );

        String[] split = parameter.split (",");
        for (int i = split.length - 1; i >= 0; i--) {
            stringList.add (split[i]);
        }

        User2 user2 = new User2(id, name, age, stringList);
//        list.add(user);
        return user2;
    }

3.通过http协议,将json参数转成JSONOBject对象

3.1Controller层接受JSON参数

/**
     * 通过http协议将参数转为jsonobject
     * @param request
     * @return
     * @throws IOException
     * @throws JSONException
     */
    @PostMapping("/save3")
    public User2 save3(HttpServletRequest request) throws IOException, JSONException {

        JSONObject jsonObject = handlerData(request);
        Integer id = jsonObject.getInteger("id");
        String name = jsonObject.getString("name");
        Integer age = jsonObject.getInteger("age");
        List<String> hobby = jsonObject.getObject("hobby", List.class);
        User2 user3 = new User2 (id, name, age, hobby);
//        list.add(user);
        return user3;
    }

3.2通过以下方法将Json字符串转成Jsonobject对象
 
//这里使用的是alibaba的json工具类
    public static JSONObject handlerData(HttpServletRequest request) throws IOException, JSONException {
        StringBuffer sb = new StringBuffer();
        InputStream is = request.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader (is, "utf-8"));
        String s = "";
        while ((s = br.readLine()) != null) {
            sb.append(s);
        }
        if (sb.toString().length() <= 0) {
            return null;
        } else {
            return JSONObject.parseObject(sb.toString());
        }
    }

4.将json格式的请求参数封装到hashmap的key,value键-值对当中。(json字符串串放在body中,请求格式为application/json格式)
 
/**
     *将json请求的Key,value封装到map的key,value当中去。
     * @param map
     * @return
     */
    @PostMapping("/save1")
    public User2 saveUser1(@RequestBody Map<String, Object> map) {
        Integer id = (Integer) map.get("id");
        String name = (String) map.get("name");
        Integer age = (Integer) map.get("age");
        List<String> hobby=(List<String>) map.get("hobby");
        User2 user = new User2(id, name, age, hobby);
//        list.add(user);
        return user;
    }

该文档主要是学习以下两篇文档的总结:

https://www.cnblogs.com/lirenhe/p/10737673.html

https://blog.csdn.net/zyxwvuuvwxyz/article/details/80352712


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://www.cnblogs.com/wangjie-logs/p/15054136.html
相关文章
  • SpringBoot自定义错误处理逻辑介绍

    SpringBoot自定义错误处理逻辑介绍
    1. 自定义错误页面 将自定义错误页面放在 templates 的 error 文件夹下,SpringBoot 精确匹配错误信息,使用 4xx.html 或者 5xx.html 页面可以打印错误
  • Java实现手写一个线程池的代码

    Java实现手写一个线程池的代码
    线程池技术想必大家都不陌生把,相信在平时的工作中没有少用,而且这也是面试频率非常高的一个知识点,那么大家知道它的实现原理和
  • Java实现断点续传功能的代码

    Java实现断点续传功能的代码
    题目实现:网络资源的断点续传功能。 二、解题思路 获取要下载的资源网址 显示网络资源的大小 上次读取到的字节位置以及未读取的字节
  • 你可知HashMap为什么是线程不安全的
    HashMap 的线程不安全 HashMap 的线程不安全主要体现在下面两个方面 在 jdk 1.7 中,当并发执行扩容操作时会造成环形链和数据丢失的情况 在
  • ArrayList的动态扩容机制的介绍

    ArrayList的动态扩容机制的介绍
    对于 ArrayList 的动态扩容机制想必大家都听说过,之前的文章中也谈到过,不过由于时间久远,早已忘却。 所以利用这篇文章做做笔记,加
  • JVM基础之字节码的增强技术介绍

    JVM基础之字节码的增强技术介绍
    字节码增强技术 在上文中,着重介绍了字节码的结构,这为我们了解字节码增强技术的实现打下了基础。字节码增强技术就是一类对现有字
  • Java中的字节码增强技术

    Java中的字节码增强技术
    1.字节码增强技术 字节码增强技术就是一类对现有字节码进行修改或者动态生成全新字节码文件的技术。 参考地址 2.常见技术 技术分类 类
  • Redis BloomFilter布隆过滤器原理与实现

    Redis BloomFilter布隆过滤器原理与实现
    Bloom Filter 概念 布隆过滤器(英语:Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射
  • Java C++算法题解leetcode801使序列递增的最小交换次

    Java C++算法题解leetcode801使序列递增的最小交换次
    题目要求 思路:状态机DP 实现一:状态机 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Solution { public int minSwap(int[] nums1, int[] nums2) { int n
  • Mybatis结果集映射与生命周期介绍

    Mybatis结果集映射与生命周期介绍
    一、ResultMap结果集映射 1、设计思想 对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了 2、resultMap的应用场
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计