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.基本介绍

image-20240314115739021

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.测试

image-20240314132013427

image-20240314132028528

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.测试

image-20240314134629880

image-20240314134644676

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.测试

image-20240314135930766

image-20240314135936925

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.测试

image-20240314142646944

image-20240314142721839

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.测试

image-20240314144140750

image-20240314144151845

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.测试

image-20240314150044278

image-20240314150037970

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.测试

image-20240314150939704

image-20240314150945894

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.测试

image-20240314153229824

image-20240314153238100

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.测试

image-20240314155443305

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

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

相关文章

如何在群晖用Docker本地搭建Vocechat聊天服务并无公网ip远程交流协作

文章目录 1. 拉取Vocechat2. 运行Vocechat3. 本地局域网访问4. 群晖安装Cpolar5. 配置公网地址6. 公网访问小结 7. 固定公网地址 如何拥有自己的一个聊天软件服务? 本例介绍一个自己本地即可搭建的聊天工具,不仅轻量,占用小,且功能也停强大,它就是Vocechat. Vocechat是一套支持…

LabVIEW飞机液压基础试验台测试系统

LabVIEW飞机液压基础试验台测试系统 为解决飞机液压基础实验台人工控制操作复杂、测试时间长、测试流程易出错等问题&#xff0c;开发了一套基于LabVIEW的飞机液压基础试验台测试系统。该系统通过计算机控制&#xff0c;实现了高度自动化的测试流程&#xff0c;有效提高了测试…

图片编辑器tui-image-editor

提示&#xff1a;图片编辑器tui-image-editor 文章目录 前言一、安装tui-image-editor二、新建components/ImageEditor.vue三、修改App.vue四、效果五、遇到问题 this.getResolve is not a function总结 前言 需求&#xff1a;图片编辑器tui-image-editor 一、安装tui-image-ed…

手写简易操作系统(八)--特权级以及TSS

前情提要 我们在这里梳理一下上面几节讲的内容 首先是计算机开机&#xff0c;BIOS接过第一棒&#xff0c;将第一个扇区MBR的内容导入到内存 0x7c00 的位置。 然后就是MBR中我们自己写的内容&#xff0c;将Loader导入到 0x600 的地址&#xff0c;Loader设置了GDT&#xff0c;…

WebAssembly探索篇(二)引入第三库的简单demo

文章目录 开发环境demo简单介绍实践出真知各个文件内容CMakeLists.txtmain.cpp cmake 编译结果 遇到问题错误1&#xff1a;both async and sync fetching of the wasm failedvscode安装Preview on Web Server插件 最近因为项目原因&#xff0c;研究了一下WebAssembly。2015年上…

Java研学-SSM综合案例(二)

二 MyBatis逆向工程 1 介绍 Maven中的插件&#xff0c;可根据数据表生成实体类 Mapper 接口和 Mapper XML&#xff0c;可单独创建一个Maven项目&#xff0c;将所需的资源生成后&#xff0c;拷贝到对应的项目中(推荐)&#xff0c;或者直接在项目中使用。 2 配置pom依赖插件 &…

信息检索(十一):Nonparametric Decoding for Generative Retrieval

Nonparametric Decoding for Generative Retrieval 摘要1. 引言2. 相关工作3. 非参数解码3.1 关键优势3.2 Base Np3.3 异步 Np3.4 对比 Np3.5 聚类 4. 实验设置4.1 基线4.2 数据集和评价指标4.3 构建CE 的细节 5. 实验结果5.1 普通解码 vs Np 解码5.2 非参数解码的优点5.3 什么…

IPFoxy的正确打开方式

IPFoxy是一个全球动静态代理IP服务器软件&#xff0c;为全球用户提供优质的大数据代理服务&#xff0c;促进网络业务高校进行。目前拥有千万真实纯净IP资源&#xff0c;覆盖超过220个国家和地区&#xff0c;汇聚成优质海外代理池&#xff0c;支持http、https、socks5多种协议类…

visa卡支持美区苹果Apple id绑定

苹果手机我相信大家都很熟悉&#xff0c;所以很多小伙伴都需要绑定卡来进行一系列的体验&#xff0c;这里我使用的是559666 在绑定之前我们需要先开一张visa卡&#xff0c;点击获取 开卡步骤如下&#xff0c;按图片步骤即可开卡 卡片信息在卡中心cvc安全码里面

ATFX汇市:日本首相称尚未摆脱通缩问题,日央行加息时点或再度推迟,日系货币普跌

