当前位置: 首页 > news >正文

3.5 Spring MVC参数传递

Spring MVC的Controller接收请求参数的方式有多种,本节主要介绍Spring MVC下的HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON参数传递方式,同时解决POST请求中文乱码问题。

1. HttpServletRequest参数传递

@Controller
@RequestMapping("/param")
public class ParamController {/***  通过HttpServletRequest接收参数*/@RequestMapping("/servlet")public void servlet(HttpServletRequest request, HttpServletResponse response) throws IOException {String name = request.getParameter("name");System.out.println("name=" + name);PrintWriter writer = response.getWriter();writer.print("hello " + name);writer.flush();writer.close();}
}

2. 基本数据类型参数传递

基本数据类型以及他们的包装类。

@Controller
@RequestMapping("/param")
public class ParamController {/*** 使用基本数据类型和String类型*/@RequestMapping("/simple")@ResponseBodypublic String simple(int id, String name) throws IOException {String str = "id = " + id + ",name = " + name;System.out.println(str);return str;}
}

3. Java Bean参数传递

@Controller
@RequestMapping("/param")
public class ParamController {/*** JavaBean传递参数*/@RequestMapping(value = "/bean",produces = "text/plain;charset=UTF-8",method = RequestMethod.POST)@ResponseBodypublic String paramBean(Student student){System.out.println(student);return student.toString();}
}

4. 数组参数传递

@Controller
@RequestMapping("/param")
public class ParamController {/*** 数组参数*/
@RequestMapping(value = "/array",method = RequestMethod.POST)
@ResponseBody
public String array(String[] hobbies){for(String hobby : hobbies){System.out.println(hobby);}return "success";
}
}

5. List参数传递

@Controller
@RequestMapping("/param")
public class ParamController {/*** List参数*/
@RequestMapping(value = "/list",method = RequestMethod.POST)
@ResponseBody
public String list(@RequestParam List<String> hobbyList){hobbyList.forEach(hobby -> System.out.println(hobby));return "success";
}
}

6. Map参数传递

@Controller
@RequestMapping("/param")
public class ParamController {/*** Map参数*/
@RequestMapping(value = "/map",method = RequestMethod.POST)
@ResponseBody
public String map(@RequestParam Map<String,Object> map){System.out.println(map);return "success";
}
}

7. JSON参数传递

JSON格式采用键值对的方式来表示数据,由花括号 {} 包含对象,由方括号 [] 包含数组,可通过JSON在线解析工具进行校验/格式化,具体格式如下:

  • 对象

对象是一个无序的键/值对集合,每个键后面需要添加一个冒号(:),键/值对之间使用逗号(,)分隔。

{"id": "1","name": "zhangsan","age":20
}
  • 数组

数组可以包含多个元素,每个元素之间使用逗号(,)分隔,可以包含简单值、对象或者其他数组。

[{"id": "1","name": "zhangsan"},{"id": "2","name": "zhangsan"}
]

Spring MVC可以使用Jackson框架作为JSON的转换器。

通过@RequestBody可以将前端的JSON参数转成Java Bean、Map、List等引用类型。

通过@ResponseBody可以将后端的Java Bean、Map、List等引用类型转成JSON结果输出。

使用Jackson时需要三个jar包jackson-databind.jar、jackson-core.jar、jackson-annotations.jar。如果Spring MVC创建的是Maven项目,仅需要依赖jackson-databind,因为它传递依赖了jackson-core和jackson-annotations。

@Controller
@RequestMapping("/json")
public class JsonController {/*** json bean*/@RequestMapping(value = "/bean",method = RequestMethod.POST)@ResponseBodypublic Object bean(@RequestBody Student student){System.out.println(student);Map<String,Object> map = new HashMap<String,Object>();map.put("code",200);map.put("msg","success");map.put("data",student.toString());return map;}/*** json map*/@RequestMapping(value = "/map",method = RequestMethod.POST)@ResponseBodypublic Object map(@RequestBody Map<String,Object> jsonMap){System.out.println(jsonMap);Map<String,Object> map = new HashMap<String,Object>();map.put("code",200);map.put("msg","success");map.put("data",jsonMap);return map;}/*** json list*/@RequestMapping("/list")@ResponseBodypublic Object list(@RequestBody List<Student> studentList){System.out.println(studentList);Map<String,Object> map = new HashMap<String,Object>();map.put("code",200);map.put("msg","success");map.put("data",studentList);return map;}
}

