SpringBoot(接受参数相关注解)
文章目录
-
- 1.基本介绍
- 2.@PathVariable 路径参数获取信息
-
-
- 1.代码实例
-
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
-
- 3.@RequestHeader 请求头获取信息
-
-
- 1.代码实例
-
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
-
- 4.@RequestParameter 请求获取参数信息
-
-
- 1.代码实例
-
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
-
- 5.@CookieValue cookie获取值
-
-
- 1.代码实例
-
- 1.index.html
- 2.ParameterController.java
- 3.测试
- 2.细节说明
-
- 6.@RequestBody 处理json请求,post请求体获取信息
-
-
- 1.代码实例
-
- 1.index.html
- 2.ParameterController.java
- 3.测试
-
- 7.@RequestAttribute 请求域获取信息
-
-
- 1.代码实例
-
- 1.RequestController.java
- 2.配置视图解析器 application.yml
- 3.测试
-
- 8.@SessionAttribute session域获取信息
-
-
- 1.代码实例
-
- 1.SessionController.java
- 2.配置视图解析器(同上)
- 3.测试
-
- 9.复杂参数
-
-
- 1.代码实例
-
- 1.RequestController.java
- 2.测试
- 2.HttpServletResponse给浏览器设置cookie
-
- 1.代码实例
- 2.测试
-
1.基本介绍

