4 控制器
回顾一下Spring MVC的执行图
我们知道有后端控制器Controller用来解析用户的请求,并进行相应的业务处理,最后返回一个ModelAndView
实现后端控制器Controller的方式有两种,第一种是实现Controller接口,第二种是基于注解@Controller,这两种在上一篇博客【SpringMVC从看懂到看开】 1 - 初识MVC的两个实例程序已经分别提到。
5 @RequestMapping注解
使用基于注解来实现后端控制器后,我们还需要知道控制器内收对每一个请求是如何处理的,这就需要org.springframework.web.bind.annotation.RequestMapping
注解类型,RequestMapping用于映射一个请求或一个方法,起注解形式为@RequestMapping,可以用于注解标注在一个方法或一个类上。
5.1 标注在方法上
标注在方法上,表示这个方法成为一个请求处理方法,它会在程序接收到对应的URL请求时被调用
@Controller
public class HelloController {
@RequestMapping("/h1")
public String sayHello(Model model){
model.addAttribute("msg","Hello Spring MVC Annotation");
return "hello";
}
}
5.2 标注在类上
当标注在一个类上,该类中的所有方法都讲映射为相对于类级别的请求,表示该控制器所处理的所有请求都被映射到value属性值所指定的路径下。
@Controller
@RequestMapping("/helloController")
public class HelloController {
@RequestMapping("/h1")
public String sayHello(Model model){
model.addAttribute("msg","Hello Spring MVC Annotation");
return "hello";
}
}
5.3 @RequestMapping注解的属性
5.3 组合注解
Spring4.3引入了组合注解来简化常用的HTTP方法的映射,组合注解有
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMaping
以@GetMapping
为例,@GetMapping("/helloController")
相当于@RequestMapping(value = "/helloController", method = RequestMethod.GET)
省略了method属性,从而简化代码