SpringBoot复杂参数应用详细讲解
复杂参数:
- Map<String, Object> map
- Model model
- HttpServletRequest request
- HttpServletResponse response
以上复杂参数所携带的数据均可被放在 request 请求域中,其中 Map 与 Model 类型处理方法一致。(本文只介绍使用)
使用方法:
1. controller 类完整代码:
import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.Map; @Controller public class RequestController { @GetMapping("/params") public String testParam(Map<String, Object> map, Model model, HttpServletRequest request, HttpServletResponse response){ map.put("map", "helloMap"); model.addAttribute("model", "helloModel"); request.setAttribute("message", "helloMessage"); Cookie cookie = new Cookie("c1", "v1"); cookie.setDomain("localhost"); response.addCookie(cookie); return "forward:/success"; // 转发到 /SUCCESS请求 } @ResponseBody @GetMapping("/success") public Map success(HttpServletRequest request){ Map<String, Object> map = new HashMap<>(); Object hello = request.getAttribute("map"); Object model = request.getAttribute("model"); Object message = request.getAttribute("message"); map.put("hello", hello); map.put("medol", model); map.put("message", message); return map; } }
2. 具体解释:
- map、model 里面的数据会被放在request的请求域, 通过request.getAttribute(“数据名”) 取得。
- HttpServletRequest 的数据也会被放在request的请求域, 通过request.getAttribute(“请求名”) 取得。
注意:使用return "forward:/success"转发机制,Controller的注释为 @Controller
3. 执行结果:
通过request取得 Map,Medol,HttpServletRequest 的值如下图所示:
设置cookies成功:
尾注:我是看尚硅谷老师的课学习的SpringBoot,30分钟的课25分钟debug看源码(新手不友好),所以开始时真的很困难,可是只要跑起来就有风不是嘛,哼,死磕到底!
到此这篇关于SpringBoot复杂参数应用详细讲解的文章就介绍到这了,更多相关SpringBoot复杂参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中的日期时间类实例详解(Date、Calendar、DateFormat)
在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理,这篇文章主要介绍了Java中的日期时间类详解(Date、Calendar、DateFormat),需要的朋友可以参考下2023-11-11Java中的线程池ThreadPoolExecutor细致讲解
这篇文章主要介绍了Java中的线程池ThreadPoolExecutor细致讲解,线程池是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL,线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,需要的朋友可以参考下2023-11-11Spring Cloud Alibaba 之 Nacos教程详解
Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合性解决方案。这篇文章主要介绍了Spring Cloud Alibaba 之 Nacos的相关知识,需要的朋友可以参考下2020-11-11
最新评论