8. Spring MVC解决POST请求中文乱码问题

Spring提供了CharacterEncodingFilter解决POST请求中的中文乱码问题,在web.xml中配置CharacterEncodingFilter。

<web-app><!--解决POST中文乱码问题 过滤器--><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>

9. Spring MVC参数传递案例

基于Spring MVC实现HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON方式的参数传递。

案例实现详见链接:案例13 Spring MVC参数传递案例

相关文章:

3.5 Spring MVC参数传递

Spring MVC的Controller接收请求参数的方式有多种&#xff0c;本节主要介绍Spring MVC下的HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON参数传递方式&#xff0c;同时解决POST请求中文乱码问题。 1. HttpServletRequest参数传递 Controller RequestM…...

linux程序保护机制gcc编译选项

预备知识&#xff1a; 计算机内存的结构通常包括以下几个主要部分&#xff1a; 1.代码段(Code Segment)&#xff1a;也称为文本段&#xff0c;存储程序的可执行指令。代码段是被标记为可执行的&#xff0c;程序从代码段中获取指令并执行。 2.数据段(Data Segment)&#xff1a…...

指针与引用:C语言中的内存魔法

开始本篇文章之前先推荐一个好用的学习工具&#xff0c;AIRIght&#xff0c;借助于AI助手工具&#xff0c;学习事半功倍。欢迎访问&#xff1a;http://airight.fun/。 也把我学习过程中搜集的资料分享给大家&#xff0c;希望可以帮助大家少走弯路&#xff0c;链接&#xff1a;h…...

docker desktop搭建 nginx

【docker 桌面版】windows 使用 docker 搭建 nginx 拉取 nginx 镜像 docker pull nginx运行容器 docker run -d -p 80:8081 --name nginx nginx本地磁盘创建 nginx 目录 D:\DockerRep\nginx复制 docker 中的 nginx 配置文件 查看运行的容器 docker ps -a docker cp 9f0f82d66dd…...

Redis缓存雪崩、击穿、穿透?

我们谈谈Redis在实际项目中用作缓存时经常碰到的&#xff0c;也是经常面试的三大问题&#xff1a;缓存穿透、缓存击穿、缓存雪崩&#xff0c;以及这些问题的常用解决方法。 在介绍这三大问题之前&#xff0c;我们需要先了解Redis作为一个缓存中间件&#xff0c;在项目中是如何…...

Kettle系列(一)下载安装与基础配置

Kettle系列&#xff08;一&#xff09;下载安装与基础配置 说明一、下载二、目录结构三、基础配置&#xff08;1&#xff09;环境变量&#xff08;2&#xff09;kettle配置 四、连接mysql8五、连接其他数据库六、总结 说明 更新时间&#xff1a;2023/08/13 17:47 本文记录了wi…...

MuMu模拟器运行一段时间后Device.Present耗时突然上升

1&#xff09;MuMu模拟器运行一段时间后Device.Present耗时突然上升 2&#xff09;​如何在运行过程中获得温度信息 3&#xff09;Input System鼠标更换主按键的Bug 4&#xff09;如何禁止Unity向https://config.uca.cloud.unity3d.com发送设备信息 这是第347篇UWA技术知识分享…...

14-矩阵相乘及其运算法则

矩阵与向量的乘法 在这一篇文章中我们就将基于上一篇重新审视矩阵的这个视点来理解矩阵的乘法&#xff0c;那么在这一篇&#xff0c;我们主要来看一下矩阵和向量的乘法。这里这个线性方程组是上一小节给大家举的模拟的一个非常简单的小型经济系统的例子&#xff0c;我们可以把…...

redis学习笔记(八)

文章目录 redis的配置redis的核心配置选项Redis的使用 redis的配置 cat /etc/redis/redis.confredis 安装成功以后,window下的配置文件保存在软件 安装目录下,如果是mac或者linux,则默认安装/etc/redis/redis.conf redis的核心配置选项 绑定ip&#xff1a;访问白名单&#x…...

