SpringMVC学习大纲


注解的源码:

在这里插入图片描述


三、注解的params属性

3.1.params属性的理解:

  • params属性用来通过设置请求参数来映射请求。对于RequestMapping注解来说:
    • params属性也是一个数组,不过要求请求参数必须和params数组中要求的所有参数完全一致后,才能映射成功
      image.png

3.2.params属性的4种用法:

a.参数说明:

  • @RequestMapping(value=“/login”, params={“username”, “password”}) 表示:
    • 请求参数中必须包含 username 和 password,才能与当前标注的方法进行映射
  • @RequestMapping(value=“/login”, params={“!username”, “password”}) 表示:
    • 请求参数中不能包含username参数,但必须包含password参数,才能与当前标注的方法进行映射
  • @RequestMapping(value=“/login”, params={“username=admin”, “password”}) 表示:
    • 请求参数中必须包含username参数,并且参数的值必须是admin,另外也必须包含password参数,才能与当前标注的方法进行映射
  • @RequestMapping(value=“/login”, params={“username!=admin”, “password”}) 表示:
    • 请求参数中必须包含username参数,但参数的值不能是admin,另外也必须包含password参数,才能与当前标注的方法进行映射
      注意:如果前端提交的参数,和后端要求的请求参数不一致,则出现400错误!!!

b.返回值状态码:

  • HTTP状态码400的原因:请求参数格式不正确而导致的

3.3.测试params属性:

a.添加接口方法:

  • 在 RequestMappingTestController 类中添加如下方法:
@RequestMapping(value="/testParams", params = {"username", "password"})
public String testParams(){return "testParams";
}
  • 2.提供视图页面:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>testParams</title>
</head>
<body>
<h1>测试RequestMapping注解的Params属性</h1>
</body>
</html>

b.添加超链接:

  • 在index.html文件中添加超链接:
<!--测试RequestMapping的params属性-->
<a th:href="@{/testParams(username='admin',password='123')}">测试params属性</a>
  • 当然,你也可以这样写:这样写IDEA会报错,但不影响使用
<a th:href="@{/testParams?username=admin&password=123}">测试params属性</a><br>

c.发送请求时,传递username参数:

image.png
image.png


d.发送请求时,没有传递username参数:

<a th:href="@{/testParams(password='123')}">测试params属性</a><br>
  • 启动服务器,测试:
    image.png
  • 提示无效的请求参数,服务器无法或不会处理当前请求
    image.png

四、注解的headers属性

4.1.认识headers属性:

a.属性理解:

  • headers和params原理相同,用法也相同
    • 当前端提交的请求头信息和后端要求的请求头信息一致时,才能映射成功

b.请求头信息怎么查看?

  • 在chrome浏览器中,F12打开控制台,找到Network,可以查看具体的请求协议和响应协议,在请求协议中可以看到请求头信息,例如:
    image.png
  • 请求头信息和请求参数信息一样,都是键值对形式,例如上图中:
    • Referer: http://localhost:8080/springmvc/ 键是Referer,值是http://localhost:8080/springmvc/
    • Host: localhost:8080 键是Host,值是localhost:8080

