3. 请求

news2024/11/18 17:28:38

1. 请求映射路径

@RequestMapping注解

  • 名称:@RequestMapping
  • 类型:方法注解 类注解
  • 位置:SpringMVC控制器方法定义上方
  • 作用:设置当前控制器方法请求访问路径,如果设置在类上统一设置当前控制器方法请求访问路径前缀
  • 范例
@Controller
//类上方配置的请求映射与方法上面配置的请求映射连接在一起,形成完整的请求映射路径
@RequestMapping("/user")
public class UserController {
    //请求路径映射
    @RequestMapping("/save") //此时save方法的访问路径是:/user/save
    @ResponseBody
    public String save(){
        System.out.println("user save ...");
        return "{'module':'user save'}";
    }
}

2.GET请求传递普通参数

普通参数:url地址传参,地址参数名与形参变量名相同,定义形参即可接收参数

2.1 postman发送get请求传递普通参数

image-20221223135916431

2.2 后台的Controller的方法定义与URL地址参数名相同的形参变量名接收

如果postman发送请求时携带多个参数,则在方法的参数列表定义一样个数的参数接收即可

package com.zhang.controller;

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

@Controller
public class AcceptParametersController {

    @RequestMapping("/acceptCommonParammeters")
    @ResponseBody
    public String acceptCommonParammeters(String name){
        
        System.out.println("接收到的普通参数是:"+name);
        return "Hello SpringMvc";

    }
}

2.3 启动tomcat服务器,发送请求

成功接收到参数

image-20221223140444577

2.4当请求参数名与形参变量名不同,使用@RequestParam绑定参数关系

否则接收不到参数

image-20221223145225317

java代码

//普通参数:请求参数名与形参名不同时,使用@RequestParam注解关联请求参数名称与形参名称之间的关系
    @ResponseBody
    @RequestMapping("/differentNamesParammeters")
    public String differentNamesParammeters(@RequestParam("username") String name, int age){
        System.out.println("姓名:"+name+",年龄:"+age);
        return "Hello SpringMvc";
    }

2.5 解决GET请求中文乱码问题。

  • 如果传递的参数是中文,会出现接收到的参数出现了中文乱码问题。
  • 原因:tomcat 8.5版本之后GET请求就不再出现中文乱码问题,但是现在使用的是tomcat7插件,所以会出现GET请求中文乱码问题。
  • 解决:在pom.xml添加tomcat7插件处配置UTF-8字符集,解决GET请求中文乱码问题。
<build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <port>80</port><!--tomcat端口号-->
          <path>/</path> <!--虚拟目录-->
          <uriEncoding>UTF-8</uriEncoding><!--访问路径编解码字符集-->
        </configuration>
      </plugin>
    </plugins>
  </build>

3. POST请求传递普通参数

普通参数:form表单post请求传参,表单参数名与形参变量名相同,定义形参即可接收参数

3.1 postman发送post请求传递普通参数

image-20221223141332220

3.2 后台代码的Controller定义方法形参接收

package com.zhang.controller;

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

@Controller
public class AcceptParametersController {

    @RequestMapping("/acceptCommonParammeters")
    @ResponseBody
    public String acceptCommonParammeters(String name,int age){

        System.out.println("姓名:"+name+",年龄:"+age);
        return "Hello SpringMvc";

    }
}

3.3 启动服务器,发送请求,打印接收到的参数

image-20221223141713326

3.4 POST请求中文乱码处理

在加载SpringMVC配置的配置类中指定字符过滤器。

public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    //乱码处理
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        return new Filter[]{filter};
    }
}

4. POJO类型参数

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

4.1 postman请求url

image-20221223150258115

4.2 student

package com.zhang.config.pojo;

import lombok.Data;

@Data
public class Student {

    private String name;
    private int age;
}

4.3 Controller方法

   //POJO参数:请求参数与形参对象中的属性对应即可完成参数传递
   @ResponseBody
    @RequestMapping("/acceptPojoParammeters")
    public String  acceptPojoParammeters(Student student){

        System.out.println("接收到的学生对象接收参数:"+student);
        return "Hello SpringMvc";
    }

4.4 postman发送请求,后台打印结果

image-20221223150607326

注意事项:请求参数key的名称要和POJO中属性的名称一致,否则无法封装。

5. 嵌套POJO类型参数

POJO对象中包含POJO对象

4.1 Student

package com.zhang.config.pojo;

import lombok.Data;

@Data
public class Student {

    private String name;
    private int age;
    private Address address;
}

4.2 Address

package com.zhang.config.pojo;

import lombok.Data;

@Data
public class Address {
    private String province;
    private String city;
}

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

image-20221223151708008

注意事项:请求参数key的名称要和POJO中属性的名称一致,否则无法封装。

4.4 postman发送请求,后台打印结果

image-20221223151804700

6.数组类型参数

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

6.1 postman请求URL以及参数定义

image-20221223152737356

6.2 后台java代码的controller方法


    @ResponseBody
    @RequestMapping("/acceptArrayParammeters")
    public String  acceptArrayParammeters(String[] hobbies){

        System.out.println("接收到的数组是:"+ Arrays.toString(hobbies));
        return "Hello SpringMvc";
    }

6. post发送请求,后台打印结果

image-20221223152952117

7. 集合类型参数

集合保存普通参数:请求参数名与形参集合对象名相同且请求参数为多个,@RequestParam绑定参数关系

image-20221223153427698


    @ResponseBody
    @RequestMapping("/acceptListParammeters")
    public String  acceptListParammeters(@RequestParam("hobbies") List<String> hobbies){

        System.out.println("接收到的集合是:"+ (hobbies));
        return "Hello SpringMvc";
    }

image-20221223153500131

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

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

相关文章

Matter理论介绍-通用-1-03:桥接器-数据结构

【源码、文档、软件、硬件、技术交流、技术支持&#xff0c;入口见文末】 【所有相关IDE、SDK和例程源码均可从群文件免费获取&#xff0c;免安装&#xff0c;解压即用】 持续更新中&#xff0c;欢迎关注&#xff01; 一、简介 Bridge&#xff08;桥接器&#xff09;存在的意…

springboot集成webstock实战:服务端数据推送数据到客户端实现实时刷新

背景 之前介绍过springboot集成webstock方式,具体参考: springboot集成websocket实战:站内消息实时推送 这里补充另外一个使用webstock的场景,方便其他同学理解和使用,废话不多说了,直接开始!简单介绍一下业务场景: 现在有一个投票活动,活动详情中会显示投票活动的参与人数…

【代码随想录】二刷-贪心算法

贪心算法 《代码随想录》 什么是贪心&#xff1f; 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 贪心没有规定的套路。 刷题或面试的时候&#xff0c;手动模拟一下感觉可以局部最优退出整体最优&#xff0c;而且想不到反例&#xff0c;那么就试一试贪心。…

Python游戏开发之Dungeon Crawler 游戏源码大全

源码一 功能: WASD 移动 SPACE 攻击 SHIFT 使用楼梯 介绍 每个级别都包含一把钥匙和一个上锁的舱口。收集钥匙以解锁通往下一层的通道(SHIFT解锁)。 史莱姆造成的伤害最小,但每一层都会产生更多。他们可以降低健康或 XP。更多 XP = 每次攻击造成更多伤害。硬币目前没有…

OpenCV 读取、显示和保存图像

目录 一、OpenCV 读取图像 OpenCV 读取函数 参数&#xff1a; 二、OpenCV 显示图像 imshow函数 imshow函数功能 imshow函数原型 三、OpenCV 保存图像 四、结果和代码 一、OpenCV 读取图像 OpenCV 允许我们对图像执行多种操作&#xff0c;但要做到这一点&#xff0c;需…

云原生之使用Docker部署Python应用

云原生之使用Docker部署Python应用一、检查系统版本1.检查系统 版本2.检查系统内核二、检查docker状态三、编辑python文件1.创建目录2.编辑test.py文件四、构建镜像1.编辑dockerfile文件2.使用dockerfile构建镜像五、运行镜像容器1.运行python_app容器2.查看容器状态六、访问Py…

java大学校园饭卡管理系统饭卡查询系统饭卡挂失网站源码

springboot开发的大学生饭卡系统&#xff0c;学生可以登录该系统充值饭卡&#xff0c;挂失饭卡&#xff0c;取消挂失&#xff0c;查看自己的所有饭卡&#xff0c;以及发卡的充值记录。超级管理员拥有最大的权限&#xff0c;饭卡管理员可以添加饭卡信息&#xff0c;充值&#xf…

如何将敏捷开发与V模型深度融合?这家企业给出答案

随着汽车智能化的快速发展&#xff0c;消费者对智能汽车的需求正在发生变化&#xff0c;车企开始思考如何能快速满足消费者的这些需求。这也对汽车供应商提出更大挑战&#xff0c;Tier 1不仅应该具备提供相应高质量产品的量产能力&#xff0c;更要快速满足主机厂和用户对汽车智…

【MySQL基础教程】图形化界面工具介绍、安装与使用

