SpringMVC-@RequestMapping的参数和用法
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的参数和用法的更多相关文章
- SpringMVC RequestMapping & 请求参数
SpringMVC 概述 Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一 Spring3.0 后全面超越 Struts2,成为最优秀的 MVC ...
- SpringMVC +mybatis+spring 结合easyui用法及常见问题总结
SpringMVC +mybatis+spring 结合easyui用法及常见问题总结 1.FormatString的用法. 2.用postAjaxFillGrid实现dataGrid 把form表单 ...
- SpringMVC RequestMapping 详解
SpringMVC RequestMapping 详解 RequestMapping这个注解在SpringMVC扮演着非常重要的角色,可以说是随处可见.它的知识点很简单.今天我们就一起学习Spring ...
- Spring mvc中@RequestMapping 6个基本用法
Spring mvc中@RequestMapping 6个基本用法 spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: Java代码 @Reques ...
- [Spring MVC] - SpringMVC的各种参数绑定方式
SpringMVC的各种参数绑定方式 1. 基本数据类型(以int为例,其他类似):Controller代码: @RequestMapping("saysth.do") publi ...
- springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例
案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...
- SpringMVC的各种参数绑定方式
1. 基本数据类型(以int为例,其他类似):2. 包装类型(以Integer为例,其他类似):3. 自定义对象类型:4. 自定义复合对象类型:5. List绑定:6. Set绑定:7. Map绑定: ...
- 【springmvc Request】 springmvc请求接收参数的几种方法
通过@PathVariabl注解获取路径中传递参数 转载请注明出处:springmvc请求接收参数的几种方法 代码下载地址:http://www.zuida@ima@com/share/1751862 ...
- SpringMVC Controller接收参数总结
本文中Controller的开发环境如下表格所示,Maven对应POM配置如下代码段所示: 系统/工具 版本号OS Windows 7 Home BasicJava 1.7.0_79Eclipse M ...
- SpringMVC接受JSON参数详解及常见错误总结我改
SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...
随机推荐
- windows 下读取文件名称和类型
def getFileWithType(self,xname): # xname='E:\\python\\recievedir\\data.pkl' # xname='E:\python\test. ...
- 6、json支持
package main import ( "encoding/json" "fmt") // Json 支持 type Response1 struct{ P ...
- df 显示 100%的问题
问题: 使用 df 命令查看,某个分区使用率已经达到100%,但是用du 命令统计该分区,发现该分区空间剩余10G可用. 实例: 分析: ...
- bzoj1051 [HAOI2006]受欢迎的牛 tarjan&&缩点
题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C ...
- Centos7:yum安装apache,编译安装php5.6,不解析php的解决方法
首先,说一下问题发生的场景: 因为懒,所以用 yum 安装 apache ,因为 centos 的源自带 php 5.4 不能符合环境要求,而不想用其他源,所以选择源码编译安装 php 5.6 安装完 ...
- vue使用axios中 this 指向问题
1.解决办法 在vue中使用axios做网络请求的时候,会遇到this不指向vue,而为undefined,可以使用箭头函数"=>"来解决.如下: methods: { lo ...
- caioj 1074 动态规划入门(中链式1:最小交换合并问题)
经典的石子合并问题!!! 设f[i][j]为从i到j的最大值 然后我们先枚举区间大小,然后枚举起点终点来更新 f[i][j] = min(f[i][k] + f[k+1][j] + sum(i, j) ...
- HDU 4928 Series 2
有了题解以后这题就成了一个模拟题.不过写了好久才把它写对…… Sad #include <iostream> #include <cstdio> #include <cs ...
- HTML学习----------DAY2第五节
属性为 HTML 元素提供附加信息. HTML 属性 HTML 标签可以拥有属性.属性提供了有关 HTML 元素的更多的信息. 属性总是以名称/值对的形式出现,比如:name="value& ...
- 洛谷 P1071 潜伏者
P1071 潜伏者 题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S ...