4.2.headers属性的4种用法:

  • @RequestMapping(value=“/login”, headers={“Referer”, “Host”}) 表示:
    • 请求头信息中必须包含Referer和Host,才能与当前标注的方法进行映射
  • @RequestMapping(value=“/login”, headers={“Referer”, “!Host”}) 表示:
    • 请求头信息中必须包含Referer,但不包含Host,才能与当前标注的方法进行映射
  • @RequestMapping(value=“/login”, headers={“Referer=http://localhost:8080/springmvc/”, “Host”}) 表示:
    • 请求头信息中必须包含Referer和Host,并且Referer的值必须是http://localhost:8080/springmvc/,才能与当前标注的方法进行映射。
  • @RequestMapping(value=“/login”, headers={“Referer!=http://localhost:8080/springmvc/”, “Host”}) 表示:
    • 请求头信息中必须包含Referer和Host,并且Referer的值不是http://localhost:8080/springmvc/,才能与当前标注的方法进行映射。
  • 注意:如果前端提交的请求头信息,和后端要求的请求头信息不一致,则出现404错误!!!

4.3.测试headers属性:

a.定义接口:

  • 在 RequestMappingTestController 类中添加以下方法:
@RequestMapping(value="/testHeaders", headers = {"Referer=http://localhost:8080/springmvc/"})
public String testHeaders(){return "testHeaders";
}

b.编写页面:

  • 提供视图页面:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>test Headers</title>
</head>
<body>
<h1>测试RequestMapping注解的headers属性</h1>
</body>
</html>

c.超链接:

  • 在index.html页面中添加超链接:
<!--测试RequestMapping的headers属性-->
<a th:href="@{/testHeaders}">测试headers属性</a><br>

d.测试:

  • 启动服务器,测试结果:
    image.png
    image.png
  • 将后端控制器中的headers属性值进行修改:
@RequestMapping(value="/testHeaders", headers = {"Referer=http://localhost:8888/springmvc/"})
public String testHeaders(){return "testHeaders";
}
  • 再次测试:
    image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92432.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92432.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/92432.shtml

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

相关文章

layui表格多选及选中

多选获取选中数据//获取选中行数据 var tbData table.cache["tablist2"]; var chkDatas tbData.filter(s > s.LAY_CHECKED true); if (vm.isEmpty(chkDatas) || chkDatas.length 0) {os.error("未选中数据&#xff01;");return; }单选选中样式及数…

卡尔曼滤波数据融合

状态向量&#xff1a;位置和速度 [x, y, vx, vy]预测阶段&#xff1a;用加速度估算速度和位置&#xff08;IMU数据&#xff09;更新阶段&#xff1a;用 GPS 位置修正漂移&#xff08;每隔一定时间才来一次&#xff09;import numpy as np# 时间步长&#xff08;秒&#xff09; …

Qwen3-8B 的 TTFT 性能分析:16K 与 32K 输入 Prompt 的推算公式与底层原理详解

一、模型概述与上下文支持能力Qwen3-8B 是通义实验室推出的 80 亿参数大语言模型&#xff0c;支持 32,768 token 的上下文长度 。其核心优化点包括&#xff1a;FP8 量化技术&#xff1a;通过将权重从 32-bit 压缩至 8-bit&#xff0c;显著降低显存占用并提升推理效率&#xff0…

【Spring Cloud Gateway 实战系列】基础篇:路由、断言、过滤器、负载均衡深度解析

一、引言在微服务架构中&#xff0c;API网关是流量的统一入口&#xff0c;承担着路由转发、流量管控、安全防护等核心职责。Spring Cloud Gateway作为Spring官方推荐的第二代网关&#xff0c;基于Spring 5.0、Spring Boot 2.0和Project Reactor构建&#xff0c;提供了高性能的响…

基于springboot的乡村旅游在线服务系统/乡村旅游网站

管理员&#xff1a;登录&#xff0c;个人中心&#xff0c;用户管理&#xff0c;景点类型管理&#xff0c;旅游景点管理&#xff0c; 酒店信息管理&#xff0c;旅游线路管理&#xff0c;门票预订管理&#xff0c;酒店预订管理&#xff0c;旅游攻略管理&#xff0c;社区互动&…

JavaWeb笔记12

登录的问题&#xff1a;用户两次登录后会生成新旧两个令牌&#xff0c;此时旧的不应该生效要使旧的失效&#xff1a;令牌主动失效机制 登录成功后&#xff0c;给浏览器响应令牌的同时&#xff0c;把该令牌存储到redis中 LoginInterceptor拦截器中&#xff0c;需要验证浏览器携带…

算法牢笼与思想飞地:在人工智能时代守卫灵魂的疆域

当手指在键盘上敲下“帮我写一篇关于XX的文章”&#xff0c;当屏幕上的“智能助手”瞬间输出结构完整、引经据典的文字&#xff0c;当算法为我们精准推送“你可能感兴趣”的一切——我们正被一种前所未有的认知便利所包围。然而&#xff0c;在这层包裹着效率与舒适的华丽外衣之…

WebAssembly浏览器指纹识别技术——实验评估与应用展望(下篇)

引言 在上篇文章中,我们详细阐述了基于WebAssembly的浏览器指纹识别技术的理论基础和核心方法。本文将进一步展示该技术在实际应用中的表现,通过大规模的实验验证其有效性,并深入探讨相应的防护策略。同时,我们也将客观分析该技术的应用前景与潜在风险,为相关领域的研究和…

kafka--基础知识点--5.4--max.in.flight.requests.per.connection

一、参数定义 max.in.flight.requests.per.connection 是 Kafka 生产者客户端配置参数&#xff0c;用于控制生产者与单个 Broker 连接中未确认请求的最大数量。简单来说&#xff0c;它限制了生产者在等待之前发送的消息确认&#xff08;ACK&#xff09;时&#xff0c;可以同时向…

【Spring AI 0基础教程】1、基础篇 环境搭建 - 智能天气预报助手

基础篇 | 环境搭建 - 智能天气预报助手 一、什么是 Spring AI Spring AI (https://spring.io/projects/spring-ai)]是 Spring 官方于 2023 年推出的 AI 应用开发框架&#xff0c;它如同 AI 世界的"Spring 生态连接器"&#xff0c;致力于简化开发集成了 AI 功能的应…

深入浅出MyBatis缓存:如何让数据库交互飞起来

深入浅出MyBatis缓存&#xff1a;如何让数据库交互飞起来你是否遇到过这样的场景&#xff1a;系统在高并发下响应缓慢&#xff0c;数据库监控显示CPU飙升&#xff0c;日志里充斥着大量重复SQL&#xff1f;作为开发者&#xff0c;我曾亲眼目睹一个简单的配置查询拖垮整个系统。今…

【计算机考研(408)- 数据结构】绪论

绪论 基本概念&#xff08;理解即可&#xff09; 数据是信息的载体&#xff0c;是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别 和处理的符号的集合。数据是计算机程序加工的原料。&#xff08;For Example : 声音/图像/字符串等&#xff09; 数据元…

嵌入式学习-土堆PyTorch(9)-day25

进入尾声&#xff0c;一个完整的模型训练 &#xff0c;点亮的第一个led#自己注释版 import torch import torchvision.datasets from torch import nn from torch.utils.tensorboard import SummaryWriter import time # from model import * from torch.utils.data import Dat…

Java变量详解:局部变量、成员变量、类变量区别及使用场景

作为Java开发者&#xff0c;深入理解不同变量的特性是写出高质量代码的基础。本文将为你全面解析三种核心变量类型&#xff0c;并通过实战案例展示它们的正确使用方式。一、变量类型概览 1. 局部变量&#xff08;Local Variable&#xff09; 定义&#xff1a;在方法、构造方法或…

【收集电脑信息】collect_info.sh

收集电脑信息 collect_info.sh #!/bin/bashoutput"info.txt" > "$output"# 1. OS Version echo " 操作系统名称及版本 " >> "$output" lsb_release -d | cut -f2- >> "$output" echo -e "\n" >…

服务器清理空间--主要是conda环境清理和删除

1.查看空间情况 (base) zhouy24RL-DSlab:~/zhouy24Files$ df -h Filesystem Size Used Avail Use% Mounted on udev 252G 0 252G 0% /dev tmpfs 51G 4.9M 51G 1% /run /dev/nvme0n1p3 1.9T 1.7T 42G 98% / tmpfs 252G …

UE5多人MOBA+GAS 26、为角色添加每秒回血回蓝(番外:添加到UI上)

文章目录添加生命值和蓝量的状态标签创建无限GE并应用监听添加和去除标签每秒回复配上UI添加生命值和蓝量的状态标签 添加新的标签 CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Stats_Health_Full)CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Stats_Health_Empty)CRUNCH_API U…

MetaGPT源码剖析(三):多智能体系统的 “智能角色“ 核心实现——Role类

每一篇文章都短小精悍&#xff0c;不啰嗦。今天我们来深入剖析Role类的代码实现。在多智能体协作系统中&#xff0c;Role&#xff08;角色&#xff09;就像现实世界中的 "员工"&#xff0c;是执行具体任务、参与协作的基本单位。这段代码是 MetaGPT 框架的核心&#…

【项目经验】小智ai MCP学习笔记

理论 1、什么是MCP MCP(Model Context Protocol&#xff0c;模型上下文协议)是一种开放式协议&#xff0c;它实现了LLM与各种工具的调用。使LLM从对话、生成式AI变成了拥有调用三方工具的AI。用官方的比喻&#xff0c;MCP就是USB-C接口&#xff0c;只要实现了这个接口&#x…

Matlab学习笔记:矩阵基础

MATLAB学习笔记:矩阵基础 作为MATLAB的核心,矩阵是处理数据的基础工具。矩阵本质上是一个二维数组,由行和列组成,用于存储和操作数值数据。在本节中,我将详细讲解矩阵的所有知识点,包括创建、索引、运算、函数等,确保内容通俗易懂。我会在关键地方添加MATLAB代码示例,…