Wlan——无线服务集和AP的基本概念以及AP的配置

目录 WLAN服务集的基本概念 AP的基本概念 AP的分类 AP模式的切换 胖&#xff08;FAT&#xff09;AP介绍 胖AP的工作模式 接入模式和路由模式的区别 胖AP的组网方式 瘦&#xff08;FIT&#xff09;AP介绍 瘦AP的工作模式 瘦AP的组网方式 胖AP和瘦AP的区别 AP的配置…...

【必看】时序逻辑仿真成组合逻辑?你知道原因吗?

对于初学者&#xff0c;一般会遇到这种情况&#xff0c;明明写的时序逻辑&#xff0c;结果仿真结果却是组合逻辑&#xff0c;然后看遍设计代码&#xff0c;始终找不到原因&#xff0c;交流群、知乎这种问题随处可见。但不要怀疑软件问题&#xff0c;modelsim这些专用软件基本不…...

PyTorch翻译官网教程-LANGUAGE MODELING WITH NN.TRANSFORMER AND TORCHTEXT

官网链接 Language Modeling with nn.Transformer and torchtext — PyTorch Tutorials 2.0.1cu117 documentation 使用 NN.TRANSFORMER 和 TORCHTEXT进行语言建模 这是一个关于训练模型使用nn.Transformer来预测序列中的下一个单词的教程。 PyTorch 1.2版本包含了一个基于论…...

SpringBoot复习:(43)如何以war包的形式运行SpringBoot程序

一、.pom.xml配置packging为war <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven…...

Dubbo高手之路2,6种扩展机制详解

目录 一、Dubbo扩展机制的概述二、Dubbo的自适应扩展机制1. 什么是自适应扩展机制2. 自适应扩展机制的使用示例 三、Dubbo的SPI扩展机制1. 什么是SPI扩展机制2. SPI扩展机制的使用示例3. Dubbo的SPI扩展机制中自定义扩展点的实现示例 四、Dubbo的自定义扩展点机制1. 什么是自定…...

C语言快速回顾(二)

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。C/C是音视频必…...

ADB连接安卓手机提示unauthorized

近期使用airtest进行自动化测试时&#xff0c;因为需要连接手机和电脑端&#xff0c;所以在使用adb去连接本人的安卓手机vivo z5时&#xff0c;发现一直提示unauthorized。后来经过一系列方法尝试&#xff0c;最终得以解决。 问题描述&#xff1a; 用数据线将手机接入电脑端&…...

【软件工程】内聚

概念 是指一个模块内部个成分之间相互关联程度的度量。也就是说&#xff0c;凝聚是对模块内各处理动作组合强度的一种度量。很显然&#xff0c;一个模块的内聚越大越好。 偶然凝聚 一个模块内的各处理元素之间没有任何联系&#xff0c;只是偶然地被凑到一起。这种模块也称为…...

支持对接鸿蒙系统的无线模块及其常见应用介绍

近距离的无线通信得益于万物互联网的快速发展&#xff0c;基于集成部近距离无线连接&#xff0c;为固定和移动设备建立通信的蓝牙技术也已经广泛应用于汽车领域、工业生产及医疗领域。为协助物联网企业终端产品能快速接入鸿蒙生态系统&#xff0c;SKYLAB联手国产芯片厂家研发推…...

java项目打包运行报异常:Demo-1.0-SNAPSHOT.jar中没有主清单属性

检查后发现pom文件中有错误&#xff0c;需要添加build内容才能恢复正常。 添加下面文件后再次启动恢复正常。 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactI…...

nginx+keepalived实现负载均衡和高可用

环境准备 IPVIP环境客户端192.168.134.174Master192.168.134.170192.168.134.100需要配置nginx负载均衡Backup192.168.134.172192.168.134.100需要配置nginx负载均衡web1服务器192.168.134.171 web2服务器 192.168.134.173 1、首先安装nginx服务器&#xff08;此处采用yum安装…...

AISQL生成不是噱头,是生产力革命:37个真实生产环境SQL生成失败案例全复盘

