SpringMVC (发送请求——>参数传递—— >响应数据)

设置请求访问路径

@RequestMapper将请求访问路径和我们业务层的方法联系起来

@ResponseBody将我们业务层方法的返回值转化为json,xml或其他格式的数据返回给页面

两种请求

get请求

post请求

测试案例

    @RequestMapping("/getNameAndAge")@ResponseBodypublic String getNameAndAge(String name,int age){System.out.println("name:"+name);System.out.println("age:"+age);return "{'info':'Param'}";}

get

post

postman中   勾选Body下的x-www-form-urlencoded表单填写参数

解决post请求中文乱码问题

//解决post请求中文乱码
@Override
protected Filter[] getServletFilters() {CharacterEncodingFilter filter=new CharacterEncodingFilter();filter.setEncoding("UTF-8");return new Filter[]{filter};
}

5种参数类型传递

普通参数

方法
    //普通参数@RequestMapping("/getNormalParam")@ResponseBody//将请求参数中的name赋给这里的形参userNamepublic String getNormalParam(@RequestParam("name") String userName, int password){System.out.println("userName:"+userName);System.out.println("password:"+password);return "{'info':'normalParam'}";}

用@RequestParam注解让和形参不同名的参数对应起来

请求

结果

 

POJO参数

User实体类

@Data
public class User {public String userName;public int password;
}
方法
    @RequestMapping("/getPOJO")@ResponseBodypublic String getPOJO(User user){System.out.println(user);return "{'info':'pojo'}";}

请求

这里传递的参数要和实例类中的属性名保持一致 

结果

嵌套POJO参数

User实体类,嵌套Address

@Data
public class User {public String userName;public int password;public Address address;
}
@Data
public class Address {public String province;public String city;
}
方法
    @RequestMapping("/getContainPOJO")@ResponseBodypublic String getContainPOJO(User user){System.out.println(user);return "{'info':'containPojo'}";}

请求

结果 

 

数组参数

方法
    @RequestMapping("/getList")@ResponseBodypublic String getList(String[] list){System.out.println(Arrays.toString(list));return "{'info':'list'}";}

请求

结果

集合参数

方法
    @RequestMapping("/getCollection")@ResponseBodypublic String getList(@RequestParam("list") List<String> foodList){System.out.println(foodList.toString());return "{'info':'collection'}";}

需要添加一个@RequestParam注解让SpringMVC知道这是传进来的参数,否则会把List<String>当成一个实体类

请求

结果

json数据传递

首先先导入json的依赖jar包

开启@EnableWebMvc

@Configuration
@ComponentScan({"com.example"})
@EnableWebMvc//开启json等一系列功能
public class SpringMVCConfig {
}

postman中发送json数据(在Body中以raw的形式填写json数据)

方法中用@RequestBody来把请求体Body中的json绑定到我们业务层方法的形参上,且这个注解一个方法只能用一次。

json数组

方法
    //json数组@RequestMapping("/getJsonList")@ResponseBodypublic String getJsonList(@RequestBody List<String> jsonList){System.out.println(jsonList);return "{'info':'jsonList'}";}

请求

结果

json对象

方法
    //json对象@RequestMapping("/getJsonPOJO")@ResponseBodypublic String getJsonPOJO(@RequestBody User user){System.out.println(user);return "{'info':'jsonPOJO'}";}

请求

结果

json数组对象

方法
    //json对象数组@RequestMapping("getJsonPOJOList")@ResponseBodypublic String getJsonPOJOList(@RequestBody List<Address> jsonPOJOList){System.out.println(jsonPOJOList);return "{'info':'jsonPOJOList'}";}

请求

结果

日期型参数传递

方法

    //日期型参数传递@RequestMapping("/getDateParam")@ResponseBodypublic String getDateParam(Date d1, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date d2,@DateTimeFormat(pattern = "yyyy年MM月dd日 HH:mm:ss")  Date d3){System.out.println(d1);System.out.println(d2);System.out.println(d3);return "'info':'date'";}

在方法参数中用@DateTimeFormat指定pattern为我们需要的日期格式

请求

结果

正确被解析的字符串会被转化为Date类型赋给方法中的形参

响应

响应页面(了解)

//    响应//响应页面(没啥用,因为后面都是异步请求)@RequestMapping("/jump")public String jumpToJsp(){System.out.println("跳转到test.jsp");return "/test.jsp";   //这里加一个 /   表示从webapp开始的路径}

响应文本数据

