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

相关推荐
程序员欣宸17 小时前
LangChain4j实战之十二:结构化输出之三,json模式
java·人工智能·ai·json·langchain4j
秃了也弱了。19 小时前
FASTJSON库:阿里出品java界json解析库,使用与踩坑记录
java·开发语言·json
..过云雨21 小时前
应用层自定义协议与序列化一站式指南
网络协议·tcp/ip·json·信息与通信
eggcode1 天前
C#读写Bson格式的文件
c#·json·bson
电商API&Tina1 天前
电商数据采集 API:驱动选品、定价、运营的数据分析核心引擎
大数据·开发语言·人工智能·python·数据分析·json
ID_180079054732 天前
闲鱼商品详情API接口基础架构解析
json
wtsolutions2 天前
Sheet-to-Doc数据格式支持:JSON/JSONL/CSV全解析
json
麦聪聊数据3 天前
MySQL 性能调优:从EXPLAIN到JSON索引优化
数据库·sql·mysql·安全·json
wtsolutions3 天前
Sheet-to-Doc高级功能:循环占位符的使用技巧
json·word·wtsolutions·sheet-to-doc