第一章&#xff1a;AISQL生成不是噱头&#xff0c;是生产力革命&#xff1a;37个真实生产环境SQL生成失败案例全复盘 2026奇点智能技术大会(https://ml-summit.org) 在金融、电商与SaaS平台的37个线上生产系统中&#xff0c;我们对主流AISQL工具&#xff08;含LangChainLlama…...

Qwen3-VL-8B Web系统定制化改造:修改chat.html主题色/Logo/欢迎语教程

Qwen3-VL-8B Web系统定制化改造&#xff1a;修改chat.html主题色/Logo/欢迎语教程 1. 项目概述与定制需求 Qwen3-VL-8B AI聊天系统是一个功能完整的Web应用&#xff0c;包含前端界面、代理服务器和推理后端。虽然系统开箱即用&#xff0c;但很多用户希望根据自己的品牌风格进…...

语音识别入门必看:为什么Mel谱比原始波形和普通频谱图更好用?

语音识别中的Mel谱&#xff1a;为什么它比原始波形和普通频谱更胜一筹&#xff1f; 想象一下&#xff0c;你正在教一个刚学中文的外国朋友分辨"妈妈"和"马"这两个词的发音差异。直接播放原始录音可能让他一头雾水&#xff0c;但如果你把声音的高低变化画成…...

给Python异步代码加上类型提示(Type Hints)

为Python异步代码添加类型提示&#xff1a;提升健壮性与可维护性 在Python生态中&#xff0c;异步编程&#xff08;asyncio&#xff09;已成为处理高并发场景的核心工具&#xff0c;但动态类型的特性使得代码在复杂项目中容易变得难以维护。通过引入类型提示&#xff08;Type …...

技术揭秘:Nintendo Switch NAND存储系统的深度探索与管理实践

技术揭秘&#xff1a;Nintendo Switch NAND存储系统的深度探索与管理实践 【免费下载链接】NxNandManager Nintendo Switch NAND management tool : explore, backup, restore, mount, resize, create emunand, etc. (Windows) 项目地址: https://gitcode.com/gh_mirrors/nx/…...

Excalidraw虚拟白板工具:如何用5分钟开启你的手绘图表创作之旅?

Excalidraw虚拟白板工具&#xff1a;如何用5分钟开启你的手绘图表创作之旅&#xff1f; 【免费下载链接】excalidraw Virtual whiteboard for sketching hand-drawn like diagrams 项目地址: https://gitcode.com/GitHub_Trending/ex/excalidraw 你是否厌倦了传统图表工…...

如何用AI视频分析工具快速理解视频内容:完整指南

如何用AI视频分析工具快速理解视频内容&#xff1a;完整指南 【免费下载链接】video-analyzer Analyze videos using LLMs, Computer Vision and Automatic Speech Recognition 项目地址: https://gitcode.com/gh_mirrors/vi/video-analyzer 在信息爆炸的数字时代&#…...

基于R语言的物种气候生态位动态量化与分布特征模拟实践技术

在全球气候变化加剧与生物多样性丧失的双重危机下&#xff0c;精准量化物种的气候生态位、预测其潜在分布格局及动态迁移路径&#xff0c;已成为入侵生物学风险评估、濒危物种栖息地保护及自然保护区规划的核心科学命题。物种分布模型作为连接物种 occurrence 数据与环境变量的…...

M12连接器的工作原理:如何在极端环境下保证信号零丢失

“凡益之道&#xff0c;与时偕行。”在工业现场&#xff0c;这句话往往被换一种方式理解&#xff1a;&#x1f449; 环境越复杂&#xff0c;连接就越不能出错。我是德索连接器-胡工&#xff0c;日常在工厂里做工业连接器与线束方案。 在自动化产线、户外设备、工业控制项目中&a…...

从写代码到问问题:2026年,AI如何重构数据科学工作流(七)

2026年初&#xff0c;腾讯云智能体平台在公积金业务里跑通了一个“边聊边办”的场景。用户随便丢一句“我去年缴存了多少&#xff1f;”&#xff0c;系统三分钟就能甩出一份结构化报告。换成以前&#xff0c;光是拉数据、写清洗逻辑、调格式&#xff0c;至少得耗上十五分钟。这…...