方法
    //响应文本数据@RequestMapping(value = "/responseText",produces="text/html;charset=UTF-8;")@ResponseBody   //加上这个注解表示将这个方法的返回值作为响应数据public String responseText(){return "返回文本数据";}
请求及响应结果

响应json数据

响应json对象

方法
    /*响应json对象:方法直接返回json对象即可*/@RequestMapping("/responseJsonPOJO")@ResponseBody   //加上这个注解表示将这个方法的返回值作为响应数据public User responseJsonPOJO(){User user = new User("李四", 444, new Address("福建", "厦门"));return user;}
请求及响应结果

响应json对象数组

方法
        /*响应json对象数组:方法直接返回json对象数组即可*/@RequestMapping("/responseJsonPOJOList")@ResponseBody   //加上这个注解表示将这个方法的返回值作为响应数据public List<User> responseJsonPOJOList(){ArrayList<User> users = new ArrayList<>();users.add(new User("绽放三",123,new Address("福建", "泉州")));users.add(new User("李四",444,new Address("福建", "厦门")));users.add(new User("哇我",6898,new Address("四川", "成都")));return users;}
请求及响应结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/395396.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可观测性(observability)

一、定义 wiki百科的定义 In software engineering, more specifically in distributed computing, observability is the ability to collect data about programs’ execution, modules’ internal states, and the communication among components.[1][2] To improve obser…

Linux 快速构建LAMP环境

目录 部署方式&#xff1a; 基础环境准备&#xff1a; 1.安装Apache服务 &#xff08;1&#xff09;安装Apache &#xff08;2&#xff09;安装一些Apache的扩展包 2.安装PHP语言 &#xff08;1&#xff09;下载php软件仓库 &#xff08;2&#xff09;指定php安装版本…

HAProxy七层负载均衡配置方案

HAProxy 一、准备二、配置HAProxy服务器1. 下载HAProxy2. 编写配置文件3. 启动HAProxy服务 三、配置后端服务①配置web服务器②配置php服务器 四、测试 一、准备 准备5台CentOS7服务器&#xff0c;IP地址如下&#xff1a; HAProxy 192.168.152.71web1 192.168.152.72web2 192.…

第九届世界3D渲染大赛火热报名中

世界渲染大赛是一个汇聚世界顶尖CG艺术家的大赛&#xff0c;目前已经成功举办了八届&#xff0c;神仙打架般的作品让众多3D艺术家们直呼过瘾&#xff0c;如今第九届也在火热进行中&#xff0c;快来与众多世界顶尖艺术家们一决高下吧&#xff01;下面给大家介绍一下第九届的赛事…

成都数字产业中心崛起,树莓集团如何加速国际数字影像产业园的全球步伐?

在数字化浪潮的推动下&#xff0c;成都数字产业中心近年来强势崛起&#xff0c;展现出令人瞩目的发展态势。据统计&#xff0c;过去五年间&#xff0c;成都数字产业的年均增长率超过了 20%&#xff0c;这一数据充分证明了其强大的发展动力。而在这片充满活力与创新的土地上&…

《Unified Visual Relationship Detection with Vision and Language Models》ICCV2023

摘要 这项工作集中在训练单一的视觉关系检测器&#xff08;VRD&#xff09;&#xff0c;该检测器可以预测来自多个数据集的标签空间的并集。由于不同数据集的标签体系不一致&#xff0c;合并标签是一个挑战。作者提出了 UniVRD&#xff0c;一种新颖的自下而上的方法&#xff0…

MyIP:强大且简单好用!

在这个数字化的时代&#xff0c;IP地址就像是我们的网络身份证。各位在日常的工作中&#xff0c;肯定会会遇到需要和 IP 地址相关的需求。 今天和大家聊一聊一个非常好用的开源 IP 工具项目 - MyIP。 简介 MyIP一个开源IP工具箱&#xff0c;提供了一系列的网络检测工具&…

axios请求响应拦截器

目录 axios-拦截器 拦截器的作用 请求拦截器-基本写法: axios请求拦截器-统一设置token 需求: 核心步骤: 关键代码: 响应拦截器-基本写法: axios响应拦截器-统一处理token失效 需求: 核心步骤: 关键代码: axios响应拦截器-数据剥离 需求: 核心步骤: 关键代码: ax…

七、ESP32-S3上使用MicroPython点亮WS2812智能LED灯珠并通过web控制和JS颜色选择器改变灯珠颜色

