SpringMVC注解全解析:构建高效Web应用的终极指南 (下)

一. 引言

上篇文章中,我们介绍了几个重要的SpringMVC注解:

  1. @SpringBootApplication:Spring Boot项目的启动类注解。
  2. @RequestMapping:用于映射URL到控制器类或方法,支持多种请求方式。
  3. @RequestParam:用于绑定请求参数到方法的参数上,支持参数重命名。
  4. @PathVariable:用于将URL中的路径变量绑定到方法参数。
  5. @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;
}
  1. 在上述代码中,@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 IoC & DI !

相关推荐

  1. 使用Django构建高效Web应用

    2024-07-18 19:34:03       26 阅读
  2. Python Web开发:构建高效、可扩展Web应用

    2024-07-18 19:34:03       53 阅读
  3. 使用Express 构建高效Web应用程序

    2024-07-18 19:34:03       45 阅读
  4. 探索Django:打造高效、可扩展Web应用

    2024-07-18 19:34:03       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 19:34:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 19:34:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 19:34:03       58 阅读
  4. Python语言-面向对象

    2024-07-18 19:34:03       69 阅读

热门阅读

  1. 【J1期末测试】学习之星

    2024-07-18 19:34:03       24 阅读
  2. MySQL 溢出页、页分裂、表空间碎片

    2024-07-18 19:34:03       23 阅读
  3. mysql8和mysql5版本在使用mybatis框架时的注意事项

    2024-07-18 19:34:03       25 阅读
  4. C++基础语法:STL之容器(3)--序列容器中的deque

    2024-07-18 19:34:03       18 阅读
  5. 一文搞懂C语言

    2024-07-18 19:34:03       22 阅读
  6. Go语言 字典(map)

    2024-07-18 19:34:03       26 阅读
  7. 深拷贝一个json,可以循环调用

    2024-07-18 19:34:03       22 阅读
  8. VUE +Element-plus+leanCloud 分页逻辑

    2024-07-18 19:34:03       27 阅读
  9. 测试面试题(七)

    2024-07-18 19:34:03       22 阅读
  10. 从Oracle到PostgreSQL:详细对比与迁移工具说明

    2024-07-18 19:34:03       24 阅读
  11. jquery return false的作用

    2024-07-18 19:34:03       20 阅读
  12. Android 11 使用HAL层的ffmpeg库(1)

    2024-07-18 19:34:03       20 阅读
  13. FFmpeg: 强大的多媒体处理工具

    2024-07-18 19:34:03       23 阅读