SpringBoot有几种获取Request对象的方法?
  TuKgtV27aHkY 2023年11月02日 27 0


HttpServletRequest(简称Request)是Java Servlet规范中定义的接口,用于表示HTTP请求。它提供了访问HTTP请求的方法,包括获取请求参数、请求头、请求路径等。

HttpServletRequest接口提供了一系列方法,用于获取HTTP请求的各个部分的信息。下面是一些常用的方法:

  1. getRequestURI():获取请求的URI(统一资源标识符),即请求的路径部分,不包括主机名、端口号和上下文路径。
  2. getMethod():获取HTTP请求的方法,如GET、POST、PUT等。
  3. getParameter(String name):获取指定名称的请求参数的值。如果有多个同名参数,只返回第一个参数的值。
  4. getParameterMap():获取所有请求参数的Map集合,其中键为参数名,值为参数值的数组。
  5. getHeader(String name):获取指定名称的请求头的值。
  6. getHeaderNames():获取所有请求头的名称的枚举。
  7. getCookies():获取请求中的所有Cookie。
  8. getSession():获取与请求关联的会话对象。
  9. getRemoteAddr():获取客户端的IP地址。
  10. getInputStream():获取请求的输入流,用于读取请求体的内容。

目录

一、通过请求参数获取

二、通过 RequestContextHolder 获取

三、通过自动注入获取


一、通过请求参数获取

该方法实现的原理是 Controller 开始处理请求时,Spring 会将 Request 对象赋值到方法参数中,我们直接设置到参数中即可得到 Request 对象。

@RequestMapping("/index")
@ResponseBody
public void index(HttpServletRequest request){
  // TODO
}

二、通过 RequestContextHolder 获取

在 Spring Boot 中,RequestContextHolder 是 Spring 框架提供的一个工具类,用于在多线程环境中存储和访问与当前线程相关的请求上下文信息。它主要用于将当前请求的信息存储在线程范围内,以便在不同的组件中共享和访问这些信息。

@RequestMapping("/index")
@ResponseBody
public void index(){
	ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
	HttpServletRequest request = servletRequestAttributes.getRequest();
	// TODO
}

三、通过自动注入获取

@Controller
public class IndexController{

    @Autowired
    private HttpServletRequest request; 

}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   53   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   107   0   0 Java
  8s1LUHPryisj   2024年05月17日   46   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
TuKgtV27aHkY