----------------------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使用须知的更多相关文章

  1. @ResponseBody使用须知

    -------------------siwuxie095 @ResponseBody 使用须知 使用 @ResponseBody 注解映射响应体 @ResponseBody 注解可被应用于方法上,标 ...

  2. @RequestBody使用须知

    -----------------------siwuxie095                                 @RequestBody 使用须知         使用 @Requ ...

  3. @CookieValue使用须知

    ------------------------siwuxie095                             @CookieValue 使用须知         使用 @CookieV ...

  4. @RequestParam使用须知

    --------------------------siwuxie095                             @RequestParam 使用须知         使用 @Requ ...

  5. 《开源博客Q群》和《NET上海Q群》入群须知

    开源博客Q群 群名:<嗨-博客> 群号:469075305(已满) 491585006(New) 群简介:“我们每个猿都有一个搭建自己独立博客的梦”. 入群要求: 您可以是HR,私聊管理员 ...

  6. Spring MVC之@RequestMapping 详解

    (转自:http://blog.csdn.net/walkerjong/article/details/7994326) 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.P ...

  7. SpringMVC(五) RequestMapping 请求参数和请求头

    可以通过在@RequestMapping的params参数中设置可以传入的参数,且支持简单的表达式,如以下格式: @RequestMapping(value="helloRWorld&quo ...

  8. SpringMVC(四) RequestMapping请求方式

    常见的Rest API的Get和POST的测试参考代码如下,其中web.xml和Springmvc的配置文件参考HelloWorld测试代码中的配置. 控制类的代码如下: package com.ti ...

  9. Spring mvc中@RequestMapping 6个基本用法

    Spring mvc中@RequestMapping 6个基本用法 spring mvc中的@RequestMapping的用法.  1)最基本的,方法级别上应用,例如: Java代码 @Reques ...

随机推荐

  1. mysql主从复制搭建中几种log和pos详解

    一.主从原理 Replication 线程   Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql in ...

  2. 查看Linux物理CPU个数

    查看内核版本 lsb_release -a 查看物理CPU个数.核数.逻辑CPU个数 (1)具有相同core id的CPU是同一个core的超线程. (2)具有相同physical id的CPU是同一 ...

  3. LeetCode OJ 19. Remove Nth Node From End of List

    Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...

  4. 217/219. Contains Duplicate /Contains Duplicate II

    原文题目: 217. Contains Duplicate 219. Contains Duplicate II 读题: 217只要找出是否有重复值, 219找出重复值,且要判断两者索引之差是否小于k ...

  5. CSS3性能体验

    如今许多新技术名词在不断的被提及中,已然向我们靠近.某篮球运动员说了:“变向过人”不是超级明星的专利,也许我也可以试着去做,现在看起来效果还不错...那么,现在我们来体验CSS3:CSS3中的动画功能 ...

  6. IPSec协议;IPv6为何增加对IPSec协议的支持

      IPSec由一系列的协议组成,除IP层的协议完全结构外,还包括了AH.ESP.ISAKMP.ISAKMP的因特网IP安全解释域.IKE.OAKLEY密钥协议确定等.ESP和AH定义协议.载荷头的格 ...

  7. python类和对象的底层实现

    按照python中"一切皆对象的原理",所有创建的对象,都是一个已知存在的class实例化的结果;那么class又是被哪个"类"实例化的呢?先看下面的一段代码 ...

  8. C# 读取ini文件,读不出来原因

    先赋上相关读取ini文件代码 public class INIHelper { public string inipath; [DllImport("kernel32")] pri ...

  9. Kubernetes K8s

    1 Kubernetes入门及概念介绍 Kubernetes(K8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展.开源将Docker 看成Kubernetes内部使用的低级别组 ...

  10. package.json---入门说明

    直接的说:就是管理你本地安装的npm包 一个package.json文件可以做如下事情: 展示项目所依赖的npm包 允许你指定一个包的版本[范围] 让你建立起稳定,意味着你可以更好的与其他开发者共享 ...