SpringMVC:SpringMVC五种类型参数传递(4)

news2025/1/16 3:32:51

请求参数

  • 1. 环境准备
  • 2. 参数传递
    • 2.1 GET请求
      • 2.1.1 GET发送一个参数
      • 2.1.2 GET发送多个参数
      • 2.1.3 GET请求中文乱码
    • 2.2 POST请求
      • 2.2.1 POST发送一个参数
      • 2.2.2 POST发送多个参数
      • 2.2.3 POST请求中文乱码问题
  • 3. 五种类型参数传递
    • 3.1 普通参数
    • 3.2 POJO类型参数
    • 3.3 嵌套POJO类型参数
    • 3.4 数组类型参数
    • 3.5 集合类型参数

1. 环境准备

项目结构

在这里插入图片描述

pom.xml配置文件

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


    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>  <!--tomcat端口号-->
                    <path>/</path>  <!--虚拟目录-->
                </configuration>
            </plugin>
        </plugins>
    </build>

config包下的ServletContainersInitConfig类

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

import javax.servlet.Filter;

public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    /**
     * 加载springmvc配置类
     *
     * @return
     */
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }

    /**
     * 设置由springmvc控制器处理的请求映射路径
     *
     * @return
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    /**
     * 加载spring配置类
     *
     * @return
     */
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

config包下的核心配置文件SpringMvcConfig类

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;


@Configuration
@ComponentScan("com.itheima.controller")
public class SpringMvcConfig {
}

controller包下的UserController类

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/user")
public class UserController {

}

pojo包下的Address类

public class Address {
    private String province;
    private String city;
    // 省略set/get方法
    .....
}

pojo包下的User类

public class User {
    private String name;
    private Integer age;
    private Address address;
    // 省略set/get方法
    ....
}

2. 参数传递

2.1 GET请求

2.1.1 GET发送一个参数

UserController类中方法准备


    @RequestMapping("/commonParam")
    @ResponseBody
    public String commonParam(String name){
        System.out.println("普通参数传递 name: = " + name );
        return "{'module':'commonParam'}";
    }

Postman发送GET请求

在这里插入图片描述

IDEA控制台接收返回结果

在这里插入图片描述

2.1.2 GET发送多个参数

UserController类中方法准备

    @RequestMapping("/commonParam")
    @ResponseBody
    public String commonParam(String name, int age){
        System.out.println("普通参数传递 name: = " + name + ", age = " + age);
        return "{'module':'commonParam'}";
    }

Postman发送GET请求

在这里插入图片描述

IDEA控制台接收返回结果

在这里插入图片描述

2.1.3 GET请求中文乱码

Postman发送带中文参数的GET请求

在这里插入图片描述

IDEA控制台接收返回结果发现存在中文乱码

在这里插入图片描述

GET请求方式存在中文乱码问题解决方式:在pom.xml配置文件中添加解决中文乱码的方式

在这里插入图片描述

Postman再次发送GET请求,并查看IDEA控制台接收返回结果

在这里插入图片描述

2.2 POST请求

2.2.1 POST发送一个参数

UserController类中方法准备


    @RequestMapping("/commonParam")
    @ResponseBody
    public String commonParam(String name){
        System.out.println("普通参数传递 name: = " + name );
        return "{'module':'commonParam'}";
    }

Postman发送带中文的GET请求

在这里插入图片描述

IDEA控制台接收返回结果

在这里插入图片描述

2.2.2 POST发送多个参数

UserController类中方法准备

    @RequestMapping("/commonParam")
    @ResponseBody
    public String commonParam(String name, int age){
        System.out.println("普通参数传递 name: = " + name + ", age = " + age);
        return "{'module':'commonParam'}";
    }

Postman发送POST请求

在这里插入图片描述

IDEA控制台接收返回结果

在这里插入图片描述

2.2.3 POST请求中文乱码问题

Postman发送带中文的POST请求

在这里插入图片描述

IDEA控制台接收返回结果发现存在中文乱码问题

在这里插入图片描述

POST请求方式存在中文乱码问题解决方式:在ServletContainersInitConfig类中配置过滤器

在这里插入图片描述

Postman再次发送POST请求,并查看IDEA控制台接收返回结果

在这里插入图片描述

3. 五种类型参数传递

3.1 普通参数

前面的GET请求和POST请求已经对普通参数进行了讲解,在这里不过多阐述。通过要注意一个问题,那就是如果形参与地址参数名不一致如何解决???

在这里插入图片描述

IDEA窗口显示如下:可以发现userName为null,因为前端给的是name,后台接收使用的是userName,两个名称对不上,导致接收数据失败。

在这里插入图片描述

解决方案: 使用@RequestParam注解

在这里插入图片描述

Postman再次发送请求

在这里插入图片描述

3.2 POJO类型参数

