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 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3248687.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

科研绘图系列:R语言分割小提琴图(Split-violin)

介绍 分割小提琴图(Split-violin plot)是一种数据可视化工具,它结合了小提琴图(violin plot)和箱线图(box plot)的特点。小提琴图是一种展示数据分布的图形,它通过在箱线图的两侧添加曲线来表示数据的密度分布,曲线的宽度表示数据点的密度。而分割小提琴图则是将小提…

41.ILA IP核集成逻辑分析仪在线调试工具

&#xff08;1&#xff09;逻辑分析仪使用场景&#xff1a; 仿真不全面数据交互存在异步情况板卡互联可靠性问题 (2)ILA使用方法&#xff1a; 使用IP核创建ILA调试环境使用Debug标记创建IP核使用路径标记核位置调试菜单创建ILA测试环境 (3)IP核调用过程&#xff1a; 例化模…

基于ssh的链接异常解决方法

VSCode、PyCharm链接异常 一.可能的原因 1.如果实例的系统盘重置或更换镜像&#xff0c;那么SSH的指纹会发生变化&#xff0c;于是SSH时会报错REMOTE HOST IDENTIFICATION HAS CHANGED 2.如果本地ssh config文件权限不对&#xff0c;会由于ssh时无法写入配置报错&#xff08;…

【BUG】已解决:IndexError: list index out of range

已解决&#xff1a;IndexError: list index out of range 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市开发者社区主…

长难句打卡7.15

The trend was naturally most obvious in those areas of science based especially on a mathematical or laboratory training, and can be illustrated in terms of the development of geology in the United Kingdom 这一趋势自然在以数学或实验室训练为基础的科学领域里…

探寻大模型回答9.9和9.11犯错的根本原因

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

养猫新手不会挑智能猫砂盆?2024最新挑选干货分享!

不得不说智能猫砂盆真的帮了我很大的忙&#xff0c;四年以来我陆陆续续养了很多的猫咪&#xff0c;但是因为需要上班&#xff0c;所以有时候也对铲屎的工作有些力不从心&#xff0c;后面听了朋友的建议&#xff0c;去入手了智能猫砂盆&#xff0c;不得不说买智能猫砂盆也非常的…

Java 8的变革:函数式编程和Lambda表达式探索

文章目录 一、函数接口二、Lambda表达式简介三、Lambda表达式外部参数四、Lambda范例五、Runnable Lambda表达式 一、函数接口 函数接口是一个具有单个抽象方法的接口&#xff0c;接口设计主要是为了支持 Lambda 表达式和方法引用&#xff0c;使得 Java 能更方便地实现函数式编…

【排序算法】—— 计数排序

一、简介 计数排序&#xff0c;顾名思义就是记录数据出现的次数进行排序&#xff0c;时间复杂度为O(NK)&#xff0c;空间复杂度为O(N)。只能用于整型&#xff0c;对于比较集中重复率比较高数据更为适用。 二、排序原理 比如对接下来这些数进行排序 arr[11] { 8,6,4,1,6,2,9,…

国产化低功耗HDMI转VGA方案,大量出货产品,广泛应用在显示器以及广告机产品

芯片描述&#xff1a; 兼具高性能和低成本效益的优点&#xff0c;是一款可以将高清视频 HDMI1.4 数字信号转换成 VGA 模拟信号输出的芯片。不需要提供外部电源&#xff0c;ICNM7301 就可以在正常模式下使用&#xff1b;ICNM7301 广 泛适用于各种市场系统和显示应用体系&#x…

Bash 学习摘录

文章目录 1、变量和参数的介绍&#xff08;1&#xff09;变量替换$(...) &#xff08;2&#xff09;特殊的变量类型export位置参数shift 2、引用&#xff08;1&#xff09;引用变量&#xff08;2&#xff09;转义 3、条件判断&#xff08;1&#xff09;条件测试结构&#xff08…

vue自定义折叠Tree,自定义折叠树

使用组件 <TreeNode v-for"(node, index) in nodes" :key"index" :node"node" />JSON数据 let nodes[{"id": 2030,"show_id": "MC1813024492270223360","detail_type": 1,"title": &…

Geometric Transformer for Fast and Robust Point Cloud Registration 论文解读

目录 一、导言 二、先导知识 1、超点匹配 2、KPConv 三、相关工作 1、基于对应的方法 2、直接配准方法 3、深度鲁棒估计 四、GeoTransformer模型 1、特征提取 2、超点匹配 几何自注意力模块 特征交叉注意力 计算高斯相关性 对应点采样 3、点匹配 4、局部到全局…

花开半夏,我决意仿一款答题小程序

不是清凉罢挥扇&#xff0c;自缘手倦歇些时。 ——杨万里&#xff08;宋&#xff09; 走过春的绚烂&#xff0c;路过初夏的清凉&#xff0c;我们迎来了炎炎夏日。蛙声阵阵&#xff0c;蝉鸣声声&#xff0c;稻花如白练&#xff0c;荷花别样红。 花开半夏&#xff0c;我决意仿一款…

陕西技术交易大会璀璨起航,卓翼飞思无人智能领域研究成果备受瞩目

智启未来&#xff0c;链动四方。万众瞩目的陕西省技术交易大会于7月17-18日在西安璀璨启航&#xff01;大会聚焦智能感知及其上下游产业链&#xff0c;旨在促进四链深度融合&#xff0c;推动技术创新与产业发展。卓翼智能作为产业链中“智能感知应用端”的杰出企业代表&#xf…

【刷题专项】— 模拟

1、替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 首先找到需要替换的 ? &#xff0c;位置然后遍历26个字母与 ? 的左右两边的是否相同&#xff0c;不同的话就替换最后返回即可代码&#xff1a; public String modifyString(String s) {char[] c…

MySQL运维实战之Clone插件(10.1)使用Clone插件

作者&#xff1a;俊达 clone插件介绍 mysql 8.0.17版本引入了clone插件。使用clone插件可以对本地l或远程的mysql实例进行clone操作。clone插件会拷贝innodb存储引擎表&#xff0c;clone得到的是原数据库的一个一致性的快照&#xff0c;可以使用该快照数据来启动新的实例。cl…

Android View的绘制流程

1.不管是View的添加&#xff0c;还是调用View的刷新方法invalidate()或者requestLayout()&#xff0c;绘制都是从ViewRootImpl的scheduleTraversals()方法开始 void scheduleTraversals() {if (!mTraversalScheduled) {mTraversalScheduled true;mTraversalBarrier mHandler…

【论文速读】| TCSR-SQL:面向表内容感知的自检索文本到SQL方法

本次分享论文&#xff1a;TCSR-SQL: Towards Table Content-aware Text-to-SQL with Self-retrieval 基本信息 原文作者&#xff1a;Wenbo Xu, Liang Yan, Peiyi Han, Haifeng Zhu, Chuanyi Liu, Shaoming Duan, Cuiyun Gao, Yingwei Liang 作者单位&#xff1a;哈尔滨工业大…

Java垃圾收集器选择与优化策略

1.垃圾收集算法有哪些,可以聊一下吗? 如何确定一个对象是垃圾? 要想进行垃圾回收,得先知道什么样的对象是垃圾。 1.1 引用计数法 对于某个对象而言,只要应用程序中持有该对象的引用,就说明该对象不是垃圾。如果一个对象没有任何指针对其引用,它就是垃圾。 弊端:如果…