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://www.mzph.cn/bicheng/47609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UniVue@v1.5.0版本发布:里程碑版本

前言 以后使用UniVue都推荐使用1.5.0以后的版本&#xff0c;这个版本之后&#xff0c;更新的速度将会放缓。 希望这个框架能够切实的帮助大家更好的开发游戏&#xff0c;做出一款好游戏&#xff01;本开源项目采用的开源协议为MIT协议&#xff0c;完全开源化&#xff0c;以后也…

基于Python+Django+MySQL的心理咨询预约系统

心理咨询预约系统 DjangoMySQL 基于PythonDjangoMySQL的心理咨询预约系统 项目主要依赖Django3.2&#xff0c;MySQL 支持随机验证码生成与登录验证 简介 基于PythonDjangoMySQL的心理咨询预约系统通过连接数据库获取数据&#xff0c;登录新增随机数字验证码验证。具体可以看…

【机器学习】机器学习与图像分类的融合应用与性能优化新探索

文章目录 引言第一章&#xff1a;机器学习在图像分类中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 数据增强 1.2 模型选择1.2.1 卷积神经网络1.2.2 迁移学习1.2.3 混合模型 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Adam优化器 1.4 模型评估与性能优…

Qt支持LG高级汽车内容平台

Qt Group与LG 电子&#xff08;简称LG&#xff09;正携手合作&#xff0c;将Qt软件框架嵌入其基于 webOS的ACPLG车载娱乐平台&#xff0c;用于应用程序开发。该合作旨在让原始设备制造商&#xff08;OEM&#xff09;的开发者和设计师能为汽车创建更具创新性的沉浸式汽车内容流媒…

【深度学习】inpaint图像中的alpha混合图的边缘处理

比如原图是&#xff1a; 红圈内就是文字水印&#xff0c;经过inpaint后得到图和原图混合&#xff0c;如何处理边界呢&#xff0c;这个代码可以干这事&#xff1a; 越是中心就直接用inpaint图&#xff0c;否则就用原图&#xff0c;这样进行alpha混合。 import numpy as np i…

uniapp:国家、省市区,4级联动

使用uview的Select 列选择器 选择器完成国家&#xff0c;省市区&#xff0c;4级联动 要求后台数据格式&#xff1a; list: [{label: 中国,value: 1,children: [{label: 河南省,value: 2,children: [{label: 郑州市,value: 3,children: [{label: 中原区,value: 4},{label: 郑东…

Re:从零开始的C++世界——类和对象(下)

文章目录 前言1.再谈构造函数&#x1f34e;构造函数体赋值&#x1f34e;初始化列表&#x1f34e;特性&#x1f34c;特性一&#x1f34c;特性二&#x1f34c;特性三&#x1f34c;特性四&#x1f34c;特性五 &#x1f34e;explicit 关键字 2.static成员&#x1f34e;概念&#x1…

2.4G收发芯片XL2412P,集成单片机 ,通信距离可达110米

XL2412P芯片是一款高性能低功耗的SOC集成无线收发芯片&#xff0c;由RF芯片和32位M0核MCU集成&#xff0c;工作在2.400~2.483GHz世界通用ISM频段。XL2412P为SSOP16封装&#xff0c;正常工作电压范围&#xff1a;1.7~3.6V&#xff0c;正常工作温度范围-40~85℃。XL2412P发射输出…

MQTT服务端EMQX开源版安装和客户端MQTTX介绍

一、EMQX是什么 EMQX 是一款开源的大规模分布式 MQTT 消息服务器&#xff0c;功能丰富&#xff0c;专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条&#xff0c;单服务器的传输与处理吞吐量可达每秒百万级 MQTT 消息&#xff0c;同时保证毫秒…

vscode 中python 支持自动跳转

随笔记录 目录 1. 背景介绍 2. 解决方案 1. 背景介绍 vscode 远程ssh 打开python 脚本无法自动跳转 2. 解决方案 安装python 插件即可。 至此&#xff0c;已完成vscode 上py 文件支持自动跳转功能

