news 2026/4/18 11:03:42

SpringMVC——json数据传递参数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringMVC——json数据传递参数

目录

  • json数组
  • json对象(POJO)
  • json数组(POJO)
  • 注意

json数组

pom.xml

<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_paramMavenWebapp</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

package com.baidu.config;importorg.springframework.web.filter.CharacterEncodingFilter;importorg.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;importjavax.servlet.Filter;publicclassServletContainersInitConfigextendsAbstractAnnotationConfigDispatcherServletInitializer{protectedClass<?>[]getRootConfigClasses(){returnnewClass[0];}protectedClass<?>[]getServletConfigClasses(){returnnewClass[]{SpringMvcConfig.class};}protectedString[]getServletMappings(){returnnewString[]{"/"};}protectedFilter[]getServletFilters(){CharacterEncodingFilterfilter=newCharacterEncodingFilter();filter.setEncoding("UTF-8");returnnewFilter[]{filter};}}

SpringMvcConfig

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

UserController

package com.baidu.controller;importcom.baidu.domain.User;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.ResponseBody;importjava.util.Arrays;importjava.util.List;@ControllerpublicclassUserController{@RequestMapping("/listParamForJson")@ResponseBodypublicStringlistParamForJson(@RequestBodyList<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

package com.baidu.domain;publicclassUser{privateStringname;private int age;privateAddressaddress;publicUser(){}publicUser(Stringname,int age,Addressaddress){this.name=name;this.age=age;this.address=address;}/** * 获取 * @return name */publicStringgetName(){returnname;}/** * 设置 * @param name */publicvoidsetName(Stringname){this.name=name;}/** * 获取 * @return age */public intgetAge(){returnage;}/** * 设置 * @param age */publicvoidsetAge(int age){this.age=age;}/** * 获取 * @return address */publicAddressgetAddress(){returnaddress;}/** * 设置 * @param address */publicvoidsetAddress(Addressaddress){this.address=address;}publicStringtoString(){return"User{name = "+name+", age = "+age+", address = "+address+"}";}}

Address

package com.baidu.domain;publicclassAddress{privateStringprovince;privateStringcity;publicAddress(){}publicAddress(Stringprovince,Stringcity){this.province=province;this.city=city;}/** * 获取 * @return province */publicStringgetProvince(){returnprovince;}/** * 设置 * @param province */publicvoidsetProvince(Stringprovince){this.province=province;}/** * 获取 * @return city */publicStringgetCity(){returncity;}/** * 设置 * @param city */publicvoidsetCity(Stringcity){this.city=city;}publicStringtoString(){return"Address{province = "+province+", city = "+city+"}";}}

json数组(POJO)

注意

@RequestBody@RequestParam区别

前者用于接收json数据
后者用于接收url地址传参,表单传参

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 15:25:17

Redis+Lua实现分布式限流时,确保高可用性和性能优化

要确保基于 RedisLua 的分布式限流器的高可用与高性能&#xff0c;可以从 Redis 架构、Lua 脚本、降级策略、性能优化 和 运维监控 五个核心方面入手。&#x1f6e1;️ 高可用&#xff1a;保障 Redis 稳定运行Redis 部署架构 主从 哨兵&#xff1a;实现故障自动切换&#xff0…

作者头像 李华
网站建设 2026/4/18 8:34:53

计算机毕业设计springboot实习生校内事务管理系统 基于Spring Boot的实习生校园事务综合管理系统 Spring Boot驱动的实习生校内事务信息化平台

计算机毕业设计springboot实习生校内事务管理系统b29h3 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着信息化时代的快速发展&#xff0c;传统的实习生校内事务管理方式面临…

作者头像 李华
网站建设 2026/4/18 5:31:46

USB2.0入门教程:枚举过程的核心要点解析

USB2.0枚举全解析&#xff1a;从插入到识别的底层真相你有没有遇到过这样的情况——把一个自制的USB设备插进电脑&#xff0c;系统却弹出“未知USB设备”的提示&#xff1f;或者设备反复断开重连&#xff0c;像在跟你玩捉迷藏&#xff1f;问题很可能出在一个你没怎么注意、但至…

作者头像 李华
网站建设 2026/4/18 7:02:48

Proteus示波器捕捉上升沿的实用技巧解析

用Proteus示波器精准捕捉上升沿&#xff1a;从配置到实战的完整指南在嵌入式系统和数字电路开发中&#xff0c;一个微小的时序偏差可能引发连锁故障。你是否曾遇到这样的情况&#xff1a;仿真运行正常&#xff0c;但单片机始终不响应中断&#xff1f;或者SPI通信偶尔丢帧&#…

作者头像 李华
网站建设 2026/4/18 6:58:29

MOSFET驱动电路中米勒效应应对策略

如何让MOSFET不“误开机”&#xff1f;深度拆解米勒效应与实战驱动设计你有没有遇到过这样的情况&#xff1a;电路明明已经关断了MOSFET&#xff0c;可它却在关键时刻偷偷导通&#xff0c;导致上下桥臂短路、炸管、冒烟&#xff1f;别急&#xff0c;这很可能不是代码的问题&…

作者头像 李华
网站建设 2026/4/18 8:26:28

MyBatis查询映射终极指南:resultType与resultMap该如何选择?

在MyBatis开发中,select查询的结果映射是核心环节之一,也是新手最容易混淆的知识点——到底该用resultType还是resultMap?什么时候用简单的resultType就能搞定,什么时候又必须写复杂的resultMap? 本文将从底层原理、核心区别、适用场景、实操案例四个维度,彻底讲清两者的…

作者头像 李华