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

news2024/9/22 5:35:26

设置请求访问路径

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

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

两种请求

get请求

post请求

测试案例

    @RequestMapping("/getNameAndAge")
    @ResponseBody
    public 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赋给这里的形参userName
    public 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")
    @ResponseBody
    public 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")
    @ResponseBody
    public String getContainPOJO(User user){
        System.out.println(user);
        return "{'info':'containPojo'}";
    }

请求

结果 

 

数组参数

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

请求

结果

集合参数

方法
    @RequestMapping("/getCollection")
    @ResponseBody
    public 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")
    @ResponseBody
    public String getJsonList(@RequestBody List<String> jsonList){
        System.out.println(jsonList);
        return "{'info':'jsonList'}";
    }

请求

结果

json对象

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

请求

结果

json数组对象

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

请求

结果

日期型参数传递

方法

    //日期型参数传递
    @RequestMapping("/getDateParam")
    @ResponseBody
    public 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.coloradmin.cn/o/1995122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux逻辑卷管理LVM

系列文章目录 提示&#xff1a;仅用于个人学习&#xff0c;进行查漏补缺使用。 1.Linux介绍、目录结构、文件基本属性、Shell 2.Linux常用命令 3.Linux文件管理 4.Linux 命令安装(rpm、install) 5.Linux账号管理 6.Linux文件/目录权限管理 7.Linux磁盘管理/文件系统 提示&a…

应急响应:Windows 入侵排查思路.

什么是应急响应. 一个组织为了 应对 各种网络安全意外事件的发生 所做的准备 以及在 事件发生后 所采取的措施 。说白了就是别人攻击你了&#xff0c;你怎么把这个攻击还原&#xff0c;看看别人是怎么攻击的&#xff0c;然后你如何去处理&#xff0c;这就是应急响应。 目录&am…

数字货币市场历史数据获取API(含源代码)

加密数字货币市场历史数据获取API&#xff08;含源代码&#xff09; 数字货币市场历史数据获取API&#xff08;含源代码&#xff09;1. Binance API运行结果BTCUSDT.csv 文件截图 2. CoinGecko API3. CryptoCompare API总结 数字货币市场历史数据获取API&#xff08;含源代码&a…

【机器学习算法基础】(基础机器学习课程)-11-k-means-笔记

示例案例 为了更好地理解 K-Means 算法&#xff0c;下面通过一个简单的案例进行说明。 假设我们有以下 10 个二维数据点&#xff0c;表示不同商店的销售额&#xff08;单位&#xff1a;千元&#xff09;和顾客数&#xff08;单位&#xff1a;人&#xff09;&#xff1a; [(1…

zabbix的自动发现和注册、proxy代理和SNMP监控

一、zabbix自动发现和注册 1.概念 zabbix客户端主动的和服务端联系&#xff0c;将自己的地址和端口发送给服务端&#xff0c;实现自动添加监控主机。 客户端是主动的一方 缺点&#xff1a;自定义网段中主机数量太多&#xff0c;登记耗时会很久&#xff0c;而且这个自动发现…

多参数MRI靶向活检与系统性活检在筛查筛状和导管内癌前列腺癌中的比较| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统

Title 题目 Comparison of Multiparametric MRI–targeted and Systematic Biopsies for Detection of Cribriform and Intraductal Carcinoma Prostate Cancer 多参数MRI靶向活检与系统性活检在筛查筛状和导管内癌前列腺癌中的比较 Background 背景 Intraductal carcin…

婴儿浴缸及沐浴辅助用品 亚马逊澳大利亚站认证

本政策涵盖的婴儿浴缸及沐浴辅助用品 婴儿沐浴辅助用品用于为婴儿提供支撑&#xff0c;以便成人可以腾出手来为婴儿沐浴。商品设计多种多样&#xff0c;可能随婴儿浴缸一起提供&#xff0c;也可能塑造成婴儿浴缸的形状&#xff0c;也可能设计为淋浴时使用的椅子。婴儿沐浴辅助…

制造知识普及(十)-- 常见的工业软件介绍

「 1. ERP」 企业资源计划&#xff08;enterprise resource planning&#xff0c;ERP&#xff09;是制造企业的核心管理软件。ERP系统的基本思想是以销定产&#xff0c;协同管控企业的产、供、销、人、财、物等资源&#xff0c;帮助企业按照销售订单&#xff0c;基于产品的制造…