POJO参数请求参数名与形参对象属性名相同,定义POJO类型形参即可接收参数

  • POJO参数接收,前端GET和POST发送请求数据的方式不变。
  • 请求参数key的名称要和POJO中属性的名称一致,否则无法封装。

UserController类中方法准备

Postman发送GET请求

在这里插入图片描述

在这里插入图片描述

Postman发送POST请求

在这里插入图片描述

在这里插入图片描述

3.3 嵌套POJO类型参数

嵌套POJO参数请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数

请求参数key的名称要和POJO中属性的名称一致,否则无法封装

User类中嵌套Address属性

在这里插入图片描述

UserController类中方法准备

在这里插入图片描述

Postman发送GET请求

在这里插入图片描述

在这里插入图片描述

Postman发送POST请求

在这里插入图片描述

在这里插入图片描述

3.4 数组类型参数

数组参数请求参数名与形参对象属性名相同且请求参数为多个,定义数组类型即可接收参数

UserController类中方法准备

在这里插入图片描述

Postman发送GET请求

在这里插入图片描述

在这里插入图片描述

Postman发送POST请求

在这里插入图片描述

在这里插入图片描述

3.5 集合类型参数

集合参数同名请求参数可以使用@RequestParam注解映射到对应名称的集合对象中作为数据

  • 集合保存普通参数:请求参数名与形参集合对象名相同且请求参数为多个,@RequestParam绑定参数关系
  • 对于简单数据类型使用数组会比集合更简单些。

UserController类中方法准备

在这里插入图片描述

Postman发送GET请求

在这里插入图片描述

在这里插入图片描述

Postman发送POST请求

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

HashMap(二)扩容

想要了解HashMap的扩容机制你要有这两个问题 1、什么时候才需要扩容 2、HashMap的扩容是什么 1、什么时候才需要扩容 当HashMap中的元素个数超过数组大小&#xff08;数组长度&#xff09;* loadFactor(负载因子)时&#xff0c;就会进行数组扩容&#xff0c;loadFactor的默认值…

Pytest框架运行常用参数解析

-s&#xff1a;表示输出调试信息&#xff0c;用于显示测试函数中print()打印的信息。我们在用例中加上一句 print(driver.title)&#xff0c;我们再运行一下我们的用例看看&#xff0c;调试信息输出-v&#xff1a;未加前只打印模块名&#xff0c;加v后--verbose打印类名、模块名…

Java中的八大包装类(Wrapper)

目录 一、八大包装类 1、八大包装类的体系图&#xff1a; 二、装箱和拆箱 三、intValue()和valueOf()方法 1、intValue() 2、valueOf() 四、包装类型和String类型的相互转换 五、包装类的常用方法&#xff08;以Integer和Character为例&#xff09; 一、八大包装类 包装…

Scala环境搭建

目录1&#xff09;安装步骤2&#xff09;测试3&#xff09;IDEA安装Scala 插件1&#xff09;安装步骤 1.首先确保 JDK1.8 安装成功 2.下载对应的 Scala 安装文件 scala-2.x.zip 3.解压 scala-2.12.11.zip&#xff0c;我这里解压到 F:\software 4.配置 Scala 的环境变量 …

使用Python和GDAL处理遥感影像数据超详细教程

提示&#xff1a;文章末尾有强化学习代码资源 : ) 前言 在本教程中&#xff0c;我们将学习使用 Python 和地理空间数据抽象库 GDAL 自动处理栅格数据的基本技术。 栅格文件通常用于存储地形模型和遥感数据及其衍生产品&#xff0c;例如植被指数和其他环境数据集。 栅格文件往往…

windows 连接蓝牙耳机失败 解决方法

windows 连接蓝牙耳机失败 解决方法 如果我们在windows7或windows10电脑中连接蓝牙却出现了连接失败的状况&#xff0c;这要怎么办呢&#xff0c;可能是我们没有打开电脑的蓝牙功能&#xff0c;这时我们点击打开蓝牙网络的属性&#xff0c;勾选Bluetooth设置的选项即可&#x…

安卓某通讯协议环境算法浅谈

所有的tlv组包都在 oicq.wlogin_sdk.tlv_type加密算法可以hook oicq.wlogin_sdk.tools Tlv144 是由5个tlv组成 然后用TGTkey进行 TEA加密 tlv_109 AndroidIDtlv_52d 系统内核信息tlv_124 平台网络信息tlv_128 手机设备信息tlv_16e 手机品牌TLV544 是设备id&#xff0…

MySQL-复合查询

文章目录复合查询基础查询多表查询自连接子查询单行子查询多行子查询多列子查询合并查询uion会自动去重union all就是不去重union all就是不去重复合查询 基础查询 查询工资高于500或者岗位为MANAGER的员工&#xff0c;同时名字首字母是J select * from emp where (sal>500…

