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.hqwc.cn/news/538442.html

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

相关文章

ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

发生的错误信息&#xff1a; File "C:\Users\malongqiang\.conda\envs\ObjectDetection\lib\ssl.py", line 1309, in do_handshakeself._sslobj.do_handshake() ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。 分析原因&#xff1a; …

App Inventor 2 Clipboard 拓展:实现剪贴板的复制粘贴功能

效果如下&#xff1a; 此 Clipboard 拓展由中文网开发及维护&#xff0c;最新版本 v1.0&#xff0c;基于 TaifunClipboard 开发。 使用方法 属性及方法很简单&#xff0c;默认操作成功后显示提示信息&#xff0c;SuppressToast设置为 假 后&#xff0c;则不显示提示信息。 经测…

k8s部署InfluxDB

&#xff08;作者&#xff1a;陈玓玏&#xff09; 1. 拉取镜像 docker pull influxdb #拉取镜像 docker run -d influxdb:latest #后台运行容器 docker exec -it 89b /bin/bash #进入容器&#xff0c;89b是容器ID的前三位 cd /usr/bin #进入容器后&#xff0c;进入此文件夹…

计数类Dp

文章目录 AcWing 900. 整数划分思路1. 完全背包AC CODE 2. 计数DpAC CODE AcWing 900. 整数划分 链接&#xff1a;https://www.acwing.com/activity/content/problem/content/1008/ 思路 1. 完全背包 完全背包的链接&#xff1a;https://blog.csdn.net/2301_78981471/artic…

【原创】EPLAN中端子图表的制作

在上一期的文章中,我们主要谈了EPLAN制图中常用符号,有伙伴提出,让我们写一篇,关于端子图表的技术资料。我们这篇文章就是作为对伙伴评论的回复。 在EPLAN制图的过程中,我们一起探讨技术问题,共同解决我们现实工作中遇到的问题,欢迎大家在评论区留言,我们会根据大家的…

IPFoxy的正确打开方式

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

人机交互三原则,网络7层和对应的设备、公钥私钥

人机交互三原则 heo Mandel提出了人机交互的三个黄金原则&#xff0c;它们强调了相似的设计目标&#xff0c;分别是&#xff1a; 简单总结为&#xff1a;控负持面–>空腹吃面 1&#xff0c;用户控制 2&#xff0c;减轻负担 3&#xff0c;保持界面一致 置用户于控制之下&a…

2024/3/14 定时器时钟

感觉和之前自己写的那个差不太多&#xff0c;只是用了定时器。贴一下代码. main.c #include <REGX52.H> #include "LCD1602.h" #include "Delay.h" #include "Timer0.h" unsigned char Sec59,Min49,Hour17;void main() {LCD_Init();Time…

基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台

tar -xzf prometheus-2.7.0-rc.1.linux-amd64.tar.gzcd prometheus-2.7.0-rc.1.linux-amd64/./prometheus --config.fileprometheus.yml --web.listen-address:5555 Prometheus 默认监听端口号为 9090&#xff0c;为了不与系统上的其它进程监听端口冲突&#xff0c;我们在启动…

6个可以免费使用的高质量作品集

如今&#xff0c;一个独特、美观、优秀的在线作品集在 UX 设计师或自由职业者能否找到一份满意的工作或吸引更多潜在用户方面发挥着重要作用&#xff0c;就像简历一样。然而&#xff0c;作为一个没有太多经验的设计师或新手&#xff0c;设计和创建一个详细、完美和引人注目的在…

第G5周:Pix2Pix理论与实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 一、背景知识 1.背景知识 1.1 图像翻译 图像翻译指的是将图像从源域转换到目标域的过程&#xff0c;同时保持图像内容的一致性。具体解释…

C语言之文件操作(万字详解)

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a; 我要学编程(ಥ_ಥ)-CSDN博客 目录 前言 文件的打开和关闭 流和标准流 文件指针 文件的打开和关闭 文件的顺序读写 顺序读写函数介绍 fputc的使用 fgetc的使用 fput…