@RequestMapping使用须知
----------------------siwuxie095
@RequestMapping 使用须知
使用 @RequestMapping 注解映射请求路径
即
你可以使用 @RequestMapping 注解来将请求 URL 映射到整个类上
或 某个特定的方法上,即 @RequestMapping 既可以定义在类上,
也可以定义方法上
一般来说,类级别的注解负责将一个特定(或符合某种模式)的请求
路径映射到一个控制器上,同时通过方法级别的注解来细化映射,即
根据特定的 HTTP 请求方法(GET、POST 方法等)、HTTP请求中是
否携带特定参数等条件,将请求映射到匹配的方法上
具体配置方法:
(1)映射单个 URL
@RequestMapping("") 或 @RequestMapping(value="")
(2)映射多个 URL
@RequestMapping({"",""}) 或 @RequestMapping(value={"",""})
路径开头是否加斜杠 / 均可,建议加上,如:@RequestMapping("/hello")
@RequestMapping 一共有五种映射方式:
1、标准 URL 映射
标准 URL 映射是最简单的一种映射,例如:
@RequestMapping("/hello")
或
@RequestMapping({"/hello","/world"})
2、Ant 风格的 URL 映射
Ant 通配符有三种:
|
通配符 |
说明 |
|
? |
匹配任何单字符 |
|
* |
匹配任意数量的字符(含 0 个) |
|
** |
匹配任意数量的目录(含 0 个) |
例如:
(1)@RequestMapping("/?/hello/")
(2)@RequestMapping("/*/hello")
(3)@RequestMapping("/**/hello")
3、占位符 URL 映射
URL 中可以通过一个或多个 {} 占位符映射
例如:@RequestMapping("/user/{userId}/show")
可以通过 @PathVariable("") 注解将占位符中的值绑定到方法参数上

|
/** * 如果 URL 中的 userId 是纯数字,那么使用 @PathVariable * 做绑定时,可以根据自己的需求将方法参数类型设置为 Long、 * Integer、String */ @RequestMapping("/user/{userId}/show") public ModelAndView show(@PathVariable("userId") Long userId) { // 创建 ModelAndView 对象,并设置视图名称 ModelAndView mv = new ModelAndView("show"); // 添加模型数据 mv.addObject("msg", "User ID:" + userId); return mv; } |
注意:@PathVariable("") 不能简写为 @PathVariable。因为在
正常编译时,Java 类反射对象不包含方法的参数名称。如果在编
译时将 Debug 打开(javac -debug=no),方法的参数名称才
会记录到类中,此时才能简写,但不建议简写。
编译时,打开 Debug 的方法:
打开 Eclipse,Project->Properties->Java Compiler,勾选上
Add variable attributes to generated class files … 即可

4、限制请求方法的 URL 映射
在 HTTP 请求中最常用的请求方法是 GET、POST,还有其他的
一些方法,如:DELET、PUT、HEAD 等
限制请求方法,例如:
@RequestMapping(value="/hello", method=RequestMethod.POST)
如需限制多个请求方法,以大括号包围,逗号隔开即可,例如:
method={RequestMethod.GET,RequestMethod.POST}
5、限制请求参数的 URL 映射
限制请求参数来映射 URL,例如:
@RequestMapping(value="/user/show", params="userId")
即 请求中必须带有 userId 参数
参数的限制规则如下:
(1)params="userId" 请求参数中必须包含 userId
(2)params="!userId" 请求参数中不能包含 userId
(3)params="userId!=1" 请求参数中必须包含 userId,但不能为 1
(4)params={"userId","userName"} 必须包含 userId 和 userName 参数
可以通过 @RequestParam("") 注解将请求参数绑定到方法参数上

|
@RequestMapping(value="/user/show",params="userId") public ModelAndView show(@RequestParam("userId") Long userId) { // 创建 ModelAndView 对象,并设置视图名称 ModelAndView mv = new ModelAndView("show"); // 添加模型数据 mv.addObject("msg", "User ID:" + userId); return mv; } |
要注意 @PathVariable("") 和 @RequestParam("") 的不同:
@PathVariable("") 是将 URL 中占位符处的值绑定到方法参数上
@RequestParam("") 是将 URL 后的请求参数绑定到方法参数上
附:
推荐一个模拟发送请求的 Chrome 插件 Advanced REST Client,非常好用!
https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo
【made by siwuxie095】
@RequestMapping使用须知的更多相关文章
- @ResponseBody使用须知
-------------------siwuxie095 @ResponseBody 使用须知 使用 @ResponseBody 注解映射响应体 @ResponseBody 注解可被应用于方法上,标 ...
- @RequestBody使用须知
-----------------------siwuxie095 @RequestBody 使用须知 使用 @Requ ...
- @CookieValue使用须知
------------------------siwuxie095 @CookieValue 使用须知 使用 @CookieV ...
- @RequestParam使用须知
--------------------------siwuxie095 @RequestParam 使用须知 使用 @Requ ...
- 《开源博客Q群》和《NET上海Q群》入群须知
开源博客Q群 群名:<嗨-博客> 群号:469075305(已满) 491585006(New) 群简介:“我们每个猿都有一个搭建自己独立博客的梦”. 入群要求: 您可以是HR,私聊管理员 ...
- Spring MVC之@RequestMapping 详解
(转自:http://blog.csdn.net/walkerjong/article/details/7994326) 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.P ...
- SpringMVC(五) RequestMapping 请求参数和请求头
可以通过在@RequestMapping的params参数中设置可以传入的参数,且支持简单的表达式,如以下格式: @RequestMapping(value="helloRWorld&quo ...
- SpringMVC(四) RequestMapping请求方式
常见的Rest API的Get和POST的测试参考代码如下,其中web.xml和Springmvc的配置文件参考HelloWorld测试代码中的配置. 控制类的代码如下: package com.ti ...
- Spring mvc中@RequestMapping 6个基本用法
Spring mvc中@RequestMapping 6个基本用法 spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: Java代码 @Reques ...
随机推荐
- 配置阿里云的金融云上的rsync
论坛里看到易淘发的教程, 转载过来
- 机器学习进阶-目标跟踪-KCF目标跟踪方法 1.cv2.multiTracker_create(构造选框集合) 2. cv2.TrackerKCF_create(获得KCF追踪器) 3. cv2.resize(变化图像大小) 4.cv2.selectROI(在图像上框出选框)
1. tracker = cv2.multiTracker_create() 获得追踪的初始化结果 2.cv2.TrackerKCF_create() 获得KCF追踪器 3.cv2.resize(fr ...
- YUV420格式解析<转>
在YUV420中,一个像素点对应一个Y,一个2X2的小方块对应一个U和V.对于所有YUV420图像,它们的Y值排列是完全相同的,因为只有Y的图像就是灰度图像. YUV420sp与YUV420p的数据格 ...
- Redis-Desktop-Manager的下载与使用
redis可视化工具 参考 https://blog.csdn.net/Future_LL/article/details/84591057
- Leetcode 题解 First Missing Positive
Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0] ...
- C++“隐藏实现,开放接口”的实现方案
为什么要有接口? 接口就是一个程序与其它程序交流的窗口.就比如有一个电视机,我并不需要知道它是怎样工作的,我只要知道按电源键就可以开启电视,按节目加(+)减(-)可以切换电视频道就可以了. Java程 ...
- ReactiveX 学习笔记(7)聚合操作符
Mathematical and Aggregate Operators 本文的主题为处理 Observable 的聚合操作符. 这里的 Observable 实质上是可观察的数据流. RxJava操 ...
- 关于nginx多层uptstream转发获取客户端真实IP的问题
因为公司有个需求需要获取客户端的真实IP,前端是haproxy,后面是nginx,本来这个需求不难完成,但是难就难在是https请求也就是ssl 由于个人水平有限,在网上爬了很多资料,刚开始的ha是通 ...
- 转: python requests的安装与简单运用
requests是Python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢? 官方文档中是这样说明的: python的标准库urlli ...
- Python中os模块使用方法
os模块提供了对系统环境.文件.目录等操作系统级的接口函数.本文主要描述os模块和os.path模块常用函数以及常用实例. os模块函数 os.getcwd() 获取当前工作的目录. os.listd ...