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详解相关推荐

  1. SpringMVC基础--spring MVC配置详解

    牧涛 --<-<-<@态度决定一切→_→... 博客园 首页 新闻 新随笔 联系 管理 订阅 随笔- 171  文章- 3  评论- 79  spring MVC配置详解 现在主流的 ...

  2. Spring和Spring Mvc整合详解

    Spring和Spring Mvc整合详解 官方主页 Spring Spring Mvc SpringMvc 5,可以参考这一篇<Spring和Spring Mvc 5整合详解> 概述 S ...

  3. Spring MVC异常处理详解 ExceptionHandler good

    Spring MVC异常处理详解 ExceptionHandler good 参考文章: (1)Spring MVC异常处理详解 ExceptionHandler good (2)https://ww ...

  4. Spring MVC异常处理详解

    Spring MVC异常处理详解 参考文章: (1)Spring MVC异常处理详解 (2)https://www.cnblogs.com/xinzhao/p/4902295.html 备忘一下.

  5. Spring MVC 教程详解 个人总结 复习必备 面试宝典 狂神笔记

    文章目录 一.MVC 模式 1.什么是 MVC 2.Servlet MVC 小结 二.Spring MVC 1.Spring MVC 概念 为什么学习 Spring MVC 中央控制器 Dispatc ...

  6. spring MVC配置详解

    现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...

  7. linux spring mvc tomcat配置,Spring MVC配置详解

    一.Spring MVC处理流程 1.Spring MVC将所有请求都交由DispatchServlet进行处理. 2.DispatchServlet获取HandlerMapping(处理映射器),然 ...

  8. spring mvc DispatcherServlet详解之三---request通过ModelAndView中获取View实例的过程

    整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet第二步:通过request从Controller获取ModelAndView.现在来讲解第三步:reques ...

  9. spring mvc DispatcherServlet详解之前传---FrameworkServlet

    做项目时碰到Controller不能使用aop进行拦截,从网上搜索得知:使用spring mvc 启动了两个context:applicationContext 和WebapplicationCont ...

最新文章

  1. 用html做12进制时钟特效,js+css3实现简单时钟特效
  2. 组策略安全选项对应注册表项汇总
  3. 图像处理和计算机视觉中的经典论文
  4. Android的圆角按钮和按钮颜色
  5. Java 里的泛型简介.
  6. 电脑硬件知识学习_编程入门书籍:大学学习计算机基础必读 5 本经典入门书籍,收藏...
  7. MySQL复制常见问题处理
  8. ANTLR –语义谓词
  9. CIFAR-10 dataset 的下载与使用
  10. mysql 转换编码
  11. 写你自己的MVC框架
  12. Java or PHP? 谈谈高并发网站的技术选型和架构设计
  13. MFC控件学习:按钮
  14. 黑客语言——Ruby
  15. php虚线_实现css虚线样式的两种方式:dotted和dashed(实例)
  16. Contest2257 - 抗击疫情,从我做起--大中小学生联合训练赛第五十二场
  17. P3975 [TJOI2015]弦论 第K小子串
  18. 部署项目至青云服务器简易流程
  19. 关于CMake的使用介绍
  20. 武林c语言,听风一剑

热门文章

  1. IText7添加图片覆盖文字
  2. Protues使用教程
  3. 大学物理第12章·气体动理论
  4. 第十三章第一节(Triangle类)(Triangle class)
  5. 中国电力通信网发展综述
  6. 2022年云原生趋势
  7. Python授权码生成器(密码生成器)
  8. 使用 Python 进行游戏脚本编程
  9. 网络工程师经典技术面试题系列华为数通 STP关键理论与实战
  10. java随机数代码解析,实例解析常用的java随机数生成办法