1.6.丢弃法

丢弃法 动机&#xff1a;一个好的模型需要对输入数据的扰动足够健壮&#xff0c;丢弃法就是在层之间加入噪音。也可以在数据中使用噪音&#xff0c;等价与Tikhonov正则 无偏差的加入噪音 ​ 对于数据 x x x&#xff0c;加入噪音后的 x ′ x x′的期望值是不变的&#xff0c;…

Unity如何查找两个transform最近的公共parent

查找两个子对象最近的父对象 一、问题背景二、解决方案思路核心算法代码 三、总结 一、问题背景 最近看到个关于Unity的问题&#xff1a;在Hierarchy面板中的游戏对象&#xff0c;给定两个子物体transform对象&#xff0c;如何查找这两个transform最近的公共父级parent。感觉挺…

【前端】ikun-qrcode:极简的二维码生成组件,使用view而非canvas避免层级问题

文章目录 背景ikun-qrcode界面效果如何发布一款自己的插件到uniapp市场。&#xff08;5分钟搞定&#xff09; 背景 之前在uniapp上100行搞定二维码生成&#xff0c; 现在封装为vue组件分享出来&#xff1a; 下载地址&#xff1a; https://ext.dcloud.net.cn/plugin?id19351 …

C语言 | Leetcode C语言题解之第239题滑动窗口最大值

题目&#xff1a; 题解&#xff1a; int* maxSlidingWindow(int* nums, int numsSize, int k, int* returnSize) {int prefixMax[numsSize], suffixMax[numsSize];for (int i 0; i < numsSize; i) {if (i % k 0) {prefixMax[i] nums[i];} else {prefixMax[i] fmax(pref…

抖音视频素材去哪里找啊?视频素材网站库分享

在这个视觉盛宴的抖音平台上&#xff0c;高质量和有趣的视频素材常常是吸引观众的重要钥匙。如果你也正在寻找那些能让你的视频作品更加出色的资源&#xff0c;那么恭喜你&#xff0c;今天我将为你介绍10个超实用的视频素材网站&#xff0c;让你的抖音视频创作充满创意和效率。…

【ROS2】高级:解锁 Fast DDS 中间件的潜力 [社区贡献]

目标&#xff1a;本教程将展示如何在 ROS 2 中使用 Fast DDS 的扩展配置功能。 教程级别&#xff1a;高级 时间&#xff1a;20 分钟 目录 背景 先决条件在同一个节点中混合同步和异步发布 创建具有发布者的节点创建包含配置文件的 XML 文件执行发布者节点创建一个包含订阅者的节…

单例模式->饿汉模式->懒汉模式->阻塞队列->模拟实现阻塞队列->生产者消费者模型

单例模式->是一种固定套路,类似于"棋谱",按照套路来,可以避免一些问题 单例模式的特点->能够保证在某个类中只存在一个实例,不会创建多个实例 饿汉模式(线程安全):最基础的单例模式,类加载的同时就会创建实例,是线程安全的 public class Singleton {// 在类加…

Flutter应用开发:掌握StatefulWidget的实用技巧

前言 随着移动应用的日益复杂&#xff0c;状态管理成为了 Flutter 应用开发中的一项重要挑战。 状态&#xff0c;即应用中的可变数据&#xff0c;它驱动着用户界面的渲染和交互。 在 Flutter 这样的声明式 UI 框架中&#xff0c;如何高效、可维护地管理状态&#xff0c;对于…

GuLi商城-商品服务-API-属性分组-分组修改级联选择器回显

前端代码:略 后端回显接口: 递归方法: @Override publi

jquery中pdf在页面的显示和导出

jquery中pdf在页面的显示和导出 01 显示pdf01 .pdf结尾在线接口显示到页面 &#xff08;pdf.js库怎么安装及使用&#xff09;&#xff1a;只显示一页02 如何用PDF.JS显示整个PDF (而不仅仅是一页)&#xff1f;03 jQuery实现在线预览PDF文件(通过a标签链接跳转)&#xff1a; 02 …