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格式数据,选用后者

相关推荐
说给风听.11 小时前
零基础学 JSON:原理、语法与应用全解析
json
天若有情67315 小时前
XiangJsonCraft v1.2.0重大更新解读:本地配置优先+全量容错,JSON解耦开发体验再升级
前端·javascript·npm·json·xiangjsoncraft
Sylvia33.18 小时前
足球“文字直播/事件流”API详解:解码比赛的数字DNA
java·服务器·前端·json
Elieal20 小时前
统一 JSON 格式,JacksonObjectMapper 定制 Spring Boot JSON 转换规则
spring boot·json·状态模式
像风一样自由20202 天前
解决百度网盘安装报错:D 盘 package.json 触发 Electron ESM/CJS 冲突
javascript·electron·json
灰太狼大王灬2 天前
OCR-RenameStudio是一个基于 PaddleOCR-json的桌面工具——Umi-OCR 智能重命名助手
json·ocr
Knight_AL2 天前
Spring Boot + Docker:实现可挂载可热更新的 config.json
spring boot·docker·json
树码小子2 天前
SpringMVC(3):传递 Json
spring·json·mvc
芋头莎莎3 天前
基于MQTT通讯UNIapp程序解析JSON数据
前端·uni-app·json
研☆香3 天前
介绍一下JSON数据
json