1、@Controller(控制器):用于配合组件扫描(@ComponentScan)创建控制器对象,常与@RequestMapping注解结合使用,其元注解中包含了@Component注解。
2、@RestController(Rest控制器): 将控制器声明为RESTController,它的元注解中包括@Controller和@ResponseBody注解,实际效果是为该控制器类中的所有方法添加@ResponseBody注解。
3、@ResponseBody(响应体/响应正文):表明控制器方法的返回值绑定到HTTP响应体。
使用@ResponseBody后,不再返回ModelAndView以及视图解析器,而会自动调用MessageConverter, 将返回的数据转换为某种特定格式(JSON,XML),装入响应体
4、@RequstMapping 请求映射:使用@RequestMapping注解来映射请求到控制器方法
这个注解可以在类和方法级别上使用
在方法层面上,应用程序倾向于使用HTTP方法特定的变体之一,@GetMapping、@PostMapping、@PutMapping、@DeleteMapping或@PatchMapping
5、@GetMapping(Get请求映射):用于将HTTP GET请求映射到特定的处理方法的注解。
@GetMapping是组合注解,是@RequestMapping(method = RequestMethod.GET)的快捷方式
请求方式不对会报405错误。
6、@PostMapping(Post请求映射):用于将HTTP POST请求映射到特定的处理方法的注解。
@PostMapping是组合注解,是@RequestMapping(method = RequestMethod.POST)的快捷方式
请求方式不对会报405错误。
7、@RequestBody(请求实体), 标注在方法参数上,表示网络请求正文映射到方法参数。
请求的主体通过一个HttpMessageConverter来解析方法参数,常用于将JSON数据转换存储到参数对象中
8、@RequestParam(请求参数):将请求参数映射到控制器的方法参数上,添加 @RequestParam 后,属性是必须参数, 没有传递参数则出现异常
9、@PathVariable(路径变量):将请求路径上“URI模版”映射到控制器的方法参数上
10、@ResponseStatus(响应状态):设定HTTP响应状态码
11、@RequestHeader(请求头):映射请求头到控制器方法参数
代码示例:
创建controller层
/**
* Spring MVC常用注解
*/
@Controller
public class AnnotationController {
/**
* 访问demo1必须加一个参数 如果缺少就会出现400错误
* Accept请求头类型 text/html
*
* @return 返回一个视图(具体的一个页面)
*/
@GetMapping("/demo1")
public String demo1(@RequestParam("username") String param1,
@RequestHeader("Accept") String param2,
@RequestHeader("Host") String param3) {
System.out.println("请求参数username=" + param1);
System.out.println("请求参数param2=" + param2);
System.out.println("请求参数param3=" + param3);
return "/demo1.html";
}
}
在配置文件中添加前缀和后缀:
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.html
编写html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>这是一个视图解析器ViewResolver解析的View视图</h1>
</body>
</html>
运行效果:
请求参数username=赞善
请求参数param2=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
请求参数param3=localhost:8080