详细讲解什么是SpringMVC 映射请求数据

news2025/1/23 2:21:40

😀前言
本文详细讲解什么是SpringMVC 映射请求数据
🏠个人主页:尘觉主页
在这里插入图片描述

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

在csdn获奖荣誉: 🏆csdn城市之星2名
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓Java全栈群星计划top前5
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🤗 端午大礼包获得者

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

文章目录

  • 🥰详细讲解什么是SpringMVC 映射请求数据
    • 说明
      • 代码演示
        • 创建VoteHandler类
        • 创建request_parameter.jsp类
        • Postman 完成测试
    • 🫠获取 http 请求消息头
      • 说明:
      • 代码演示
        • 修改 VoteHandler.java增加方法
        • 修改 request_paramete.jsp, 增加代码
        • Postman 测试
    • 😉获取 javabean 形式的数据
      • 使用场景说明
      • 代码演示
        • 创建Pet.java类
        • 创建Master类
        • 修改 VoteHandler.java增加方法
        • 修改 request_parameter.jsp, 增加演示代码
        • 完成测试(Postman 方式)
      • 😋使用注意事项
    • 😁获取 servlet api
      • ● 说明
      • 代码演示
        • 修改 VoteHandler.java, 增加方法
        • 修改 request_parameter.jsp
        • 完成测试(Postman 方式)
      • 😋使用注意事项
        • 代码演示
          • 修改 VoteHandler.java, 增加方法
    • 😄总结

🥰详细讲解什么是SpringMVC 映射请求数据

说明

开发中,如何获取到 http://xxx/url?参数名=参数值&参数名=参数值

img

代码演示

创建VoteHandler类

解读 @RequestParam(value=“name”, required=false)

  1. 获取到超链接传递的数据 请求 http://localhost:8080/springmvc/vote/vote01?name=xx
  2. @RequestParam 表示会接收提交的参数
  3. value=“name” 表示提交的参数名是name
  4. required=false 表示该参数可以没有, 默认是true,表示必须有这个参数
  5. 当我们使用了@RequestParam(value=“name”, required=false)后就请求的参数名和方法的形参名可以不一致
@RequestMapping("/vote")
@Controller
public class VoteHandler {

    @RequestMapping(value = "/vote01")
    public String test01(@RequestParam(value = "name", required = false) String username) {

        System.out.println("得到的username= " + username);
        //返回到一个结果
        return "success";
    }

创建request_parameter.jsp类

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试 request parameter</title>
</head>
<body>
<h2>获取到超链接参数值</h2>
<hr/>
<a href="vote/vote01?name=112">获取超链接的参数</a>
</body>
</html>

Postman 完成测试

img

🫠获取 http 请求消息头

说明:

  1. 开发中,如何获取到 http 请求的消息头信息
  2. 使用较少

代码演示

修改 VoteHandler.java增加方法

需求: 获取http请求头信息, 获取到Accept-Encoding 和 Host

  1. 这里涉及到前面讲过的http协议,小伙伴可以进行回顾
    @RequestHeader(“Http请求头字段”)
@RequestMapping("/vote")
@Controller
public class VoteHandler {

