@RequestMapping 注解以及其它使用方式

news2024/11/20 18:24:02

😀前言
本篇主要讲解@RequestMapping 注解以及其它使用方式

🏠个人主页:尘觉主页
在这里插入图片描述

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

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

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

文章目录

  • 🥰 @RequestMapping 注解以及其它使用方式
    • 说明:
      • 注意
      • 代码演示
        • 创建Texe,java
        • 创建request.jsp
        • 创建success.jsp
        • 完成测试(页面方式)
        • 页面方式完成测试-- Postman
    • 🤩@RequestMapping 可以指定请求方式
      • 注意
      • 应用实例
    • 😋@RequestMapping 可指定 params 和 headers 支持简单表达式
      • 列如
        • 修改 request.jsp , 增加代码
        • 页面方式完成测试-- Postman
      • 小的细节说明和测试
        • 1) 需要有 bookId 参数,并且值为 100, 否则报错
        • 2) 需要有 bookId 参数,并且值不为100否则报错
    • 🤔@RequestMapping 支持 Ant 风格资源地址
      • 应用实例
        • 添加request.jsp代码
        • Postman 完成测试
    • 🧐@RequestMapping 还可以配合 @PathVariable 映射 URL 绑定的占位符。
      • 要求:
        • Postman 完成测试
      • 注意事项和使用细节
        • 映射的 URL, 不能重复
      • 各种请求的简写形式
        • 说明
  • 🧡综合代码示例
      • jsp代码
      • 后端代码
    • 😄总结

🥰 @RequestMapping 注解以及其它使用方式

@RequestMapping 可以修饰方法和类

说明:

@RequestMapping 注解可以修饰方法,还可以修饰类 当同时修饰类和方法时,

请求的 url 就是组合 /类请求值/方法请求值

注意

  1. method=RequestMethod.POST: 表示请求buy目标方法必须是 post

  2. RequestMethod 四个常用选项 POST, GET, PUT, DELETE[后面我们会详解]

  3. SpringMVC 控制器默认支持GET和POST两种方式

  4. buy()方法请求的url: http://ip:port/工程路径/user/buy

  5. @PostMapping(value = “/buy”)

等价 @RequestMapping(value = “/buy”,method = RequestMethod.POST)

代码演示

创建Texe,java

@RequestMapping(value = "/user")
@Controller //UserHandler就是一个处理器/控制器,注入到容器
public class UserHandler {

    
    //@RequestMapping(value = "/buy",method = RequestMethod.POST)
    @PostMapping(value = "/buy")
    public String buy() {
        System.out.println("购买商品~");
        return "success";
    }

创建request.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>购买商品</title>
</head>
<body>
<h1>购买商品</h1>
<%--老师解读
1. action="user/buy" 对应 url http://localhost:8080/工程路径/user/buy
--%>
<form action="user/buy" method="post">
    购买人:<input type="text" name="username"><br>
    够买量:<input type="text" name="nums"><br>
    <input type="submit" value="购买">
</form>

创建success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>操作成功</title>
</head>
<body>
<h1>恭喜, 操作成功~</h1>
</body>
</html>

完成测试(页面方式)

img

页面方式完成测试-- Postman

img

🤩@RequestMapping 可以指定请求方式

  1. 说明: @RequestMapping 还可以指定请求的方式(post/get/put/delete…), 请求的方式需
    要和指定的一样,否则报错

  2. SpringMVC 控制器默认支持GET和POST两种方式, 也就是你不指定 method , 可以接收GET 和 POST 请求

注意

  1. @GetMapping(value = “/find”)

等价 @RequestMapping(value = “/find”,method = RequestMethod.GET)

应用实例

    @RequestMapping(value = "/find", method = RequestMethod.GET)
    public String search(String bookId) {
        System.out.println("查询书籍 bookId= " + bookId);
        return "success";
    }
  1. 当明确指定了 method , 则需要按指定方式请求, 否则会报错,比如

img

😋@RequestMapping 可指定 params 和 headers 支持简单表达式

  1. param1: 表示请求必须包含名为 param1 的请求参数

  2. !=param1: 表示请求不能包含名为 param1 的请求参数

  3. param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1

  4. {“param1=value1”, “param2”}: 请求必须包含名为 param1 和 param2 的两个请求参数,且 param1 参数的值必须为value1

列如

  1. params=“bookId” 表示请求该目标方法时,必须给一个bookId参数, 值没有限定

  2. search(String bookId): 表示请求目标方法时, 携带的bookId=100, 就会将请求携带的 bookId对应的值 100, 赋给 String bookId

