首页 > 其他分享 >SpringMVC(1)-@RequestMapping的简单使用

SpringMVC(1)-@RequestMapping的简单使用

时间:2024-04-27 23:12:09浏览次数:27  
标签:buy RequestMapping bookId SpringMVC user 简单 public String

本文核心内容来自于韩顺平老师的课程
@RequestMapping注解可以用来指定控制器或者处理器的某个方法的请求url

@Controller  
public class UserServlet {  
    @RequestMapping("/login")  
    public String login() {  
        return "login";  
    }  
}

1 @RequestMapping 修饰方法和类

  1. @RequestMapping 注解可以修饰方法,还可以修饰类
  2. 当同时修饰类和方法时,请求的 url 就是组合 /类请求值/方法请求值
@Controller  
@RequestMapping("/user")  
public class UserHandler {  
    @RequestMapping(value = "/buy")  
    public String buy() {  
        System.out.println("购买商品");  
        return "success";  
    }  
}
  • 以代码为例,我们在类上加了@RequestMapping("/user") ,在方法上加了@RequestMapping("/buy") ,那么buy()方法实际代表的路径是 http://localhost:8080/工程路径/user/buy

2 @RequestMapping 指定请求方式

@Controller  
@RequestMapping("/user")  
public class UserHandler {  
    @RequestMapping(value = "/buy",method = {RequestMethod.GET, RequestMethod.POST})  
    public String buy() {  
        System.out.println("购买商品");  
        return "success";  
    }  
}
  1. method 表示目标方法的请求方法,有四个选项 POST, GET, PUT, DELETE
  2. SpirngMVC 控制器默认支持 GET 和 POST,也就是说什么都不设置,也可以接受 GET 和 POST 请求

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

@RequestMapping(value = "/buy", params = "bookId")  
public String buy(String bookId) {  
    System.out.println("购买商品");  
    return "success";  
}
  • 以上代码中,params = "bookId" 表示请求该目标方法时,必须给一个bookId参数,具体值不做限定
  • buy(String bookId) 表示请求目标方法时,请求参数携带的bookId会赋值给buy所需要的形参bookId
    我们可以对params进行限制:
  1. params = "bookId = 100" 表示必须传入bookId,且值必须是100,否则报错
  2. params = "bookId != 100" 表示必须传入bookId,且值不能是100
  3. ``
  4. params = {"bookId=1", "bookName"} 表示必须传入bookId和bookName,且bookId必须是1

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

  1. ? 表示匹配文件名中的一个字符
  2. *表示匹配文件名中的任意字符
  3. ** 表示匹配多层路径
  • /user/*/createUser: 匹配 /user/aaa/createUser/user/bbb/createUser 等 URL
  • /user/**/createUser: 匹配 /user/createUser/user/aaa/bbb/createUser 等 URL
  • /user/createUser??: 匹配 /user/createUseraa/user/createUserbb 等 URL

5. @RequestMapping 配合 @PathVariable 映射 URL 绑定的占位符

如果不用@PathVariable,我们在前端页面带参数的请求地址时候可能表示为user/login?name=tom&age=20
后端接收请求的时候采用占位符后可以写成user/login/{name}/{age},也就是tom会传给name,20传给age。
那么如何进行匹配呢,就需要借用@PathVariable,使用方法如代码:

@Controller  
public class UserHandler {  
    @RequestMapping("/user/login/{name}/{age}")  
    public String register(@PathVariable("name") String name, @PathVariable("age") int age){  
        System.out.println("接收到参数--" + "username= " + name + "--" + "usrage= " + age);  
        return "success";  
    }  
}

6.注意事项和使用细节

  1. 映射的url不能重复,比如下面代码这么设置是不被允许的
@Controller  
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. 请求简写形式
    1. @RequestMapping(value = "/buy",method = RequestMethod.POST) 等价于 @PostMapping(value = "/buy")
    2. @GetMapping @PostMapping @PutMapping @DeleteMapping使用方法类似
  2. 参数简写
    1. 如下代码,请求地址hello3与方法hello3同名,并且请求地址中的参数与方法中的形参名相同,后端可以直接接收。比如对于请求地址:localhost:9998/user/[email protected],我们的方法hello3所需要的形参email可以直接接收到内容[email protected]
