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 ...
随机推荐
- 介绍一个全局最优化的方法:随机游走算法(Random Walk)
1. 关于全局最优化求解 全局最优化是一个非常复杂的问题,目前还没有一个通用的办法可以对任意复杂函数求解全局最优值.上一篇文章讲解了一个求解局部极小值的方法--梯度下降法.这种方法对于求解精度不高 ...
- AndroidDemo - FloatWindowDemo
安卓悬浮窗Demo 在桌面上创建一个小的悬浮窗.点击小悬浮窗后会弹出一个大的窗口.大窗口上有2个按键,分别为返回与关闭.点击大窗口外的部分能返回小窗口. 小窗口可以自由拖动.小窗口上显示的是当前内存使 ...
- 玩玩微信公众号Java版之准备
微信自2013年流行起来,现在的发展已经超过了我们的想象,那么对应的公众平台,小程序等都是让人眼前一亮的东西,这里来学习一下微信工作号的对接,实现为Java,希望大家一起学习! 这里大概描述一下所 ...
- PL/SQL入门随笔
PL/SQL(Procedure Language/SQL) PLSQL是Oracle对sql语言的过程化扩展:在SQL命令语言中增加了过程处理语句(如分支.循环等),使SQL语言具有过程处理能力.S ...
- HTML5 开发APP( 环境配置)
上一篇我写了关于新建项目,这一篇说一下配置环境我们新建一个移动app后,会发现一个mainifest.json文件,开发app所要配置的环境就在这个文件里 点击打开文件后会有配置界面,在配置界面的下方 ...
- tcp netstat用法 TIME_WAIT状态解析 MTU以及MSS
带着问题写博客 问题1:使用netstat查看有源TCP连接的状态时,经常会看到established状态,那么还有哪些状态,这些状态是如何变化的呢? 问题2:TIME_WAIT状态存在的必要? 问题 ...
- 基于脚本的modelsim自动化仿真笔记
这里记录一下基于脚本的modelsim自动化仿真的一些知识和模板,以后忘记了可以到这里查找.转载请标明出处:http://www.cnblogs.com/IClearner/ . 一.基本介绍 这里介 ...
- wpf的一些总结
wpf技巧 隐藏控件不占空间,设置visibility为:Collapsed tabcontrol的高度宽度跟随界面的大小变化:属性height\width绑定grid的actualheight\ac ...
- 【原创】01-1. 基于 checked 关于 attribute 和 property 的理解
Attribute(属性) 和 Property(特性) Attribute(元素节点的属性),例如html中常用的class.title.align等(即:属性节点).而Property 是这个DO ...
- hdu 6059---Kanade's trio(字典树)
题目链接 Problem Description Give you an array A[1..n],you need to calculate how many tuples (i,j,k) sat ...