SpringMVC基础-@RequestMapping
@RequestMapping
@RequestMapping是一个用来处理请求地址映射的注解
可用于类或方法上。
类定义处:提供初步的请求映射信息。相当于当前 WEB 应用的根目录
方法处:提供进一步的细分映射信息。相对于类定义处的 URL。
若类定义处未标注 @RequestMapping,则方法处标记的 URL 相当于当前 WEB 应用的根目录
若类定义处标注 @RequestMapping,则方法处标记的 URL 相对于类定义处的@RequestMapping而言的!
DispatcherServlet 截获请求后,就通过控制器上@RequestMapping 提供的映射信息确定请求所对应的处理方法。
@RequestMapping参数
1、value
指定请求的实际地址,指定的地址可以是URI Template 模式;
value的uri值为以下三类:
A) 可以指定为普通的具体值;如@RequestMapping(value="/deleteStudent")
B) 可以指定为含有某变量的一类值(URI Template Patterns with Path Variables);如@RequestMapping(value="/deleteStudent/{id}"),要在该方法中获取id时,需要使用@PathVariable(value = "id"),普通参数使用@RequestParam(value="id",required=false,defaultValue="123")获取,不加也可以,框架会自动加上,required=false表示不必须有id参数,,defaultValue表示默认值,此方法不能获取对象,对象用@ModelAttribute()获取
C) 可以指定为含正则表达式的一类值( URI Template Patterns with Regular Expressions);如@RequestMapping(value="/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")
2、method
指定处理的请求的method类型, GET、POST、PUT、DELETE等; 不能直接响应PUT、DELETE请求,看另一片博客
3、consumes
指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;如@RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json"),方法仅处理request Content-Type为“application/json”类型的请求。
4、produces
指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;如@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json"),方法仅处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;
5、params
指定request中是否包含某些参数值或指定参数必须等于某个值或指定参数必须不等于某个值,满足条件才让该方法处理;如@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue"),仅处理请求中包含了名为“myParam”,值为“myValue”的请求;
6、headers
指定request中是否包含某些header值或指定header值必须等于某个值或指定header值必须不等于某个值,满足条件才能让该方法处理请求;如@RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/"),仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.ifeng.com/”的请求;
params 和 headers支持简单的表达式:
param1: 表示请求必须包含名为 param1 的请求参数
!param1: 表示请求不能包含名为 param1 的请求参数
param1 != value1: 表示请求可以包含名为 param1 的请求参数,但其值不能为 value1
{“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2 的两个请求参数,且 param1 参数的值必须为 value1!
@RequestMapping 还支持 Ant 风格的 URL:
Ant 风格资源地址支持 3 种匹配符:
?:匹配文件名中的一个字符
/user/**/createUser: 匹配 /user/createUser、/user/aaa/bbb/createUser 等 URL
*:匹配文件名中的任意多个任意字符[0个字符除外!]
/user/*/createUser: 匹配 /user/aaa/createUser、/user/bbb/createUser 等 URL
**:** 匹配多层路径
/user/createUser??: 匹配/user/createUseraa、/user/createUserbb 等 URL
SpringMVC基础-@RequestMapping的更多相关文章
- SpringMVC基础03——常用注解之@RequestMapping
1.用法 SpringMVC使用@RequestMapping注解,为控制器指定可以处理哪些URL请求,并且可以指定处理请求的类型(POST/GET),如果@RequestMapping没有指定请求的 ...
- SpringMVC基础入门
一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...
- SpringMVC基础入门,创建一个HelloWorld程序
ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...
- SpringMVC基础配置及使用
SpringMVC基础配置及使用 SpringMVC:1.SpringMVC和Spring的关系: 软件开发的三层架构: web层[表示层.表现层]---->Service层----> ...
- SpringMVC(三) RequestMapping修饰类
SpringMVC使用@RequestMapping 注解为控制器指定可以处理哪些URL请求. 可以用于类定义以及方法定义: 类定义:提供初步的请求映射信息.相对于WEB应用的根目录. 方法处:提供进 ...
- springMVC基础controller类
此文章是基于 搭建SpringMVC+Spring+Hibernate平台 功能:设置请求.响应对象:session.cookie操作:ajax访问返回json数据: 创建springMVC基础con ...
- SpringMVC基础学习(一)—初识SpringMVC
一.HelloWorld 1.导入SpringMVC所需的jar包 2.配置web.xml 配置DispatcherServlet.DispatcherServlet默认加载/ ...
- SpringMVC注解@RequestMapping之produces属性导致的406错误
废话不多说,各位,直接看图说话,敢吗?这个问题网上解决的办法写的狠是粗糙,甚至说这次我干掉它完全是靠巧合,但是也不否认网上针对406错误给出的解决方式,可能是多种情况下出现的406吧?我这次的流程就是 ...
- SpringMVC基础01——SpringMVC的知识结构体系
1.前言 目前在各大互联网公司使用最热门的技术莫过于SpringBoot以及在其基础之上的SpringCloud,然而学习这些技术的基础在于学好Spring和SpringMVC,准确来说SpringM ...
随机推荐
- 阿里聚安全移动安全专家分享:APP渠道推广作弊攻防那些事儿
移动互联网高速发展,要保持APP持续并且高速增长所需的成本也越来越高.美团网CEO在今年的一次公开会议上讲到:"2017年对移动互联网公司来说是非常恐的.".主要表现在三个方面,手 ...
- 一步一步学Vue(九)
接上篇,这次是真的接上篇,针对上篇未完成的部分,增加鉴权功能,开始之前,我们先要介绍一个新的知识,路由元数据. 在vue-router中,定义元数据的方式: const router = new Vu ...
- Javascript之布尔
一.概念 将非布尔值转成布尔值(true)或(false). 二.创建布尔对象 var bool = new Boolean(); console.log(bool);//Boolean { fals ...
- 深入浅出数据结构C语言版(12)——从二分查找到二叉树
在很多有关数据结构和算法的书籍或文章中,作者往往是介绍完了什么是树后就直入主题的谈什么是二叉树balabala的.但我今天决定不按这个套路来.我个人觉得,一个东西或者说一种技术存在总该有一定的道理,不 ...
- 接口自动化(Python)-利用正则表达式从返回的HTML文本中截取自己想要的值
例如一个功能接口的返回值 是一个HTML文本: 例如我们要取上图中标识的id的值,并且这个值是动态的,这是我们就需要用到正则表达式进行匹配. 如下是正则匹配的方法(代码中都有注释): 我们在真正使用的 ...
- Go的基本环境配置
参考 https://golang.org/doc/install?download=go1.7.1.linux-amd64.tar.gz https://github.com/qlshine/the ...
- 13. leetcode 453. Minimum Moves to Equal Array Elements
Given a non-empty integer array of size n, find the minimum number of moves required to make all arr ...
- 用u盘装系统,进入bios后没有usb启动项怎么办
开机按DEL进入BIOS(现在还这么说吧,不同的主板进入方法不太一样),找到BOOT选项. 选择Boot mood:legacy support(引导模式,逻辑支持) boot priorty:leg ...
- CentOS上javaweb开发环境搭建
CentOS上javaweb开发环境搭建 安装jdk yum list java* yum install java-1.7.0-openjdk* -y java -version 安装tomcat ...
- NYOJ--1236--挑战密室(第八届河南省程序设计大赛)
挑战密室 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 R组织的特工Dr. Kong 为了寻找丢失的超体元素,不幸陷入WTO密室.Dr. Kong必须尽快找到解锁密 ...