@GetMapping(value = "/hello3")  
public String hello3(String email) {  
    System.out.println("hello3 " + email);  
    return "success";  
}

标签:buy,RequestMapping,bookId,SpringMVC,user,简单,public,String
From: https://www.cnblogs.com/marigo/p/18162728

相关文章

  • 简单理解盒子模型
    1.什么叫盒子模型在html中大部分元素,特别是块元素display:block;都可以被看做一个盒子。网页布局就是一个一个盒子的平铺,堆叠,嵌套摆放。这么多的盒子放在一起,最重要的就是去关注他们的各种尺寸,边界等等,主要怕意料外的重叠一类导致的显示不正常。2.W3C和IE盒子模型指的什么?W3......
  • dbt seed 处理简单说明
    dbt支持基于seed的快速建模处理(比较适合测试环境使用),我们只需要提供csv格式的文件,之后执行dbtseed就会创建对应的模型,之后我们就可以在dbt模型中引用了,以下简单说明下内部实现以及处理参考使用seed文件位置一般我们会在dbt项目的seed目录中放对应的seed文件,就是......
  • dremio 25.0 KVStore 升级简单说明
    dremio25.0开始对于数据源的存储支持加密了,所以升级上稍有不同,官方给出的操作流程如下参考处理//对于已经运行的,应该先stop,然后进行应用包的替换dremiostop//执行dremio-admin的upgradedremio-adminupgrade//启动dremiostart//停止drem......
  • dotnet C# 简单的追加文件夹到 ZipArchive 压缩文件的方法
    本文将告诉大家一个在ZipArchive里追加文件夹,以及添加过滤文件处理的压缩文件辅助方法实现的方法的代码如下///<summary>///追加文件夹到压缩文件里面///</summary>///<paramname="archive"></param>///<paramname="sourceDirectoryName"></p......
  • git的简单上传
    一、git上传项目1、gitinit2、gitadd.3、gitstatus4、链接地址gitremoteaddoriginhttps://github.com/xxx.git5、上传文件gitpull--rebaseoriginmaster,再用gitpushoriginmaster(仓库带Readme.md)gitpush-uoriginmaster(GitHub上空仓库,没有Readme.md)二......
  • amCharts简单柱形图
    代码案例<!DOCTYPEhtml><html><head><scriptsrc="https://cdn.amcharts.com/lib/5/index.js"></script><scriptsrc="https://cdn.amcharts.com/lib/5/xy.js"></script><scriptsrc=&qu......
  • 封装两个简单的Jquery组件
    Jquery给我们提供了很大的方便,我们把他看成是一个公共库,以致在这个公共库上延伸出了很多Jquery插件;在项目过程中,有些插件总是不那么令人满意;主要说两个项目用途:1、 遮罩层,跟一般的遮罩层不一样,我需要实现的是对某一个元素进行局部遮罩;2、 冒泡提示,网上有很多,我需要的只是一......
  • dotnet 简单方法在一个进程内同时跑起 WPF 和 ASP.NET Core 框架
    从设计架构上,无论是WPF还是ASP.NETCore框架,都是在dotnet运行时上层的应用,两个框架处于平级的结构。理论上讲,两个平级的框架只要不存在特殊的情况,都是能够相容存在的。本文将和大家介绍一个非常简单的方法,在一个进程内同时跑起WPF和ASP.NETCore框架在一个进程内同时跑......
  • PEcmd是一个命令行工具,用于执行各种操作系统和文件系统相关的任务。通常,它用于在Windo
    PECMD命令帮助-PECMD技术社区:www.pecmd.netPEcmd是一个命令行工具,用于执行各种操作系统和文件系统相关的任务。通常,它用于在Windows操作系统上执行各种文件和目录操作,例如文件复制、移动、删除等。PEcmd提供了一种简单而强大的方式来管理文件和目录,尤其是在自动化和批处......
  • 学习笔记447—本地部署 Llama3 – 8B/70B 大模型!最简单的方法: 支持CPU /GPU运行 【3种
    本地部署Llama3–8B/70B大模型!最简单的方法:支持CPU/GPU运行【3种方案】目前在开源大模型领域,Llama3无疑是最强的!这次Meta不仅免费公布了8B和70B两个性能强悍的大模型,400B也即将发布,这是可以和GPT-4对打的存在!今天我们就来介绍3各本地部署方法,简单易懂,非常适合新手!1.G......