RequestMapping里面的注解包含的参数如图:

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestMapping 除了修饰方法, 还可来修饰类 :

类定义处: 提供初步的请求映射信息。相对于 WEB 应用的根目录;

方法处: 提供进一步的细分映射信息。 相对于类定义处的 URL。

若类定义处未标注 @RequestMapping,则方法处标记的 URL相对于 WEB 应用的根目录

返回ModelAndView时的url会根据你的 @RequestMapping实际情况组成。 
如果类上没有映射,那么url直接就是方法的映射;否则url为类上+方法上映射路径组合。

对应项目jsp位置则是一级路径对应一级文件目录。

如url为/default/index对应项目中webapp/default/index.jsp


RequestMapping注解有六个属性,下面我们把她分成三类进行说明。

【1、 value, method;】

value:指定请求的实际地址,指定的地址可以是URI Template 模式;

method: 指定请求的method类型, GET、POST、PUT、DELETE等;


【2、consumes,produces;】

consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;


【3、 params,headers;】

params: 指定request中必须包含某些参数值时,才让该方法处理。

headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。


测试示例如下:

【1】value

  • JSP 页面
<a href="springmvc/testRequestMapping">Test RequestMapping</a>
  • 1
  • controller
    @RequestMapping(value="/testRequestMapping" )
public String testRequestMapping() {
System.out.println("testRequestMapping");
return SUCCESS;
}
  • 1
  • 2
  • 3
  • 4
  • 5

成功返回success.jsp 。

Tips :若 href 属性值,不等于value值,则将提示404错误。


value的uri值为以下三类:

A) 可以指定为普通的具体值;

如下:

@RequestMapping("/testRequestMapping")
  • 1

B) 可以指定为含有某变量的一类值(URI Template Patterns with Path Variables)–restful风格;

    @RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable Integer id2) {
System.out.println("testPathVariable: " + id2);
return SUCCESS;
}
  • 1
  • 2
  • 3
  • 4
  • 5

其中关于@PathVariable 有如下说明:

① 如果路径中的变量与方法中的变量名一致,可直接使用@PathVariable;

② 如果二者不一致,则使用@PathVariable(Variable)显示指定要绑定的路径中的变量 。

@PathVariable只能绑定路径中的占位符参数,且路径中必须有参数。

@PathVariable用法参考路径参数绑定参考

    @RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id2) {
System.out.println("testPathVariable: " + id2);
return SUCCESS;
}
//路径中的 id 与 方法中的 id2 绑定
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

C) 可以指定为含正则表达式的一类值( URI Template Patterns with Regular Expressions);

@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")
public void handle(@PathVariable String version, @PathVariable String extension) {
// ...
}
}
  • 1
  • 2
  • 3
  • 4
  • 5

【2】method

  • JSP 页面
<a href="springmvc/testMethod">Test Method</a>
//href 默认为get 请求。
  • 1
  • 2
  • controller–限制接收post 请求。
    @RequestMapping(value = "/testMethod", method = RequestMethod.POST)
public String testMethod() {
System.out.println("testMethod");
return SUCCESS;
}
  • 1
  • 2
  • 3
  • 4
  • 5
    • result as follows :

HTTP Status 405 - Request method ‘GET’ not supported 。

【状态码405表示:请求中指定的方法不被允许。】

将method 改为method = RequestMethod.GET正常跳转页面。


【3】consumes

  • JSP 页面

仍以testMethod为例,提交表单。

默认contentType为Content-Type:application/x-www-form-urlencoded。

    <form action="springmvc/testMethod" method="POST">
<input type="text" name="username" value=""/>
<input type="submit" value="submit"/>
</form>
  • 1
  • 2
  • 3
  • 4
  • 5


  • controller–限制接收post 请求以及consumes="application/json"
    @RequestMapping(value = "/testMethod", method = RequestMethod.POST,consumes="application/json")
public String testMethod() {
System.out.println("testMethod");
return SUCCESS;
}
  • 1
  • 2
  • 3
  • 4
  • 5
    • result as follows :

【状态码415表示:由于媒介类型不被支持,服务器不会接受请求。。】

去掉 consumes属性,页面正常跳转 !


【4】produces

后台代码如下:

@RequestMapping(value = "/testMethod", method = RequestMethod.POST,produces="application/json")
public void testMethod2(HttpServletRequest request,HttpServletResponse response,Model model)
throws IOException {
request.getHeader("Accept");
System.out.println(request.getHeader("Accept"));
// response.setContentType("application/json");
String username = request.getParameter("username");
System.out.println("testMethod..."+username);
model.addAttribute("user", username);
Object jsonString = "{'name': 'helloworlda'}";
JSONObject jsonobj=JSONObject.fromObject(jsonString);
PrintWriter out = response.getWriter();
out.print(jsonobj);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 浏览器请求头
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  • 1

其中最后一项 : */*;q=0.8

该项表明可以接收任何类型的,权重系数0.8表明如果前面几种类型不能正常接收。则使用该项进行自动分析。

application/json 几种主流浏览器都可以自动解析。


【5】params

  • JSP页面
    form action="springmvc/testParamsAndHeaders" method="POST">
<input type="text" name="username" value=""/>
<input type="text" name="age" value=""/>
<input type="submit" value="submit"/>
</form>
  • 1
  • 2
  • 3
  • 4
  • 5

参数 username=tom;age = 10;

  • 后台代码:

设定必须包含username 和age两个参数,且age参数不为10 (可以有多个参数)。

@RequestMapping(value = "testParamsAndHeaders", params = { "username","age!=10" })
public String testParamsAndHeaders() {
System.out.println("testParamsAndHeaders");
return SUCCESS;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • result as follows :

【状态码400表示:服务器未能理解请求。 】

  • 将age 改为其他值,正常跳转。


【6】headers

  • 浏览器请求头如下:

  • 后台测试代码如下:
@RequestMapping(value = "testParamsAndHeaders", params = { "username","age!=10" }, headers = { "Accept-Language=US,zh;q=0.8" })
public String testParamsAndHeaders() {
System.out.println("testParamsAndHeaders");
return SUCCESS;
}
  • 1
  • 2
  • 3
  • 4
  • 5

设定请求头中第一语言必须为US。

  • result as follows :

【状态码404表示:服务器无法找到被请求的页面。】

将后台代码改为zh-CN。。。

页面正常跳转。

SpringMVC-@RequestMapping的参数和用法的更多相关文章

  1. SpringMVC RequestMapping & 请求参数

    SpringMVC 概述 Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一 Spring3.0 后全面超越 Struts2,成为最优秀的 MVC ...

  2. SpringMVC +mybatis+spring 结合easyui用法及常见问题总结

    SpringMVC +mybatis+spring 结合easyui用法及常见问题总结 1.FormatString的用法. 2.用postAjaxFillGrid实现dataGrid 把form表单 ...

  3. SpringMVC RequestMapping 详解

    SpringMVC RequestMapping 详解 RequestMapping这个注解在SpringMVC扮演着非常重要的角色,可以说是随处可见.它的知识点很简单.今天我们就一起学习Spring ...

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

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

  5. [Spring MVC] - SpringMVC的各种参数绑定方式

    SpringMVC的各种参数绑定方式 1. 基本数据类型(以int为例,其他类似):Controller代码: @RequestMapping("saysth.do") publi ...

  6. springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例

    案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...

  7. SpringMVC的各种参数绑定方式

    1. 基本数据类型(以int为例,其他类似):2. 包装类型(以Integer为例,其他类似):3. 自定义对象类型:4. 自定义复合对象类型:5. List绑定:6. Set绑定:7. Map绑定: ...

  8. 【springmvc Request】 springmvc请求接收参数的几种方法

    通过@PathVariabl注解获取路径中传递参数 转载请注明出处:springmvc请求接收参数的几种方法 代码下载地址:http://www.zuida@ima@com/share/1751862 ...

  9. SpringMVC Controller接收参数总结

    本文中Controller的开发环境如下表格所示,Maven对应POM配置如下代码段所示: 系统/工具 版本号OS Windows 7 Home BasicJava 1.7.0_79Eclipse M ...

  10. SpringMVC接受JSON参数详解及常见错误总结我改

    SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...

随机推荐

  1. python ftp

    #fpt_server.py#__*__ encoding=utf-8 __*__ import socket ,os class MyClass(object): def __init__(self ...

  2. vuejs on

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. vue动态绑定img标签的src地址

    问题代码: <li v-for="(item,index) in images" :key="index"> <img :src=" ...

  4. Laravel核心解读--HTTP内核

    Http Kernel Http Kernel是Laravel中用来串联框架的各个核心组件来网络请求的,简单的说只要是通过public/index.php来启动框架的都会用到Http Kernel,而 ...

  5. Unity WebGL 窗口自适应

    unity 打包好WebGL后,用文本编辑器编辑打包生成的 index.html 文件 在生成的html里面修改代码     <script type="text/javascript ...

  6. RMQ算法 以及UVA 11235 Frequent Values(RMQ)

    RMQ算法 简单来说,RMQ算法是给定一组数据,求取区间[l,r]内的最大或最小值. 例如一组任意数据 5 6 8 1 3 11 45 78 59 66 4,求取区间(1,8)  内的最大值.数据量小 ...

  7. 我在看着你呢——shiro学习

    说实话开学第一周效率并不高.项目该结的都差不多结了,看来这毛病我是养成了.项目忙的要死的时候,想休息想停一停就不断往下扔包袱.一下没项目了开学了,反倒开始手痒,捉摸着写点什么代码.马上我的小mac就要 ...

  8. input[type=date]

    ::-webkit-datetime-edit – 控制编辑区域的 ::-webkit-datetime-edit-fields-wrapper – 控制年月日这个区域的 ::-webkit-date ...

  9. 原型,构造函数,实例,__proto__

    再说说__proto__,这个孩子性格慢向,所以即使在现代浏览器广为支持得今天也不建议使用,性能特别慢,而且影响所有来自该[[prototype]]的对象.只是拿出来了解了解: 1.它是个啥? 原型对 ...

  10. Linux下java/bin目录下的命令集合

    Linux下JAVA命令(1.7.0_79) 命令 详解 参数列表 示例 重要程度 资料 appletviewer Java applet 浏览器.appletviewer 命令可在脱离万维网浏览器环 ...