Spring MVC @RequestMapping详解
Spring MVC @RequestMapping
RequestMapping
- Spring MVC @RequestMapping
- 1. RequestMapping 概念
- 2. RequestMapping源码
- 3. RequestMapping 用法
- 1. value属性
- 2. method属性
- 3. params属性
- 4. headers属性
- 4. RequestMapping支持Ant风格的通配符
1. RequestMapping 概念
SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些 URL 请求。
在控制器的类定义及方法定义处都可标注 @RequestMapping。
① 标记在类上:提供初步的请求映射信息。相对于 WEB 应用的根目录
② 标记在方法上:提供进一步的细分映射信息。相对于标记在类上的 URL。
若类上未标注 @RequestMapping,则方法处标记的 URL 相对于 WEB 应用的根目录 。
作用:DispatcherServlet 截获请求后,就通过控制器上 @RequestMapping 提供的映射信息确定请求所 对应的处理方法。
2. RequestMapping源码
package org.springframework.web.bind.annotation;
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {String[] value() default {};RequestMethod[] method() default {};String[] params() default {};String[] headers() default {};String[] consumes() default {};String[] produces() default {};
}
参数说明
- value:定义处理方法的请求的 URL 地址。(重点)
- method:定义处理方法的 http method 类型,如 GET、POST 等。(重点)
- params:定义请求的 URL 中必须包含的参数。或者不包含某些参数。(了解)
- headers:定义请求中 Request Headers 必须包含的参数。或者不包含某些参数。(了解)
3. RequestMapping 用法
@RequestMapping 有两种标注方式,一种是标注在类级别上,一种是标注在方法级别上。标注在方法上时,value 表示访问该方法的 URL 地址。标注在类上时,value 相当于一个命名空间,即访问该 Controller 下的任意方法都需要带上这个命名空间。
1. value属性
@Controller
@RequestMapping("/example")
public class ExampleController {@RequestMappingpublic String execute(){return "example_page";}@RequestMapping("/todo")public String doSomething(){return "example_todo_page";}
}
1./example.action:执行的是 execute() 方法。execute() 方法的 @RequestMapping 注解缺省 value 值,在这种情况下,当访问命名空间时默认执行的是这个方法。方法级别上的 @RequestMapping 标注是必须的,否则方法无法被正确访问。
2./example/todo.action执行的是 doSomething() 方法。类级别上的 @RequestMapping 标注不是必须的,在不写的情况下,方法上定义的 URL 都是绝对地址,否则,方法上定义的 URL 都是相对于它所在的 Controller 的。
2. method属性
指定请求的method类型,可以接受GET,POST,PUT,DELETE等,默认是可以接收GET请求和POST请求
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String register1(){return "example_register_get_page";
}@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register2(){return "example_register_post_page";
}
@RequestMapping({"/test02_01","/test02_02"})
public ModelAndView test02(){ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("hello", "test01");modelAndView.setViewName("hello");return modelAndView;
}
1.可以为多个方法映射相同的 URI,不同的 http method 类型,Spring MVC 根据请求的 method 类型是可以区分开这些方法的。当 /example/register.action 是以 GET 的方式提交的时候,Spring MVC 调用 register1() 来处理请求;若是以 POST 的方式提交,则调 register2() 来处理提交的请求。
2.method 若是缺省没指定,并不是说它默认只处理 GET 方式的请求,而是它可以处理任何方式的 http method 类型的请求。指定 method 是为了细化映射 ( 缩小处理方法的映射范围 ),在 method 没有指定的情况下,它的映射范围是最大的。
3. params属性
params:指定request中必须包含某些参数值,才让该方法处理
@RequestMapping(value = "/test04",params = "id")public ModelAndView test04(){ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("hello", "test04");modelAndView.setViewName("hello");return modelAndView;}
请求路径没有id则报错
params还可以指定请求中属性值必须为多少
4. headers属性
headers 的作用也是用于细化映射。只有当请求的 Request Headers 中包含与 heanders 值相匹配的参数,处理方法才会被调用。
@RequestMapping(value = "/specify", headers = "accept=text/*")
public String specify(){return "example_specify_page";
}
请求的 Request Headers 中 Accept 的值必须匹配 text/* ( 如 text/html ),方法才会被调用。
4. RequestMapping支持Ant风格的通配符
通配符 | 说明 | 示例 |
---|---|---|
? | 匹配一个任意字符 | /a/?b 可以匹配/a/ab;/a/cb。但不能匹配/a/acb之类 |
* | 匹配任意长度的字符 | /a/ *b可以匹配/a/cb;/a/acb。但不能匹配/a/cb/vb |
** | 匹配多层路径 | 可以匹配/a/ab;/a/acb;/a/ab/abc/…/… |
Spring MVC @RequestMapping详解相关推荐
- SpringMVC基础--spring MVC配置详解
牧涛 --<-<-<@态度决定一切→_→... 博客园 首页 新闻 新随笔 联系 管理 订阅 随笔- 171 文章- 3 评论- 79 spring MVC配置详解 现在主流的 ...
- Spring和Spring Mvc整合详解
Spring和Spring Mvc整合详解 官方主页 Spring Spring Mvc SpringMvc 5,可以参考这一篇<Spring和Spring Mvc 5整合详解> 概述 S ...
- Spring MVC异常处理详解 ExceptionHandler good
Spring MVC异常处理详解 ExceptionHandler good 参考文章: (1)Spring MVC异常处理详解 ExceptionHandler good (2)https://ww ...
- Spring MVC异常处理详解
Spring MVC异常处理详解 参考文章: (1)Spring MVC异常处理详解 (2)https://www.cnblogs.com/xinzhao/p/4902295.html 备忘一下.
- Spring MVC 教程详解 个人总结 复习必备 面试宝典 狂神笔记
文章目录 一.MVC 模式 1.什么是 MVC 2.Servlet MVC 小结 二.Spring MVC 1.Spring MVC 概念 为什么学习 Spring MVC 中央控制器 Dispatc ...
- spring MVC配置详解
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...
- linux spring mvc tomcat配置,Spring MVC配置详解
一.Spring MVC处理流程 1.Spring MVC将所有请求都交由DispatchServlet进行处理. 2.DispatchServlet获取HandlerMapping(处理映射器),然 ...
- spring mvc DispatcherServlet详解之三---request通过ModelAndView中获取View实例的过程
整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet第二步:通过request从Controller获取ModelAndView.现在来讲解第三步:reques ...
- spring mvc DispatcherServlet详解之前传---FrameworkServlet
做项目时碰到Controller不能使用aop进行拦截,从网上搜索得知:使用spring mvc 启动了两个context:applicationContext 和WebapplicationCont ...
最新文章
- 用html做12进制时钟特效,js+css3实现简单时钟特效
- 组策略安全选项对应注册表项汇总
- 图像处理和计算机视觉中的经典论文
- Android的圆角按钮和按钮颜色
- Java 里的泛型简介.
- 电脑硬件知识学习_编程入门书籍:大学学习计算机基础必读 5 本经典入门书籍,收藏...
- MySQL复制常见问题处理
- ANTLR –语义谓词
- CIFAR-10 dataset 的下载与使用
- mysql 转换编码
- 写你自己的MVC框架
- Java or PHP? 谈谈高并发网站的技术选型和架构设计
- MFC控件学习:按钮
- 黑客语言——Ruby
- php虚线_实现css虚线样式的两种方式:dotted和dashed(实例)
- Contest2257 - 抗击疫情,从我做起--大中小学生联合训练赛第五十二场
- P3975 [TJOI2015]弦论 第K小子串
- 部署项目至青云服务器简易流程
- 关于CMake的使用介绍
- 武林c语言,听风一剑