用@RequestMapping映射请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用@RequestMapping映射请求相关的知识,希望对你有一定的参考价值。

DispatcherServlet接受一个web请求之后,将请求发送给@Controller注解声明的不同控制器类。

这个调度过程依赖控制器类及其处理程序方法中声明的各种@RequestMapping注解。

Spring MVC中,web请求通过控制器类中声明的一个或者多个@RequestMapping注解映射到处理程序。

处理程序映射根据与上下文路径(Web应用上下文路径)和servlet路径(映射到DispatcherServlet的路径)的相对路径匹配URL。

 

使用@RequestMapping注解的最简单的策略是直接修饰处理程序方法。为此需要用包含URL模式的@RequestMapping注解声明每个处理程序方法。

如果方法的@RequestMapping注解匹配请求的URL,DispatcherServlet将请求发往这个方法处理。

 

@Controller

控制类

@Autowired

控制反转生成控制类的实例

@RequestMapping("/member/add")

方法1

@RequestMapping(value={"/member/remove", "/member/delete"}, method=RequestMethod.GET)

方法2

 

另外一种

@Controller

@RequestMapping("/member/*")

控制类

@Autowired

控制反转生成控制类的实例

@RequestMapping("add")

方法1

@RequestMapping(value={"remove","delete"}, method=RequestMethod.GET)

方法二

@RequestMapping("display/{user}")

方法三(@RequestParam("memberName") String memberName,  @PathVariable("user") String user)

 

@RequestMapping

方法四

 

方法五

 

对于方法三,如果接受的请求形式为/member/display/jdoe,方法将以jdoe值访问user变量

 

对于方法四使用了@RequestMapping注解,但是缺少URL值,因为类级别使用了/member/* URL通配符,这个处理方法作为全能的方法执行。

任何URL请求(例如/member/abcdefg或/member/randomrout)都会触发这个方法。

 

最后一个方法没有@RequestMapping注解,意味着这个方法是一个工具,对于Spring MVC没有影响。

 

按照HTTP请求类型映射请求

默认情况下,@RequestMapping注解假定所有的入站请求为HTTP GET类型。但是当入站请求是另一种HTTP类型,就有必要在@RequestMapping注解中明确指定的类型。

 

@RequestMapping (method = RequestMethod.POST)

public String submitForm (@ModelAttribute ("member") Member member, BindingResult result, Model model) {

……

}

以上是关于用@RequestMapping映射请求的主要内容,如果未能解决你的问题,请参考以下文章

@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别

spring @RequestMapping注解技巧

用@RequestMapping映射请求

Spring @RequestMapping 注解使用技巧

@RequestMapping 注解有什么用?

Spring注解@RequestMapping请求路径映射问题