2.@PathVariable 路径参数获取信息
1.代码实例
1.index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>基本注解</h1>
<hr/>
<a href="/monster/100/king">@PathVariable-路径变量:/monster/100/king</a>
</body>
</html>
2.ParameterController.java
package com.sun.springboot.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;/*** @author 孙显圣* @version 1.0*/
@RestController
public class ParameterController {@GetMapping("/monster/{id}/{name}") //接受两个路径参数public String pathVariable(@PathVariable("id") Integer id, @PathVariable("name") String name,@PathVariable Map<String, String> map) { //这里的map指将所有的路径参数都放到map中System.out.println("id:" + id + " name:" + name);for (Map.Entry<String, String> entry : map.entrySet()) {System.out.println("key:" + entry.getKey() + " value: " + entry.getValue());}return "success"; //返回json给浏览器}}
3.测试


2.细节说明
- @PathVariable(“xxx”)必须跟{xxx}相对应
- 可以将所有的路径参数放到map中 @PathVariable Map<String, String> map
3.@RequestHeader 请求头获取信息
1.代码实例
1.index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>基本注解</h1>
<hr/>
<a href="/requestHeader">@RequestHeader-获取请求头信息</a>
</body>
</html>
2.ParameterController.java
package com.sun.springboot.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;import java.util.Map;/*** @author 孙显圣* @version 1.0*/
@RestController
public class ParameterController {@GetMapping("/requestHeader") //获取请求头的信息public String requestHeader(@RequestHeader("host") String host, @RequestHeader Map<String, String> header) {System.out.println("host:" + host);System.out.println(header);return "success";}}
3.测试


2.细节说明
- 请求头的信息都是以key - value的形式存储的
- 可以通过@RequestHeader(“xxx”)来获取xxx对应的value
- 也可以通过@RequestHeader Map<String, String> header将所有的key - value都封装到map中
4.@RequestParameter 请求获取参数信息
1.代码实例
1.index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>基本注解</h1>
<hr/>
<a href="/hi?hobby=打篮球&hobby=踢球">@RequestParam-请求参数</a>
</body>
</html>
2.ParameterController.java
package com.sun.springboot.controller;import org.springframework.web.bind.annotation.*;import java.util.List;/*** @author 孙显圣* @version 1.0*/
@RestController
public class ParameterController {@GetMapping("/hi")public String hi(@RequestParam(value = "name", defaultValue = "孙显圣") String name,@RequestParam("hobby") List<String> list) {System.out.println("name:" + name);System.out.println(list);return "success";}}
3.测试


2.细节说明
- 请求参数是可以设置默认值的,使用defaultValue属性即可
- 请求参数还可以将同名的结果封装到List中
- 请求参数也可以使用@RequestParameter Map<String, String> map 将所有参数封装到map中,但是如果有同名的结果只会得到第一个,因为map的key是唯一的
5.@CookieValue cookie获取值
1.代码实例
1.index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>基本注解</h1>
<hr/>
<a href="/cookie">@CookieValue-获取cookie的值</a>
</body>
</html>
2.ParameterController.java
package com.sun.springboot.controller;import org.springframework.web.bind.annotation.*;import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;/*** @author 孙显圣* @version 1.0*/
@RestController
public class ParameterController {@GetMapping("/cookie")//这里可以设置required = false意为不是必须存在的,如果不存在则得到的值就为null//如果后面的参数类型是Cookie,则会获取Cookie对象并封装到变量中public String cookie(@CookieValue(value = "cookie_key", required = false) String cookie_value,@CookieValue(value = "username" , required = false) Cookie cookie, HttpServletRequest request) {//使用原生api获取cookiesCookie[] cookies = request.getCookies();for (Cookie cookie1 : cookies) {System.out.println(cookie1);}System.out.println(cookie_value);System.out.println("name:" + cookie.getName() + " value: " + cookie.getValue());return "success";}}
3.测试


2.细节说明
- @CookieValue可以根据后面要封装的参数的类型来获取指定的值,如果后面的类型是Cookie类型则会获取一个Cookie对象并封装进入,如果是String类型则会获取Cookie的value来进行封装
- 还可以通过Servlet原生api的request来获取所有的cookie
- @CookieValue中有属性required默认为true,意为必须存在,否则报错,如果设置为false,则如果获取不到则为null
6.@RequestBody 处理json请求,post请求体获取信息
1.代码实例
1.index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>基本注解</h1>
<hr/>
<form action="/requestBody" method="post"><input type="text" name="username"><br><input type="text" name="password"><br><input type="submit" value="submit">
</form>
</body>
</html>
2.ParameterController.java
package com.sun.springboot.controller;import org.springframework.web.bind.annotation.*;/*** @author 孙显圣* @version 1.0*/
@RestController
public class ParameterController {@PostMapping("requestBody")public String getRequestBody(@RequestBody String requestBody) { //获取请求体System.out.println(requestBody);return "success";}}
3.测试


7.@RequestAttribute 请求域获取信息
1.代码实例
1.RequestController.java
package com.sun.springboot.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
/*** @author 孙显圣* @version 1.0*/
@Controller
public class RequestController {@GetMapping("/login")public String login(HttpServletRequest request) {//在Request域中存放一些信息request.setAttribute("name", "sun");request.setAttribute("age", 13);//调用视图解析器,请求转发到/okreturn "forward:/ok";}@ResponseBody@GetMapping("/ok")public String ok(@RequestAttribute(value = "name", required = false) String name) { //使用注解来获取请求域中的信息并封装到参数中System.out.println("name: " + name);return "success"; //返回json给浏览器}
}
2.配置视图解析器 application.yml
spring:mvc:view: #配置了视图解析器suffix: .html #后缀prefix: / #前缀,指的是根目录
3.测试


8.@SessionAttribute session域获取信息
1.代码实例
1.SessionController.java
package com.sun.springboot.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.SessionAttribute;import javax.servlet.http.HttpServletRequest;/*** @author 孙显圣* @version 1.0*/@Controllerpublic class SessionController {@GetMapping("/login")public String login(HttpServletRequest request) {//在session域中设置信息request.getSession().setAttribute("session", "session_value");//调用视图解析器,请求转发到/okreturn "forward:/ok";}@ResponseBody@GetMapping("/ok")public String ok(@SessionAttribute(value = "session") String value) { //使用注解来获取session域中的信息并封装到参数中System.out.println("session: " + value);return "success"; //返回json给浏览器}}
2.配置视图解析器(同上)
3.测试


9.复杂参数
1.代码实例
1.RequestController.java
package com.sun.springboot.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletResponse;
import java.util.Map;/*** @author 孙显圣* @version 1.0*/
@Controller
public class RequestController {@GetMapping("/login")public String login(Map<String, Object> map, Model model, HttpServletResponse response) {//给map封装信息map.put("user", "sun");map.put("job", "工程师");//model封装信息model.addAttribute("sal", 1000);//结果最后都会封装到request域中//调用视图解析器,请求转发到/okreturn "forward:/ok";}@ResponseBody@GetMapping("/ok")public String ok(@RequestAttribute("user") String user, @RequestAttribute("job") String job,@RequestAttribute("sal") Integer sal) { //使用注解来获取请求域中的信息并封装到参数中System.out.println("user:" + user + " job:" + job + " sal:" +sal);return "success"; //返回json给浏览器}
}
2.测试


2.HttpServletResponse给浏览器设置cookie
1.代码实例
package com.sun.springboot.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;/*** @author 孙显圣* @version 1.0*/
@Controller
public class RequestController {@GetMapping("/login")public String login(HttpServletResponse response) {Cookie cookie = new Cookie("cookie_name", "cookie_value");response.addCookie(cookie);//调用视图解析器,重定向到/ok,不能使用请求转发,因为虽然响应给客户端cookie了,// 但是由于是请求转发,第二个controller得到的是最开始的请求,那时候还没有cookiereturn "redirect:/ok";}@ResponseBody@GetMapping("/ok")public String ok(@CookieValue("cookie_name") Cookie cookie) {//获取cookieSystem.out.println("key:" + cookie.getName() + " value:" + cookie.getValue());return "success"; //返回json给浏览器}
}
2.测试


相关文章:
SpringBoot(接受参数相关注解)
文章目录 1.基本介绍2.PathVariable 路径参数获取信息 1.代码实例 1.index.html2.ParameterController.java3.测试 2.细节说明 3.RequestHeader 请求头获取信息 1.代码实例 1.index.html2.ParameterController.java3.测试 2.细节说明 4.RequestParameter 请求获取参数信息 1.…...
hbase合并队列超长问题分析
问题现象 hbase集群合并队列超长,有节点上合并任务已经运行超过1天未结束,合并队列总长不断增加。 问题分析 参数配置: 配置参数默认值含义hbase.hregion.memstore.flush.size128MMemStore达到该值会Flush成StoreFilehbase.hregion.memstore.block.multiplier4当region中…...
FPGA的星辰大海
编者按 时下风头正盛的DeepSeek,正值喜好宏大叙事的米国大统领二次上岗就业,OpenAI、软银、甲骨文等宣布投资高达5000亿美元“星际之门”之际,对比尤为强烈。 某种程度上,,是低成本创新理念的直接落地。 包括来自开源社区的诸多赞誉是,并非体现技术有多“超越”,而是…...
认识vue-admin
认识vue-admin **核心交付:** 为什么要基于现成架子二次开发 什么是二次开发:基于已有的代码(项目工程,脚手架)开进行新功能的开发 所以看懂已有的框架中的既有代码,变得很重要了 1. 背景知识 后台管理系统是一种最…...
STM32、GD32驱动TM1640原理图、源码分享
一、原理图分享 二、源码分享 /************************************************* * copyright: * author:Xupeng * date:2024-07-18 * description: **************************************************/ #include "smg.h"#define DBG_TAG "smg&…...
spring boot 对接aws 的S3 服务,实现上传和查询
1.aws S3介绍 AWS S3(Amazon Simple Storage Service)是亚马逊提供的一种对象存储服务,旨在提供可扩展、高可用性和安全的数据存储解决方案。以下是AWS S3的一些主要特点和功能: 1.1. 对象存储 对象存储模型:S3使用…...
PH热榜 | 2025-02-12
1. FirstHR 2.0 with HR Copilot 标语:小型企业的一站式人力资源平台 介绍:对小型企业来说,FirstHR是一个人力资源平台,专注于招聘和团队发展,并融合了一点人工智能技术。 产品网站: 立即访问 Product …...
通过例子学 rust 个人精简版 1-1
1-1 Hello World fn main() {println!("Hello World!");// 动手试一试println!("Im a Rustacean!"); }Hello World! Im a Rustacean!要点1 :println 自带换行符 注释 fn main() {let x 5 /* 90 */ 5;println!("Is x 10 or 100? x …...
HTTP的前世今生:如何塑造现代互联网的交互方式?
一、关于HTTP 1.1 简介 “没有HTTP协议,就没有今天的互联网。” 从简单的文本传输到支撑全球数十亿设备的实时交互,HTTP协议始终是Web世界的核心纽带。本文将深入剖析其设计思想、演进历程及底层工作原理。 HTTP(HyperText Transfer Protoco…...
Flutter_学习记录_动画的简单了解
用AnimationController简单实现如下的效果图: 1. 只用AnimationController实现简单动画 1.1 完整代码案例 import package:flutter/material.dart;class AnimationDemo extends StatefulWidget {const AnimationDemo({super.key});overrideState<AnimationDe…...
【java】for (int num : numbers) { System.out.print(num + “ “); } for里的是什么意思
for (int num : numbers) 是 Java 中的一种 增强型 for 循环(也称为 for-each 循环)。它的作用是遍历数组或集合中的每一个元素,并对每个元素执行循环体中的操作。 1. 增强型 for 循环的语法 java Copy for (元素类型 变量名 : 数组或集合…...
内容中台驱动企业CMS架构优化与高效策略
内容概要 在数字化转型浪潮中,企业内容管理系统(CMS)正面临从单一内容存储向智能化、协同化方向演进的迫切需求。通过引入内容中台架构,企业能够有效整合元数据管理、版本控制与智能协作能力,从而优化传统CMS的底层逻…...
我用 Cursor 开发了一款个人小记系统
https://note.iiter.cn 项目背景 在日常工作和学习中,我们经常需要快速记录一些想法、收藏一些有用的链接或者保存一些重要的文本、图片内容。虽然市面上已经有很多笔记软件,但我想要一个更轻量、更简单的工具,专注于快速记录和智能检索。于是我开发了这款个人小记系统。 系统…...
百问网(100ask)提供的烧写工具的原理和详解;将自己编译生成的u-boot镜像文件烧写到eMMC中
百问网(100ask)提供的烧写工具的原理 具体的实现原理见链接 http://wiki.100ask.org/100ask_imx6ull_tool 为了防止上面这个链接失效,我还对上面这个链接指向的页面保存成了mhtml文件,这个mhtml文件的百度网盘下载链接: https://pan.baidu.c…...
doris:异步物化视图概述
物化视图作为一种高效的解决方案,兼具了视图的灵活性和物理表的高性能优势。 它能够预先计算并存储查询的结果集,从而在查询请求到达时,直接从已存储的物化视图中快速获取结果,避免了重新执行复杂的查询语句所带来的开销。 使用场…...
图像缩放的双线性插值实现方式
1、双线性插值概念 双线性插值是一种用于在二维网格上进行插值的方法,适用于图像处理、计算机图形学等领域。它通过利用四个邻近点的已知值,估算出任意点的值。双线性插值在两个方向(通常是水平和垂直)上分别进行线性插值&#x…...
深入剖析 Vue 的响应式原理:构建高效 Web 应用的基石
深入剖析 Vue 的响应式原理:构建高效 Web 应用的基石 在前端开发的广阔天地里,Vue.js 凭借其简洁易用的特性和强大的功能,成为众多开发者的心头好。其中,响应式原理作为 Vue 的核心亮点之一,让数据与视图之间实现了高…...
40.日常算法
1.无重复字符的最长子串 题目来源 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 class Solution { public:int lengthOfL…...
CAS单点登录(第7版)11.SSO SLO
如有疑问,请看视频:CAS单点登录(第7版) SSO & SLO 安装IDEA Download IntelliJ IDEA – The IDE for Professional Development in Java and Kotlin 安装Maven Download Apache Maven – Maven MAVEN_HOMED:\apache-maven…...
Bob the Canadian
1:around the house Hi! Bob the Canadian here! Let’s learn English around the house. Come on in! Hi, Bob the Canadian here. Welcome to this video. If this is your first time here, don’t forget to click the subscribe button below, and give…...
终极游戏模型管理中心:XXMI-Launcher完整使用指南
终极游戏模型管理中心:XXMI-Launcher完整使用指南 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 对于热爱二次元游戏的玩家来说,管理各种模型导入器&…...
开源免费的WPS AI 软件 察元AI文档助手:链路 055:从 Ribbon 到 fetch 的速查顺序
链路 055:从 Ribbon 到 fetch 的速查顺序 总体链路图 下图在全系列各篇保持一致,仅通过高亮样式标示本篇所覆盖的环节;箭头表示主成功路径,点线为异常或可选路径。阅读任意一篇时都应能回到本图定位,避免在单文件里「…...
开源免费的WPS AI 软件 察元AI文档助手:链路 052:wpsCapabilityRouter 中决策用 chatCompletion
链路 052:wpsCapabilityRouter 中决策用 chatCompletion 总体链路图 下图在全系列各篇保持一致,仅通过高亮样式标示本篇所覆盖的环节;箭头表示主成功路径,点线为异常或可选路径。阅读任意一篇时都应能回到本图定位,避…...
基于WeChatPadPro协议构建智能微信机器人:从架构解析到插件开发实战
1. 项目概述与核心价值最近在折腾一个挺有意思的项目,叫 WeChatPadPro-on-Wechat。简单来说,它是一个基于 WeChatPadPro 协议的智能微信机器人框架。如果你跟我一样,既想给自己的微信加个“AI大脑”,又对市面上一些需要自己抓包、…...
Deno Deploy部署Azure OpenAI代理:零成本解决API兼容问题
1. 项目概述:在Deno Deploy上搭建一个免费的Azure OpenAI代理如果你正在折腾各种开源的ChatGPT WebUI项目,比如ChatGPT-Next-Web、Lobe Chat,或者想在自己的应用里集成GPT能力,大概率会遇到一个头疼的问题:这些项目默认…...
从磁芯EE13到EE19:手把手复盘一个12.5W反激电源的AP法设计决策全过程
从EE13到EE19:12.5W反激电源设计中的工程决策艺术 当计算结果指向EE13而最终方案却落在EE19上时,这中间的决策过程远比公式推导更值得玩味。上周调试实验室那台反复重启的样机时,我突然意识到:真正区分工程师水平的,往…...
ModOrganizer2:游戏模组管理的终极解决方案 - 从新手到专家的完整指南
ModOrganizer2:游戏模组管理的终极解决方案 - 从新手到专家的完整指南 【免费下载链接】modorganizer Mod manager for various PC games. Discord Server: https://discord.gg/ewUVAqyrQX if you would like to be more involved 项目地址: https://gitcode.com…...
小红书数据采集终极指南:5个简单技巧破解反爬限制
小红书数据采集终极指南:5个简单技巧破解反爬限制 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 在小红书数据采集领域,许多开发者都面临着动态签名…...
OpenClaw 2.6.6 Windows 部署教程|拦截与报错一站式解决
OpenClaw 2.6.6 Windows 一键部署教程|零基础搭建本地 AI 智能助手 OpenClaw(小龙虾)是一款可在本地环境运行的 AI 智能操作工具,能够通过自然语言指令完成电脑操控、文件管理、办公自动化、浏览器操作、数据整理等任务。全程可视…...
魔兽争霸3终极兼容性修复指南:让你的经典游戏在现代电脑上焕然一新
魔兽争霸3终极兼容性修复指南:让你的经典游戏在现代电脑上焕然一新 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代…...
