当前位置: 首页 > news >正文

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应用时更好地使用这些注解。

 上篇文章

  • 参考资料与进一步阅读建议
    1. Spring 官方文档
    2. Spring MVC 教程

 下期更新 Spring IoC & DI !

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • jmeter做接口压力测试_jmeter接口性能测试
  • Qt5离线安装包无法下载问题解决办法
  • zookeeper+kafka消息队列集群部署
  • 使用 ABBYY FineReader PDF 15 在创建或转换 PDF 时自动生成书签
  • 【linux】服务器重装系统之系统盘写入准备
  • 爬虫案例(读书网)(下)
  • STM32 GPIO的工作原理
  • LLaMA-Factory
  • 【常见开源库的二次开发】基于openssl的加密与解密——Base58比特币钱包地址——算法分析(三)
  • Java 实现单例模式的几种方法
  • Lua 数组
  • Zookeeper之CAP理论及分布式一致性算法
  • Python酷库之旅-第三方库Pandas(024)
  • spring boot(学习笔记第十三课)
  • Qt支持LG高级汽车内容平台
  • [Vue CLI 3] 配置解析之 css.extract
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • Babel配置的不完全指南
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • ES6系列(二)变量的解构赋值
  • FineReport中如何实现自动滚屏效果
  • gcc介绍及安装
  • gops —— Go 程序诊断分析工具
  • jquery ajax学习笔记
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • laravel 用artisan创建自己的模板
  • Magento 1.x 中文订单打印乱码
  • MobX
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Nodejs和JavaWeb协助开发
  • React系列之 Redux 架构模式
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • TypeScript实现数据结构(一)栈,队列,链表
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 离散点最小(凸)包围边界查找
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 码农张的Bug人生 - 见面之礼
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 译米田引理
  • 湖北分布式智能数据采集方法有哪些?
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • #Z2294. 打印树的直径
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (26)4.7 字符函数和字符串函数
  • (70min)字节暑假实习二面(已挂)
  • (libusb) usb口自动刷新
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (三)uboot源码分析
  • (算法)前K大的和