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
最后修改:2023 年 09 月 18 日
如果觉得我的文章对你有用,请随意赞赏