ATFX汇市&#xff1a;关于日本是否已经“克服通缩”的消息出现巨大矛盾。3月2日&#xff0c;外媒援引知情人士表示&#xff0c;日本政府正在讨论正式宣布经济已经克服通缩&#xff0c;日本首相岸田文雄或内阁成员之后可能会在政府会议和新闻发布会上公开发布这一声明&#xff0…

在win10下搭建linux环境的LORAWAN服务器chirpstack

文章目录 前言一、安装WSL第一步以管理员模式打开PowerShell第二步 安装WSL第三步 设置Linux用户信息 二、将WSL迁移到其他磁盘第一步 输入wsl -l -v查看ubuntu状态第二步 迁移第三步 注销原来的Ubuntu第四步 从D:\wsl-ubuntu导入 三、安装chirpstack第一步 安装git第二步 下载…

wxss和css的区别

目录 1. 语法差异 2. 尺寸单位 3. 样式导入 WXSS 示例代码&#xff1a; CSS 示例代码&#xff1a; 4. 组件和属性的支持 总结 WXSS (WeiXin Style Sheets) 和 CSS (Cascading Style Sheets) 都是用于描述文档样式的语言&#xff0c;但它们在微信小程序和网页开发中有一些…

JavaScript进阶:js的一些学习笔记-原型

文章目录 js面向对象1. 原型2. constructor属性3. 对象原型4. 原型继承5. 原型链 js面向对象 构造函数 属性和方法 function Person(name,age){this.name name;this.age age;this.play ()>{console.log(玩&#xff01;);} } const a new Person(1,12),b new Person(2…

redis中的zset的原理

一、zset有序集合的原理 如果有序集合元素个数少于128个且元素值小于64字节&#xff0c;使用压缩列表&#xff08;新版本已经废弃压缩列表改用listpack数据结构了&#xff09; 如果不满足上述条件&#xff0c;采用跳表作为redis的底层数据结构 二、压缩列表 1.由连续内存块组…

漏洞复现-金和OA系列

漏洞复现-金和OA系列 🗡金和OA jc6 RCE金和OA GetTreeDate.aspx SQL注入【新】金和OA RssModulesHttp.aspx接口SQL注入漏洞复现C6-GetSgIData.aspx SQL注入金和OA C6 GetTreeDate.aspx SQL注入金和OA C6 GetTreeDate.aspx未授权金和OA JC6 OfficeServer 任意文件上传漏洞金和…

全栈之路-新坑就绪-星野空间

感觉自己的技术栈一直没有形成一个很好的闭环 开新坑&#xff0c;准备把自己的技术栈链路打通&#xff0c; Don‘t think too much&#xff0c; just act&#xff01;[得意]

C++ 网络编程学习五

C网络编程学习五 网络结构的更新单例模式懒汉单例模式饿汉单例模式懒汉式指针智能指针设计单例类 服务器优雅退出asio的多线程模型IOServiceasio多线程IOThreadPoolepoll 和 iocp的一些知识点 网络结构的更新 asio网络层&#xff0c;会使用io_context进行数据封装&#xff0c;…

1.下载安装ESP32开发环境ESP-IDE

ESP32简介 ESP32介绍 说到ESP32&#xff0c;首先ESP32不是一个芯片&#xff0c;ESP32是一个系列芯片&#xff0c; 是乐鑫自主研发的一系列芯片微控制器。它主要的功能就是支持WiFi和蓝牙&#xff0c; ESP32指的是ESP32裸芯片。但是&#xff0c;“ESP32”一词通常指ESP32系列芯…

Unity之PUN实现多人联机射击游戏的优化

目录 &#x1f3ae;一、 跳跃&#xff0c;加速跑 &#x1f3ae;二、玩家自定义输入昵称 &#x1f345;2.1 给昵称赋值 &#x1f345;2.2 实现 &#x1f3ae;三、玩家昵称同步到房间列表 &#x1f345;3.1 获取全部玩家 &#x1f345;3.2 自定义Player中的字段 &#…

圈内大佬呕心之作,一年后斩获腾讯T3,这份Java学习笔记有多厉害

说这句话的人其实有一些误解&#xff0c;误解就在于&#xff0c;安逸的生活并不等于不需要奋斗&#xff0c;这要看你的家底。 某聪如果说要选择安逸的生活&#xff0c;他可以很安逸&#xff0c;因为他有了安逸的资本&#xff0c;而大部分的你&#xff0c;并没有这个资本&#…