    @RequestMapping(value = "/vote02")
    public String test02(@RequestHeader("Accept-Encoding") String ae,
                         @RequestHeader("Host") String host) {
        System.out.println("Accept-Encoding= " + ae);
        System.out.println("Host= " + host);
        //返回到一个结果
        return "success";
    }
}

修改 request_paramete.jsp, 增加代码

<h1>获取到消息头</h1>
<hr>
<a href="vote/vote02">获取http消息头信息</a>

Postman 测试

img

😉获取 javabean 形式的数据

使用场景说明

● 开发中,如何获取到 javaben 的数据,就是以前的 entity/pojo 对象数据

img

代码演示

创建Pet.java类

package com.wyxedu.web.requestparam.entity;

public class Pet {
    private Integer id;
    private String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Pet{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

创建Master类

public class Master {
    private Integer id;
    private String name;
    private Pet pet;//对象的属性是另外一个对象[涉及级联]

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Pet getPet() {
        return pet;
    }

    public void setPet(Pet pet) {
        this.pet = pet;
    }

    @Override
    public String toString() {
        return "Master{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pet=" + pet +
                '}';
    }
}

修改 VoteHandler.java增加方法

@RequestMapping("/vote")
@Controller
public class VoteHandler {
// 演示如果获取到提交数据->封装成java对象
    @RequestMapping(value = "/vote03")
    public String test03(Master master) {

        System.out.println("master=" + master);
        //返回结果
        return "success";
    }
}
  1. 方法的形参用对应的类型来指定即可, SpringMVC会自动的进行封装

  2. 如果自动的完成封装, 要求提交的数据,参数名和对象的字段名保持一致

  3. 如果属性是对象,这里就是仍然是通过 字段名.字段名 比如Master [pet], 即提交的数据 参数名 是 pet.id pet.name, 这就是级联操作

  4. 如果提交的数据 的参数名和对象的字段名不匹配,则对象的属性值就是null

  5. 怎么就封装成功[底层仍然是反射+注解…]

修改 request_parameter.jsp, 增加演示代码

  1. 这是一个表单,表单的数据对应Master对象

  2. 提交的数据参数名和对象的字段名一致即可

<h1>添加主人信息</h1>

<form action="vote/vote03" method="post">
    主人号:<input type="text" name="id"><br>
    主人名:<input type="text" name="name"><br>
    宠物号:<input type="text" name="pet.id"><br>
    宠物名:<input type="text" name="pet.name"><br>
    <input type="submit" value="添加主人和宠物">
</form>

完成测试(Postman 方式)

img

😋使用注意事项

  1. 支持级联数据获取

  2. 表单的控件名称 name 需要和 javabean 对象字段对应, 否则就是null

😁获取 servlet api

● 说明

  1. 开发中, 我们可能需要使用到原生的 servlet api ,看看如何获取

  2. 使用 servlet api , 需要引入 tomcat/lib 下的 servlet-api.jar

代码演示

修改 VoteHandler.java, 增加方法

@RequestMapping("/vote")
@Controller
public class VoteHandler {
// 使用servlet api, 来获取提交的数据
 
    @RequestMapping(value = "/vote04")
    public String test04(HttpServletRequest request,
                         HttpServletResponse response) {


        String username = request.getParameter("username");
        String pwd = request.getParameter("pwd");
        System.out.println("username= " + username);
        System.out.println("pwd= " + pwd);
        //返回结果
        return "success";
    }
}

修改 request_parameter.jsp

<hr>
<h1>演示 servlet api的使用 </h1>
<form action="vote/vote04" method="post">
    用户名:<input type="text" name="username"><br>
    密 码:<input type="password" name="pwd"><br>
    <input type="submit" value="添加用户">
</form>

完成测试(Postman 方式)

img

😋使用注意事项

除了 HttpServletRequest, HttpServletResponse 还可以其它对象也可以这样的形式
获取HttpSession、 java.security.Principal, InputStream,OutputStream, Reader,Writer
其中一些对象也可以通过HttpServletRequest / HttpServletResponse 对象获取,比如Session 对象 ,
既可以通过参数传入,也以通过 request.getSession() 获取,效果一样,
推荐使用参数形式传入,更加简单明了

代码演示

修改 VoteHandler.java, 增加方法
@RequestMapping("/vote")
@Controller
public class VoteHandler {
// 使用servlet api, 来获取提交的数据
 
    @RequestMapping(value = "/vote04")
    public String test04(HttpServletRequest request,
                         HttpServletResponse response,
                         HttpSession xx) {

        //获取到session
        //servlet原生的方式
        HttpSession session = request.getSession();
        System.out.println("session=" + session);
        //注意:通过参数传入的 hs 和 通request.getSession() 得到的对象是
        //同一个
        System.out.println("xx= " + xx);

        String username = request.getParameter("username");
        String pwd = request.getParameter("pwd");
        System.out.println("username= " + username);
        System.out.println("pwd= " + pwd);
        //返回结果
        return "success";
    }
}

😄总结

表单的控件名称 name 需要和 javabean 对象字段对应, 否则就是null

@RequestParam 表示会接收提交的参数

required=false 表示该参数可以没有, 默认是true,表示必须有这个参数

当我们使用了@RequestParam(value=“name”, required=false)后就请求的参数名和方法的形参名可以不一致

😁热门专栏推荐
想学习vue的可以看看这个

java基础合集

数据库合集

redis合集

nginx合集

linux合集

等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

🤔欢迎大家加入我的社区 尘觉社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

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

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

相关文章

2023年03月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:数字字符求和 请编写一个程序实现以下功能:从一个字符串中,提取出所有的数字字符即0-9,并作为数求和。 时间限制:1000 内存限制:65536 输入 一行字符串,长度不超过100,字符串中不含空格。 输出 字符串中所有数字字符作为数的和 样例输入 Lsd2f02k3ja3sdf223 样例…

辅助笔记-安装Ubantu虚拟机

安装Ubantu虚拟机 文章目录 安装Ubantu虚拟机步骤一&#xff1a;检查BIOS虚拟化支持步骤二&#xff1a;VMware17安装虚拟机步骤1&#xff1a;新建虚拟机步骤2&#xff1a;验证虚拟机能否上网 步骤3&#xff1a;设置Ubantu语言为中文 本文主要参考B站视频“P108_ 韩顺平Linux_ u…

测评类软文怎么写?教你几招

测评类种草软文&#xff0c;是当下非常热门的一种文章类型。这类文章以其独特的魅力&#xff0c;吸引着大量的用户&#xff0c;同时也让许多商家看到了商机。然而&#xff0c;如何写好一篇测评类种草软文&#xff0c;却是许多企业和品牌面临的难题。接下来伯乐网络传媒就给大家…

如何制作gif动图表情包?教你一键在线生成gif动图

使用gif表情的时候&#xff0c;经常发现市面上的表情包不太符合自己的需求&#xff0c;这时候我们可以动手制作自己的表情包&#xff0c;如何才能快速完成gif图片制作呢&#xff1f;今天就教大家一个不用下载安装任何软件的方法&#xff0c;使用专业的在线gif生成功能来制作gif…

代码随想录第24天|初步了解回溯三部曲

回溯是递归的副产品&#xff0c;只要有递归就会有回溯。 所以以下讲解中&#xff0c;回溯函数也就是递归函数&#xff0c;指的都是一个函数。 提到了回溯法的效率&#xff0c;回溯法其实就是暴力查找&#xff0c;并不是什么高效的算法。 最后我们讲到回溯法解决的问题都可以…

SIP网络音频模块-sip网络对讲音频模块(提供POE受电模块接口)

SIP网络音频模块-sip网络对讲音频模块&#xff08;提供POE受电模块接口&#xff09; SIP网络音频模块SV-2401V网络对讲音频模块&#xff08;支持POE&#xff09; SV-2403V网络对讲音频模块_网络语音对讲模块 网络音频模块 双向对讲 SIP广播系统 SIP网络音频模块嵌入式网络对…

花生十三 判断推理(四)定义判断、类比推理

定义判断 解题思路&#xff1a; 不是单纯的连连看&#xff0c;重在理解&#xff0c;可联系生活中的人或事或某种现象 题型特征&#xff1a;“被定义词” 解释 关键信息 “被定义词” &#xff1a;因名包含有重要特征特别关注&#xff1a;主体、对象、特殊要求、中心语 选…

真香!主数据管理系统,企业大哥必备神器

什么是主数据&#xff1f; 当一家连锁商超企业的市场营销部门想要策划一场线上线下营销活动&#xff0c;从而为消费者提供便捷的购物体验&#xff0c;就需要掌握商超会员的数据。 要想拥有这些数据就需掌握顾客的交易行为&#xff0c;掌握其购物过程行为&#xff0c;甚至情感…

Serverless 应用托管助力企业加速创新

作者&#xff1a;熊峰 云原生时代的 Serverless 应用托管架构 回顾过去十年&#xff0c;数字化转型将科技创新与商业元素不断融合、重构&#xff0c;重新定义了新业态下的增长极。商业正在从大工业时代的固化范式进化成面向创新型商业组织与新商业物种的崭新模式。随着数字化转…

操作符详解上(非常详细)

目录 二进制介绍二进制2进制转10进制10进制转2进制数字2进制转8进制和16进制2进制转8进制2进制转16进制 原码、反码、补码移位操作符左移操作符右移操作符 位操作符&#xff1a;&、|、^逗号表达式 二进制介绍 在初学计算机时我们常常会听到2进制、8进制、10进制、16进制……

PiplineADC学习一:

PiplineADC结构&#xff1a; PiplineADC起源之FlashADC PiplineADC起源之Sub-Ranging-ADC 比较器存在失调&#xff1a; 因此每级1bit不实用&#xff0c;需要做冗余位设计。 多比较一次&#xff0c;两个阈值&#xff0c;三个区间&#xff0c;分别对于输出00,01,10。正常2bit应该…

通过微软Azure调用GPT的接口API-兼容平替OpenAI官方的注意事项

众所周知&#xff0c;我们是访问不通OpenAI官方服务的&#xff0c;但是我们可以自己通过代理或者使用第三方代理访问接口 现在新出台的规定禁止使用境外的AI大模型接口对境内客户使用&#xff0c;所以我们需要使用国内的大模型接口 国内的效果真的很差&#xff0c;现在如果想使…

mybatis-plus的count方法突然失效的一个场景案例

在添加数据之前&#xff0c;做了名称重复的校验 明明在数据库里面查看了下刚加的名称是没有的&#xff0c;结果count的数据量不是0&#xff0c;而是一个意外的数据&#xff0c;明明之前是好的。 此时我以为是mybatis-plus查询出问题了&#xff0c;我马上用一样的参数条件。lis…

如何在网页下载腾讯视频为本地MP4格式

1.打开腾讯视频官网地址 腾讯视频 2.搜索你想要下载的视频 3. 点击分享,选择复制通用代码 <iframe frameborder="0" src="ht

ASR(自动语音识别)任务中的LLM(大语言模型)

一、LLM大语言模型的特点 二、大语言模型在ASR任务中的应用 浅度融合 浅层融合指的是LLM本身并没有和音频信息进行直接计算。其仅对ASR模型输出的文本结果进行重打分或者质量评估。 深度融合 LLM与ASR模型进行深度结合&#xff0c;统一语音和文本的编码空间或者直接利用ASR…

【反悔贪心】CF1278B CF11B

Problem - 1278B - Codeforces 题意&#xff1a; 思路&#xff1a; Code&#xff1a; #include <bits/stdc.h>#define int long longusing i64 long long;constexpr int N 2e3 10; constexpr int M 2e3 10; constexpr int mod 998244353; constexpr int Inf 1e1…

vue3setup标签语法 + vite + delfin 递归组件实现无限评论功能

1、 功能效果 在线预览&#xff1a;https://szhihao.gitee.io/comment/ gitee仓库地址&#xff1a;https://gitee.com/szhihao/comment 2、实现的具体技术点 根据不同的人名可以进行评论&#xff08;tap切换&#xff09; 对进行的评论可以无限进行回复&#xff08;递归组件和…

医学访问学者申请常见问题

医学访问学者计划是一个促进国际医学合作与交流的重要途径&#xff0c;让医学领域的专家学者能够在国际间分享经验、互相学习。下面知识人网将就医学访问学者申请过程中的一些常见问题进行解答&#xff0c;希望能对申请者有所帮助。 问题1&#xff1a;什么是医学访问学者计划&a…

GuLi商城-前端基础Vue-使用Vue脚手架进行模块化开发

自己亲自实践&#xff1a; mac安装webpack webpack 简介Webpack 是一个非常流行的前端构建工具&#xff0c;它可以将多个模块&#xff08;包括CSS、JavaScript、图片等&#xff09;打包成一个或多个静态资源文件&#xff08;bundle&#xff09;&#xff0c;以便用于部署到生产…

关于VScode插件,你不得不知道的几件事

一、前言 VSCode是微软家一个非常轻量化的编辑器&#xff0c;体量虽轻&#xff0c;但是却有异常强大的功能。原因在于VSCode许多强大功能都是基于插件实现的&#xff0c;IDE只提供一个最基本的框架和基本功能&#xff0c;我们需要使用插件来丰富和扩展它的功能。 由于插件的重…