本地代码集成离线iro.js库来添加一个颜色选择器控件&#xff0c;在无网络环境可以通过JavaScript将选中的颜色发送到服务器以改变LED颜色。以下是将iro.js集成到网页后的颜色图片。 Iro.js 地址API操作手册 color:change # 每当所选颜色发生变化时触发 - 无论是当用户与颜色选…

Oracle|DM 常用|不常用 SQL大口袋

目录 一、前言 二、SQL写法 1、sql获取某一条数据中的前一条和后一条 2、实现like多个值的查询&#xff08;Oracle和dm支持&#xff0c;MySQL未试过&#xff09; 3、start with connect by prior 使用方法 4、用hextoraw解决select、update、delete语句执行慢 5、ORA-00…

Vue+Element Plus后台管理主界面搭建实现

​ 续接Django REST Framework&#xff0c;使用Vite构建Vue3的前端项目 1. 后台管理系统主界面框架搭建 后台系统主界面搭建 新建后台管理文件目录 完成后台整体布局 // 1.主界面 index.vue<script setup lang"ts"></script><template><el-…

初识自然语言处理NLP

文章目录 1、简介2、自然语言处理的发展简史3、语言学理论句法学&#xff08;Syntax&#xff09;语义学&#xff08;Semantics&#xff09;语用学&#xff08;Pragmatics&#xff09;形态学&#xff08;Morphology&#xff09; 4、统计与机器学习方法n-gram 模型隐马尔可夫模型…

C++20中的模块

大多数C项目使用多个翻译单元(translation units)&#xff0c;因此它们需要在这些单元之间共享声明和定义(share declarations and definitions)。headers的使用在这方面非常突出。模块(module)是一种language feature&#xff0c;用于在翻译单元之间共享声明和定义。它们是某些…

怎么用云手机进行TikTok矩阵运营

TikTok作为炙手可热的社交媒体巨头&#xff0c;已经吸引了亿万用户的目光。随着科技的飞速发展&#xff0c;云手机的出现为TikTok矩阵运营注入了新的活力。本文将深入探讨云手机在TikTok矩阵运营中的实际应用&#xff0c;并分享一系列高效策略与技巧。 &#xff08;1&#xff0…

DGA上的动态规划

前言&#xff1a;之前都没有写过建模成有向图来动态规划的&#xff0c;但是这个题可以抽象成有向图来做 我们可以用方块的编号和高来确定底下的长和宽 其实这题说白了就是一个记忆化搜索&#xff0c;但是不知道能不能建模出来而已 #define _CRT_SECURE_NO_WARNINGS #include&l…

39.【C语言】指针(重难点)(D)

目录 10.野指针 *定义 *案例 11.野指针规避方法 *初始化 *防止越界 *指针变量不再使用时&#xff0c;及时置NULL&#xff0c;指针使用之前检查有效性 *避免返回局部变量的地址 *assert断言 12.assert断言 *解释 *作用 *优点 *启用assert的开关 往期推荐 承接上篇 38.【C语言】指…

Qt实现类似淘宝商品展示看板功能简版

前一篇文章的简化版本只有浏览功能&#xff0c;前一篇文章链接如下&#xff1a; Qt实现类似淘宝商品看板的界面&#xff0c;带有循环翻页以及点击某页跳转的功能 效果如下&#xff1a; 代码留给有需要的人。 #ifndef ModelDashboardGroup_h__ #define ModelDashboardGroup_…

选择叮咚门铃的材质注意事项

在挑选叮咚门铃时&#xff0c;材质是一个不容忽视的重要因素。合适的材质不仅能确保门铃的耐用性和美观度&#xff0c;还能影响其性能和使用体验。 塑料材质的叮咚门铃是较为常见且经济实惠的选择。它轻巧且易于成型&#xff0c;可以被设计成各种独特的形状和颜色&#xff0c;为…

Java开发笔记--通用基础数据校验的设计

最近在开发一个功能&#xff0c;对排水管网的基础数据(包括管井、管道、泵站&#xff0c;雨水口&#xff0c;雨水口线&#xff0c;泵站&#xff0c;污水处理厂&#xff0c;排口等)的导入进行校验。 以字段为纬度&#xff0c;考虑二个方面的校验&#xff1a;数据库唯一&#xf…

【Windows】如何用防火墙禁用某个软件联网

我们使用一些激活软件时&#xff0c;经常需要防止软件联网造成激活失效&#xff0c;以下说明如何通过防火墙配置屏蔽掉软件联网。 以下说明手动添加防火墙拦截的方法&#xff1a; 使用【WinR】快捷键打开运行窗口然后输入【wf.msc】 点击确定。 点击左侧的出站规则然后点击右…