  3. params = “bookId=100” 表示必须给一个bookId参数, 而且值必须是100

@RequestMapping(value = "/user")
@Controller //UserHandler就是一个处理器/控制器,注入到容器
    public class UserHandler { 
    @RequestMapping(value = "/find", params = "bookId=100", method = RequestMethod.GET)
        public String search(String bookId) {
            System.out.println("查询书籍 bookId= " + bookId);
            return "success";
    }
}

修改 request.jsp , 增加代码

<hr><h1>演示params的使用</h1>
<a href="user/find?bookId=100">查询书籍</a>

页面方式完成测试-- Postman

img

小的细节说明和测试

1) 需要有 bookId 参数,并且值为 100, 否则报错

@RequestMapping(value = “/find”, params = “bookId=100”, method == RequestMethod.GET)

img

2) 需要有 bookId 参数,并且值不为100否则报错

@RequestMapping(value = “/find”, params = “bookId!=100”, method = RequestMethod.GET

img

🤔@RequestMapping 支持 Ant 风格资源地址

  1. ?:匹配文件名中的一个字符

  2. *:匹配文件名中的任意字符

  3. **:匹配多层路径

  4. Ant 风格的 url 地址举例

  5. /user/*/createUser: 匹配 /user/aaa/createUser、/user/bbb/createUser 等 URL

  6. /user/**/createUser: 匹配 /user/createUser、/user/aaa/bbb/createUser 等 URL

  7. /user/createUser??: 匹配 /user/createUseraa、/user/createUserbb 等 URL

应用实例

@RequestMapping(value = "/user")
@Controller //UserHandler就是一个处理器/控制器,注入到容器
public class UserHandler {
   
 @RequestMapping(value = "/message/**")
        public String im() {
            System.out.println("发送消息");
            return "success";
    }
}

添加request.jsp代码

<hr><h1>演示Ant风格的请求资源方式 </h1>
<a href="user/message/aa">发送消息1</a><br>
<a href="user/message/aa/bb/cc">发送消息2</a><br>

Postman 完成测试

img

🧐@RequestMapping 还可以配合 @PathVariable 映射 URL 绑定的占位符。

这样就不需要在 url 地址上带参数名了,更加的简洁明了

比如: 我们的前端页面是 这样的, kristina 和 300 是参数值

< h 1>占位符的演示</h 1>

占位符的演示</ a>

要求:

我们希望目标方法获取到 username 和 userid, value=“/xx/{username}” -

@PathVariable(“username”)…

前端页面代码: 占位符的演示</ a>

(value = “/reg/{username}/{userid}”): 表示kristina->{username} 300=>{userid}

@RequestMapping(value = "/user")
@Controller //UserHandler就是一个处理器/控制器,注入到容器
public class UserHandler {
    @RequestMapping(value = "/reg/{username}/{userid}")
    public String register(@PathVariable("username") String name,
                           @PathVariable("userid") String id) {
        System.out.println("接收到参数--" + "username= " + name + "--" + "usreid= " + id);
        return "success";
    }
}

Postman 完成测试

img

注意事项和使用细节

映射的 URL, 不能重复

@RequestMapping(value = "/user")
@Controller //UserHandler就是一个处理器/控制器,注入到容器
public class UserHandler {   
    @RequestMapping(value = "/hi")
    public String hi() {
        System.out.println("hi");
        return "success";
    }

    @RequestMapping(value = "/hi")
    public String hi2() {
       System.out.println("hi");
       return "success";
    }
}

服务端报错信息:to { [/user/hi]}: There is already ‘userHandler’ bean metho

各种请求的简写形式

说明

@RequestMapping(value = “/buy”,method = RequestMethod.POST) 等 价

@PostMapping(value = “/buy”)

简写方式一览: @GetMapping @PostMapping @PutMapping @DeleteMapping

这个在上面的代码中也提到过 和有具体的列子 这里只是具体说一下

🧡综合代码示例

编写一个表单, 以 Post 提交 Computer 信息, 后端编写 ComputerHandler, 可以接收到信息

img

jsp代码

<h1>电脑信息</h1>

<form action="computer/info" method="post">
    品牌:<input type="text" name="brand"><br>
    价格:<input type="text" name="price"><br>
    数量:<input type="text" name="nums"><br>
    <input type="submit" value="提交">
</form>

后端代码

注意info方法的形参名需要和请求的参数名一致

@RequestMapping("/computer")
@Controller
public class ComputerHandler {

    //这里一定要注意,info方法的形参名需要和请求的参数名一致
    @PostMapping("/info")
    public String info(String brand, String price, String nums) {
        System.out.println("电脑信息 brand=" + brand
                + " price=" + price + " nums=" + nums);

        return "success";
    }
}

😄总结

@RequestMapping 还可以指定请求的方式(post/get/put/delete…), 请求的方式需
要和指定的一样,否则报错

  1. ?:匹配文件名中的一个字符

  2. *:匹配文件名中的任意字符

  3. **:匹配多层路径

  4. Ant 风格的 url 地址举例

  5. /user/*/createUser: 匹配 /user/aaa/createUser、/user/bbb/createUser 等 URL

  6. /user/**/createUser: 匹配 /user/createUser、/user/aaa/bbb/createUser 等 URL

  7. /user/createUser??: 匹配 /user/createUseraa、/user/createUserbb 等 URL

😁热门专栏推荐

想学习vue的可以看看这个
java基础合集
数据库合集
redis合集
nginx合集
linux合集
等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

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

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

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

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

相关文章

SpringMVC之异常处理

SpringMVC之异常处理 异常分为编译时异常和运行时异常&#xff0c;编译时异常我们trycatch捕获&#xff0c;捕获后自行处理&#xff0c;而运行时异常是不可预期的&#xff0c;就需要规范编码来避免&#xff0c;在SpringMVC中&#xff0c;不管是编译异常还是运行时异常&#xff…

jenkins 连接服务器,提示Can‘t connect to server

在Jenkins 添加服务器时&#xff0c;提示 Cant connect to server&#xff0c;如图 搞了好久&#xff0c;不知道为什么不行~原来是行的&#xff0c;现在删了 新建一个也不行。

浅谈KNX总线技术在图书馆智能照明系统的应用

安科瑞 华楠 摘要&#xff1a;系统引入KNX总线实现的照明分布式智能控制&#xff0c;在提高馆所照明系统的节能效果、视觉效果和稳定性的基础上&#xff0c;展现了KNX总线部署便捷、扩充性强、可靠性高等自身要求&#xff0c;通过提升照明管理效率&#xff0c;营造了信息时代背…

蒙特卡洛树搜索(MCTS)在AlphaGo Zero中

蒙特卡洛树搜索&#xff08;MCTS&#xff09;在AlphaGo Zero中 一、说明 蒙特卡洛树&#xff08;Monte Carlo Tree&#xff09;是一种搜索算法&#xff0c;主要用于解决决策问题。它的核心思想是通过模拟游戏过程&#xff0c;评估各个节点的胜率&#xff0c;从而选择最优策略。…

dom靶场

靶场下载地址&#xff1a; https://www.vulnhub.com/entry/domdom-1,328/ 一、信息收集 获取主机ip nmap -sP 192.168.16.0/24netdiscover -r 192.168.16.0/24端口版本获取 nmap -sV -sC -A -p 1-65535 192.168.16.209开放端口只有80 目录扫描 这里扫描php后缀的文件 g…

cadence virtuoso GBW PM公式仿真

在virtuoso中用公式calculate的方法仿真单位增益带宽GBW和相位裕度 首先进行stb仿真 将增益曲线send to calculate&#xff0c;调用cross函数&#xff0c;threshold value设置为0&#xff0c;求0dB时的横坐标 GBW&#xff1a; 将相位曲线send to calculate&#xff0c;调用va…

TuyaOS 3.8.0操作系统新鲜出炉!IoT开发门槛再次被降低

作为降低物联网开发门槛的 TuyaOS 操作系统&#xff0c;此次迎来了重大更新&#xff01;TuyaOS 3.8.0 新版本不仅更新了物联网各个板块的开发框架&#xff0c;还能实现与其他开发平台的无缝接入&#xff0c;致力于让开发者更轻松便捷地接入涂鸦 IoT PaaS。 TuyaOS 3.8.0 优化和…

等保案例 6

用户简介 江苏省监狱管理局是江苏省司法厅管理下的副厅级部门管理机构&#xff0c;是主管全省监狱工作的机关。随着信息化的发展&#xff0c;江苏省监狱管理局的监狱业务对网络和信息系统的依赖不断增加&#xff0c;网络流转的信息量不断增大&#xff0c;信息化建设的需求也日…

docker 第一章

目录 1.安装 docker 2.镜像、容器 3.总结 1.安装 docker 2.镜像、容器 3.总结 容器在 linux 上的本机运行&#xff0c;与其他容器共享主机的内核。它运行的是一个独立的进程&#xff0c;不占用其他任何可执行文件的内存&#xff0c;非常轻量级。

Python基础教程:私有变量的访问和赋值教程

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 首先我们这里先描述下&#xff1a; Python中&#xff0c;变量名类似__x__的&#xff0c;以双下划线开头&#xff0c;并且以双下划线结尾的&#xff0c;是特殊变量&#xff0c;特殊变量是可以直接访问的&#xff08;比如 doc, __i…

File Upload

File Upload 文件上传功能是大部分WEB应用的常用功能&#xff0c;网站允许用户自行上传头像、照片、一些服务类网站需要用户上传证明材料的电子档、电商类网站允许用户上传图片展示商品情况等。然而&#xff0c;看似不起眼的文件上传功能如果没有做好安全防护措施&#xff0c;…

Camunda 7.x 系列【17】BusinessKey

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 需求场景2. 案例演示2.1 创建请假申请2.2 启动流程2.3 流程关联业务查询2.4 业务关联流程…

❤ 好玩有趣的Windows本地域名预设映射

❤ Win10 如何把本地ip映射成域名 1、 配置&#xff1a; Windows本地域名预设映射 打开相关的地址&#xff1a; C:\Windows\System32\drivers\etc配置方式&#xff1a; 打开hosts 文件 域名如&#xff1a;127.0.0.1 www.baidu.com 127.0.0.1 www.sellercentral.amazon.com2…

计算机视觉五大核心研究任务全解:分类识别、检测分割、人体分析、三维视觉、视频分析

目录 一、引言1.1 计算机视觉的定义1.1.1 核心技术1.1.2 应用场景 1.2 历史背景及发展1.2.1 1960s-1980s: 初期阶段1.2.2 1990s-2000s: 机器学习时代1.2.3 2010s-现在: 深度学习的革命 1.3 应用领域概览1.3.1 工业自动化1.3.2 医疗图像分析1.3.3 自动驾驶1.3.4 虚拟现实与增强现…

日历应用行业研究:2022年全球市场规模大约为15.8亿元

日历应用程序可以通过提醒、安排会议和规划用户的日期、星期和月份来创建基本的时间块条目&#xff0c;以确保用户随时随地、尽可能高效地利用他们的时间。日历应用作为一个高效的时间管理工具&#xff0c;需要与项目管理工具&#xff0c;google邮箱&#xff0c;Outlook邮箱&am…

Go 安装配置

介绍Ubuntu20.04 安装和配置Go 1.安装Go 去这个地方下载Go https://go.dev/doc/install 如果之前安装过&#xff0c;可以参考这个&#xff08;没有可以忽略&#xff09; 下载完成后执行 sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz 然后修改环境变量 sudo ge…

SpringBoot的配置文件以及日志设置

在使用SpringBoot开发的过程中我们通常会用到配置文件来设置配置信息 以及使用日志来进行记录我们的操作&#xff0c;方便我们对错误的定位 配置文件的作用在于&#xff1a;设置端口&#xff0c;设置数据库连接信息&#xff0c;设置日志等等 在SpringBoot中&#xff0c;配置…

vue基础知识五:请描述下你对vue生命周期的理解?在created和mounted这两个生命周期中请求数据有什么区别呢?

一、生命周期是什么 生命周期&#xff08;Life Cycle&#xff09;的概念应用很广泛&#xff0c;特别是在政治、经济、环境、技术、社会等诸多领域经常出现&#xff0c;其基本涵义可以通俗地理解为“从摇篮到坟墓”&#xff08;Cradle-to-Grave&#xff09;的整个过程在Vue中实…

前端性能优化——包体积压缩插件,打包速度提升插件,提升浏览器响应的速率模式

前端代码优化 –其他的优化可以具体在网上搜索 压缩项目打包后的体积大小、提升打包速度&#xff0c;是前端性能优化中非常重要的环节&#xff0c;结合工作中的实践总结&#xff0c;梳理出一些 常规且有效 的性能优化建议 ue 项目可以通过添加–report命令&#xff1a; "…

常见架构类型

目录 1.单机架构 2.应用数据分离架构 3.读写分离架构 4.冷热分离架构 5.垂直分库架构 6.微服务架构 7.容器编排架构 1.单机架构 单机架构是简单的将应用服务和数据库服务部署到同一台机器上。 缺点&#xff1a;存在很大的性能限制。 2.应用数据分离架构 引入负载均衡&a…