SpringMVC——json数据传递参数

目录

json数组

pom.xml

dart 复制代码
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>springmvc_04_request_param</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>springmvc_04_request_param Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>

  </dependencies>


  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <port>80</port>
          <path>/</path>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

ServletContainersInitConfig

dart 复制代码
package com.baidu.config;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.Filter;

public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        return new Filter[]{filter};
    }
}

SpringMvcConfig

@EnableWebMvc注解功能强大,整合了多个功能,这里只用到了json数据进行自动类型转换功能

UserController

dart 复制代码
package com.baidu.controller;
import com.baidu.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Arrays;
import java.util.List;
@Controller
public class UserController {

    @RequestMapping("/listParamForJson")
    @ResponseBody
    public String listParamForJson(@RequestBody List<String> likes){
        System.out.println("json ==> " + likes);
        return "'module':'list common for json param'}";
    }


//    @RequestMapping("/commonParam")
//    @ResponseBody
//    public String commonParam(String name, int age) {
//        System.out.println("name=>" + name);
//        System.out.println("age=>" + age);
//        return "{'module':'common param'}";
//    }
//    //    普通参数:请求参数名与形参名不同
//    @RequestMapping("/commonParamDifferentName")
//    @ResponseBody
//    public String commonParamDifferentName(@RequestParam("name") String userName, int age) {
//        System.out.println("userName=>" + userName);
//        System.out.println("age =>" + age);
//        return "{'module':'common param different name'}";
//    }
//
//
//    @RequestMapping("/pojoParam")
//    @ResponseBody
//    public String pojoParam(User user){
//        System.out.println(" user ==> " + user);
//        return "{'module':'pojo param' }"   ;
//    }
//    @RequestMapping("/arrayParam")
//    @ResponseBody
//    public String arrayParam(String[] likes){
//        System.out.println("likes ==> " + Arrays.toString(likes));
//        return "{'module':'array param'}";
//    }
//    @RequestMapping("/listParam")
//    @ResponseBody
//    public String listParam(@RequestParam List<String> likes){
//        System.out.println("likes   ===> " + likes);
//        return "{'module': 'list param' }";
//    }
}

@RequestBody是将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次

json对象(POJO)

User

dart 复制代码
package com.baidu.domain;

public class User {

    private String name;
    private int age;

    private Address address;


    public User() {
    }

    public User(String name, int age, Address address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return address
     */
    public Address getAddress() {
        return address;
    }

    /**
     * 设置
     * @param address
     */
    public void setAddress(Address address) {
        this.address = address;
    }

    public String toString() {
        return "User{name = " + name + ", age = " + age + ", address = " + address + "}";
    }
}

Address

dart 复制代码
package com.baidu.domain;

public class Address {
    private String province;
    private String city;


    public Address() {
    }

    public Address(String province, String city) {
        this.province = province;
        this.city = city;
    }

    /**
     * 获取
     * @return province
     */
    public String getProvince() {
        return province;
    }

    /**
     * 设置
     * @param province
     */
    public void setProvince(String province) {
        this.province = province;
    }

    /**
     * 获取
     * @return city
     */
    public String getCity() {
        return city;
    }

    /**
     * 设置
     * @param city
     */
    public void setCity(String city) {
        this.city = city;
    }

    public String toString() {
        return "Address{province = " + province + ", city = " + city + "}";
    }
}

json数组(POJO)

注意

@RequestBody@RequestParam区别

前者用于接收json数据

后者用于接收url地址传参,表单传参

后期开发中,发送json格式数据为主,前者应用较广

如果发送非json格式数据,选用后者

相关推荐
她说..8 小时前
MySQL 与 Java 的 JSON 数据处理
java·mysql·json·springboot
牛油果子哥q1 天前
C++对接LLM完整工程:异步HTTP请求、JSON解析、超时容错、重连兜底
c++·http·json
小刘在重生~1 天前
Django|Ajax 入门、JSON 返回、ECharts 图表、文件上传完整笔记
ajax·django·json
谢斯3 天前
[unity]如何在unity中添加newtonsoft-json
unity·json·游戏引擎
2601_962066934 天前
短视频批量制作怎么做?2026年用 huasheng-cli 的 --json 与退出码,一张选题表批量出片
json·音视频
oliver_sys_log5 天前
老项目 json-lib 2.4 JSONTokener 精度丢失问题排查
json
IT_Octopus5 天前
JSON 日志里的 `{“$ref“:“$.xxx“}`:从 fastjson 兼容包到原生 fastjson2 的迁移实录
开发语言·python·json
数据狐(Datafox)5 天前
mercadolibre.item_get 工程实战:美客多商品详情API技术解析与落地应用
java·人工智能·mysql·json
Fcy6485 天前
Linux下 应⽤层⾃定义协议与序列化(JSON方法)
linux·json
半亩码田6 天前
C#转Python第4.4篇:JSON 处理:json 模块 vs System.Text.Json
python·c#·json