ADI Blackfin DSP处理器-BF533的开发详解54:CVBS输出(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 CVBS OUT 视频输出 硬件实现原理 CVBS_OUT 子卡板连接在 ADSP-EDU-BF53x 开发板的扩展端口 PORT3 和 PORT4 上&#xff0c;板卡插入时&#xff0…

pytest + yaml 框架 -14.钉钉机器人通知测试结果

前言 当用例执行完成后&#xff0c;希望能给报告反馈&#xff0c;常见的报告反馈有&#xff1a;邮箱/钉钉群/飞书/企业微信 等。 pip 安装插件 pip install pytest-yaml-yoyo钉钉机器人通知测试结果功能在v1.1.1版本实现 钉钉机器人设置 钉钉机器人的设置请参考官方API文档…

实验2 VLAN的划分及VLAN间通信的配置

实验2 VLAN的划分及VLAN间通信的配置一、实验目的二、实验要求三、实验步骤&#xff0c;数据记录及处理四、实验总结一、实验目的 掌握VLAN的划分及VLAN间通信的配置方法 二、实验要求 交换机在没有划分虚拟网络时&#xff0c;都默认属于VLAN1&#xff0c;可以相互通信。通过…

【链表面试题】——剑指 Offer : 复杂链表(带随机指针)的复制

文章目录前言1.题目介绍2. 题目分析3. 思路讲解思路1思路2步骤1步骤2步骤34. 分析图及源码展示前言 这篇文章&#xff0c;我们一起来解决一道与链表相关的经典面试题&#xff1a;复杂链表&#xff08;带随机指针&#xff09;的复制。 1.题目介绍 我们先来一起了解一下这道题&…

Java的继承到底是怎么回事?看这篇让你明明白白

一. 引言 在学习面向对象后&#xff0c;我们就可以使用类来描述对象共有的特征(属性)和行为举止(方法)&#xff0c;如果我们用类来描述猫、狗和企鹅&#xff0c;可以进行如下编码&#xff1a; public class Cat {private String name;//名字private int age;//年龄private St…

操作系统,计算机网络,数据库刷题笔记11

操作系统&#xff0c;计算机网络&#xff0c;数据库刷题笔记11 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xf…

kubelet源码分析 syncLoopIteration(一) configCh

kubelet源码分析 syncLoopIteration syncLoopIteration里有四个chan管道。分别是configCh、plegCh、syncCh、housekeepingCh。这篇主要聊一下这四个管道的由来。 一、configCh configCh是通过list&watch的API SERVER获得的数据。然后在本地进行比对&#xff0c;推送到c…

Qt-Web混合开发-QtWebChannel实现Qt与Web通信交互-进阶功能(6)

Qt-Web混合开发-QtWebChannel实现Qt与Web通信交互-进阶功能&#x1f96c; 文章目录Qt-Web混合开发-QtWebChannel实现Qt与Web通信交互-进阶功能&#x1f96c;1、概述&#x1f33d;2、实现效果&#x1f346;3、实现功能&#x1f352;4、关键代码&#x1f95d;5、源代码&#x1f9…

Android基础学习(二十二)—— View的事件分发(1)

一、View的层级关系 二、View的事件分发机制 1、MotionEvent ——点击事件 点击事件用MotionEvent来表示 ACTION_DOWN&#xff1a;手指刚接触屏幕 ACTION_MOVE&#xff1a;手指在屏幕上移动 ACTION_UP&#xff1a;手指从屏幕上松开的一瞬间 点击事件的事件分发&#xff0…

OM6621系列国产M4F内核低功耗BLE5.1大内存SoC蓝牙芯片

目录OM6621系列简介OM6621P系列芯片特性应用领域OM6621系列简介 随着5G与物联网时代的到来&#xff0c;智慧城市、电动出行、智能家居、可穿戴设备等应用高速发展&#xff0c;低功耗蓝牙技术在近几年智能化浪潮中的地位也尤为重要。OM6621系列的开发即是为解决国内低功耗蓝牙应…

Linux安装docker 保姆级教程

一、docker介绍 Docker 是 2014 年最为火爆的技术之一&#xff0c;几乎所有的程序员都听说过它。Docker 是一种“轻量级”容器技术&#xff0c;它几乎动摇了传统虚拟化技术的地位&#xff0c;现在国内外已经有越来越多的公司开始逐步使用 Docker 来替换现有的虚拟化平台了。 二…

图为科技深圳人工智能产业协会重磅推出边缘计算机全新概念

人工智能作为提升区域竞争力的重要战略&#xff0c;全国各地都在推动发展&#xff0c;人工智能是未来科技创新发展的风向标&#xff0c;也是产业变革升级的关键驱动力&#xff0c;我国在《“十四五”数字经济发展规划》及《工业互联网创新发展行动计划(2021-2023年)》中&#x…