十一、vector 类

Ⅰ . vector 的介绍和使用 01 vector 的介绍 vector 的文档介绍&#xff1a;vector ① vector 是表示可变大小数组的序列容器&#xff0c;既像数组&#xff0c;又不像数组 像体现在&#xff1a;同样采用连续存储空间存储元素&#xff0c;可以使用下标访问元素 不像体现在&…

ffmpeg -- 常用口令

文章目录 1.视频格式转换2.设置比特率3.设置帧率4.强制让输入视频帧率为1&#xff0c;输出视频帧率为245.长视频截短6.自动分割视频的bash脚本7.每一帧都保存成图片 1.视频格式转换 ffmpeg -i input.avi output.mp42.设置比特率 ffmpeg -i input.avi -b:v 64k -bufsize 64k o…

Kuboard v3安装手册

1、Kuboard v3安装 docker pull swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3 #启动kuboard容器 docker run -d \ --restartunless-stopped \ --namekuboard \ -p 8003:80/tcp \ -p 30081:10081/tcp \ -e KUBOARD_ENDPOINT"http://10.111.13.2:8003&q…

智能分析,安全无忧:AI视频分析技术在安全生产中的深度应用

在当今快速发展的科技时代&#xff0c;视频智能分析技术&#xff08;Intelligent Video Analysis&#xff0c;简称IV&#xff09;已经成为提升安全生产水平的重要手段。这一技术通过计算机图像视觉分析技术&#xff0c;实现了对场景中目标的自动识别和追踪&#xff0c;有效提升…

计算机毕业设计选题推荐-玩具租赁系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

网络规划设计师-(3)数据通信系统模型

数据通信系统模型是怎么组成的&#xff1f; 数据通信系统模型是由以下几个组成部分组成&#xff1a; 发送方&#xff08;Sender&#xff09;&#xff1a;发送方是数据通信系统中起始数据源的设备或程序。它将原始数据转化为适合传输的格式&#xff0c;并将数据发送到通信信道中…

企业管理咨询公司谈Poka-Yoke的三种方法

这听起来像是你玩的游戏&#xff0c;但 poka-yoke 这个词实际上是一个日语术语&#xff0c;它的意思是“防错”。作为一种质量工具&#xff0c;其背后的理念是每个人都会犯错&#xff0c;因为我们都是人。Poka-yoke 要么消除&#xff0c;要么至少大大减少了我们犯错的机会。此操…

中国进出口贸易公司 | 地毯进口有哪些要求 | 箱讯科技

地毯进口有哪些注意事项&#xff1f;根据制作方法、材质等方面的差异&#xff0c;地毯产品在进口申报时&#xff0c;其申报税号各有不同&#xff1b;还应关注地毯产品的质量安全及卫生环保情况&#xff0c;确保其符合中国相关强制性标准的要求。具体介绍如下。 进口地毯产品申报…

记一次 .NET某智慧出行系统 CPU爆高分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他们的系统出现了CPU 100%的情况&#xff0c;让你帮忙看一下怎么回事&#xff1f;dump也拿到了&#xff0c;本想着这种情况让他多抓几个&#xff0c;既然有了就拿现有的分析吧。 二&#xff1a;WinDbg 分析…

MySQL笔记-基础篇(二):多表查询

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 MySQL的多表查询是一项非常实用的数据库操作技术&#xff0c;它能够通过关联不同表中的数据来提供更加丰富和准确的信息。在实际应用中&#xff0c;数据通常不是孤立存在的&#xff0c;而是分布在多个…

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

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

《暗黑破坏神 IV》是什么类型的游戏,苹果电脑能玩暗黑破坏神吗 crossover玩暗黑4

《暗黑破坏神 IV》&#xff08;Diablo IV&#xff09;是由暴雪娱乐开发的一款动作角色扮演游戏&#xff08;Action RPG&#xff09;&#xff0c;是广受欢迎的《暗黑破坏神》系列的最新作品。暗黑破坏神4拥有出色的游戏画面、音效和丰富的游戏玩法&#xff0c;非常值得玩家们去尝…