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


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

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

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

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

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

    🥰 @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";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    创建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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    创建success.jsp
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>操作成功title>
    head>
    <body>
    <h1>恭喜, 操作成功~h1>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    完成测试(页面方式)

    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
    • 2
    • 3
    • 4
    • 5
    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";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    修改 request.jsp , 增加代码
    <hr><h1>演示params的使用h1>
    <a href="user/find?bookId=100">查询书籍a>
    
    • 1
    • 2
    页面方式完成测试-- 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";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    添加request.jsp代码
    <hr><h1>演示Ant风格的请求资源方式 h1>
    <a href="user/message/aa">发送消息1a><br>
    <a href="user/message/aa/bb/cc">发送消息2a><br>
    
    • 1
    • 2
    • 3
    Postman 完成测试

    img

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

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

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

    < h 1>占位符的演示

    占位符的演示

    要求:

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

    @PathVariable(“username”)…

    前端页面代码: 占位符的演示

    (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";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    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";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    服务端报错信息: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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    后端代码

    注意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";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    😄总结

    @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连支持一下,创造不易您们的支持是我的动力🤞

  • 相关阅读:
    Unity中的AI算法和实现2-有限状态机FSM(上)
    国微FPGA培训
    企业申请车辆前雾灯E-mark认证的前提条件
    经典文献阅读之--STD(激光SLAM回环检测算法)
    2678. 老人的数目 --力扣 --JAVA
    网络编程中的IO模型
    hiveSql冷门但好用函数 --持续更新
    JDK1.5后增加了泛型,那么为什么要有泛型呢?我们该如何自定义泛型结构呢?
    前后端分离项目,整合成jar包,刷新404或空白页,解决方法
    如何关联分段代码表生成统计报表
  • 原文地址:https://blog.csdn.net/apple_67445472/article/details/132325675