前言 本文为 【MySQL基础教程】图形化界面工具介绍、安装与使用 相关介绍&#xff0c;下边将对图形化界面工具介绍&#xff0c;DataGrip的安装与DataGrip的使用进行详尽介绍~ &#x1f4cc;博主主页&#xff1a;小新要变强 的主页 &#x1f449;Java全栈学习路线可参考&#x…

八、Express框架 安装

对于Express框架的就不进行过多介绍&#xff0c;Express官方对该框架的定位是&#xff1a;"基于Node.js平台&#xff0c;快速、开放、极简的 Web 开发框架"&#xff0c;本篇开始记录关于 Node.js 轻量级Web开发框架 &#xff1a;Express框架&#xff0c;下面先进行Ex…

高可用架构和系统设计经验

导语 | 本文从研发规范层面、应用服务层面、存储层面、产品层面、运维部署层面、异常应急层面这六大层面去剖析一个高可用架构和系统需要有哪些关键的设计和考虑。 一、高可用系统架构设计思想 1-1、可用性和高可用概念 可用性是一个可以量化的指标&#xff0c;计算的公式在维…

刷爆力扣之亲密字符串

刷爆力扣之亲密字符串 HELLO&#xff0c;各位看官大大好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 今天阿呆继续记录下力扣刷题过程&#xff0c;收录在专栏算法中 &#x1f61c;&#x1f61c;&#x1f61c; 该专栏按照不同类别标签进行刷题&#xff0c;…

基于VUE学生选课管理系统

开发工具(eclipse/idea/vscode等)&#xff1a;idea 数据库(sqlite/mysql/sqlserver等)&#xff1a;mysql 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 一、登录注册模块: 1.学生&#xff0c;教师&#xff0c;管理员三个角色&#xff08;同一时刻&#xff0c;账户…

Incorporating Dynamic Semantics into Pre-Trained Language Model for ABSA 论文阅读笔记

一、作者 Kai Zhang、Kun Zhang、Mengdi Zhang、Hongke Zhao、Qi Liu、Wei Wu、Enhong Chen School of Data Science, University of Science and Technology of China School of Computer Science and Information Engineering, Hefei University of Technology Meituan …

移动端Swiper的一些尝试(中间完整,两边有内容,循环展示)

【背景】最近公司的需求很多实现一个Swiper滑块&#xff0c;中间完整。两边展示一些内容&#xff08;可能是固定的提示方案&#xff0c;也可能是前后上下一页的部分内容&#xff09;&#xff0c;然后还需要循环滚动&#xff0c;其中遇到了一些问题特此记录 1、实现两边展示内容…

Canvas 从进阶到退学

本文简介 点赞 关注 收藏 学会了 接着 《Canvas 从入门到劝朋友放弃&#xff08;图解版&#xff09;》 &#xff0c;本文继续补充 canvas 基础知识点。 这次我不手绘了&#xff01; 本文会涉及到 canvas 的知识包括&#xff1a;变形、像素控制、渐变、阴影、路径 变形 这…

向量杂记(python)

以 O 点为圆心&#xff0c; 绘制如上图&#xff0c; 则有向量 vOA&#xff0c; vOB, vOC, vOD 再给定一个X轴方向的单位向量 vX [1, 0] 则 向量 vOA&#xff0c; vOB, vOC, vOD 分别与 vX 进行叉乘&#xff1a; # python 代码 # X Y 轴上的单位向量 vX [1, 0] vY [0, 1]vA …

Matter理论介绍-通用-1-05:桥接设备-发现与配置流程

【源码、文档、软件、硬件、技术交流、技术支持&#xff0c;入口见文末】 【所有相关IDE、SDK和例程源码均可从群文件免费获取&#xff0c;免安装&#xff0c;解压即用】 持续更新中&#xff0c;欢迎关注&#xff01; 一、桥接设备的发现 桥接设备如何被其他Matter终端发现呢…

论文阅读《FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding》

论文地址&#xff1a;https://arxiv.org/pdf/2103.05950.pdf 代码地址&#xff1a;https://github.com/megvii-research/FSCE 对比学习https://zhuanlan.zhihu.com/p/346686467 目录1、存在的问题2、算法简介3、算法细节3.1、new-baseline3.2、对比建议编码3.3、对比建议编码的…

(第二章)OpGL超级宝典学习:创建我们第一个OpenGL程序,绘制一个点和三角形

目录前言创建简单的应用创建脚本渲染底色渲染底色plus使用着色器&#xff08;shader&#xff09;什么是着色器&#xff08;shader&#xff09;GLSLOpenGL的着色阶段编写着色器顶点着色器片段着色器shader对象的创建执行程序的创建删除无用的shader顶点数组对象VAO清理VAO和Prog…