首页 > Python资料 博客日记
SpringBoot(接受参数相关注解)
2024-03-17 11:00:04Python资料围观156次
本篇文章分享SpringBoot(接受参数相关注解),对你有帮助的话记得收藏一下,看Python资料网收获更多编程知识
文章目录
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获取cookies
Cookie[] 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);
//调用视图解析器,请求转发到/ok
return "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
*/
@Controller
public class SessionController {
@GetMapping("/login")
public String login(HttpServletRequest request) {
//在session域中设置信息
request.getSession().setAttribute("session", "session_value");
//调用视图解析器,请求转发到/ok
return "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域中
//调用视图解析器,请求转发到/ok
return "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得到的是最开始的请求,那时候还没有cookie
return "redirect:/ok";
}
@ResponseBody
@GetMapping("/ok")
public String ok(@CookieValue("cookie_name") Cookie cookie) {
//获取cookie
System.out.println("key:" + cookie.getName() + " value:" + cookie.getValue());
return "success"; //返回json给浏览器
}
}
2.测试
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj