java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > @RequestMapping注解解析

SpringMVC中的@RequestMapping注解解析

作者:GeGe&YoYo

这篇文章主要介绍了SpringMVC中的@RequestMapping注解解析,SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些 URL 请求,在控制器的类定义及方法定义处都可标注@RequestMapping,需要的朋友可以参考下

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 {};
}

参数说明

3. RequestMapping 用法

@RequestMapping 有两种标注方式,一种是标注在类级别上,一种是标注在方法级别上。标注在方法上时,value 表示访问该方法的 URL 地址。标注在类上时,value 相当于一个命名空间,即访问该 Controller 下的任意方法都需要带上这个命名空间。

value属性

@Controller
@RequestMapping("/example")
public class ExampleController {
    @RequestMapping
    public String execute(){
        return "example_page";
    }
    @RequestMapping("/todo")
    public String doSomething(){
        return "example_todo_page";
    }
}

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;
}

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还可以指定请求中属性值必须为多少

在这里插入图片描述

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/…/…

到此这篇关于SpringMVC中的@RequestMapping注解解析的文章就介绍到这了,更多相关@RequestMapping注解解析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文