一. 引言
在上篇文章中,我们介绍了几个重要的SpringMVC注解:
- @SpringBootApplication:Spring Boot项目的启动类注解。
- @RequestMapping:用于映射URL到控制器类或方法,支持多种请求方式。
- @RequestParam:用于绑定请求参数到方法的参数上,支持参数重命名。
- @PathVariable:用于将URL中的路径变量绑定到方法参数。
- @RequestPart:用于处理文件上传,将请求的一部分绑定到方法参数。
这些注解帮助我们简化了控制器开发,提升了代码的可读性和维护性。
在本篇文章中,我们将继续介绍另外几个常用的Spring MVC注解:@CookieValue、@SessionAttribute、@RequestHeader、@Controller和@RestController。
二. SpringMVC 注解介绍
6) @CookieValue: 从 Cookie 中获取值
- 定义和作用:@CookieValue注解用于将HTTP请求中的Cookie值绑定到控制器方法的参数上。
- 使用场景:当需要获取客户端存储的Cookie值时使用。
回顾Cookie 与 Session
HTTP 协议自身是属于 "⽆状态" 协议, 是指协议对于交互性场景没有记忆能力.
于是,两种用于保持HTTP连接状态的技术就应运而生了(Cookie 与 Session).
Session 默认是保存在内存中的. 如果重启服务器则 Session 数据就会丢失.
Cookie 和 Session 的区别
- Cookie 是一种在客户端保存用户信息的机制。
- Session 是一种在服务器端保存用户信息的机制。
- Cookie 和 Session 主要通过 SessionId 关联,SessionId 是连接两者的桥梁。
- Cookie 和 Session 经常一起使用,但这并不是必须的。
具体使用场景
- 可以单独使用 Cookie 在客户端保存一些数据,这些数据不一定是用户身份信息,也不一定是 SessionId。
- Session 中的 SessionId 不一定非要通过 Cookie/Set-Cookie 传递,也可以通过 URL 等其他方式传递。
@RequestMapping("/getCookie")
public String cookie(@CookieValue("pig") String bite) {return "pig:" + pig;
}
7) @SessionAttribute: 从 Session 中获取值
- 定义和作用:@SessionAttribute注解用于将Session中的属性值绑定到控制器方法的参数上。
- 使用场景:当需要获取存储在Session中的数据时使用。
@GetMapping("/session")
public String getSessionAttribute(@SessionAttribute("sessionAttribute") String sessionAttribute) {return "Session Attribute: " + sessionAttribute;
}
-
在上述代码中,@SessionAttribute注解绑定了Session中名为"sessionAttribute"的属性值。
8) @RequestHeader: 从 Header 中获取值
- 定义和作用:@RequestHeader注解用于将HTTP请求头中的值绑定到控制器方法的参数上。
- 使用场景:当需要获取请求头中的特定值时使用。
- 示例代码和讲解:
@GetMapping("/header")
public String getHeaderValue(@RequestHeader("headerName") String headerValue) {return "Header Value: " + headerValue;
}
9) @Controller 定义一个控制器
- 定义和作用:@Controller注解用于标识一个类为Spring MVC的控制器。
- 与其他注解的区别:@Controller注解标识的类默认返回视图,通常与模板引擎配合使用。
package org.example.springwebmvc;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@RequestMapping("/res")
@Controller
public class ResponseController {@RequestMapping("index")public String index(){return "/Test.html";}
}
前端代码如下:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>我是大帅比</h1>
</body>
</html>
返回视图
10) @RestController
@RestController = @ResponseBody + @Controller 复合注解
@ResponseBody 返回数据 @Controller 返回视图
三. 总结
在本文中,我们详细介绍了@CookieValue、@SessionAttribute、@RequestHeader、@Controller和@RestController这几个Spring MVC注解的定义、作用和使用场景,并通过具体的代码示例帮助理解。希望这些内容能够帮助你在开发Spring MVC应用时更好地使用这些注解。
上篇文章
- 参考资料与进一步阅读建议:
- Spring 官方文档
- Spring MVC 教程
下期更新 Spring IoC & DI !