当前位置: 首页 > news >正文

HttpServletRequest、ServerHttpRequest 和 ServerWebRequest作用详解

1、HttpServletRequest

  • 所属框架:Java Servlet API(基于阻塞式 I/O)。

  • 使用场景:传统的 Servlet 应用(如 Spring MVC的Tomcat、常用的容器等等)。

  • 作用:表示客户端的 HTTP 请求。

  • 常用方法:

    • getParameter(String name):获取请求参数。

    • getHeader(String name):根据名称获取单一的请求头

    • getMethod():获取 HTTP 方法(如 GET、POST)。

    • getRequestURI():获取请求的 URI。

    • getInputStream():获取请求体的输入流。

    • getSession():获取会话。

    • getAttribute(String name):获取请求属性。
      示例:

@RestController
public class MyController {

    @GetMapping("/hello")
    public String hello(HttpServletRequest request) {
        String name = request.getParameter("name");
        return "Hello, " + name;
    }
}

2、ServerHttpRequest

  • 所属框架:Spring WebFlux(基于响应式编程,非阻塞式 I/O)。

  • 使用场景:响应式 Web 应用(如 Spring WebFlux)。

  • 作用:提供了访问请求信息的方法,如请求头、请求参数、请求体、支持响应式流处理。

  • 常用方法:

    • getHeaders():获取请求头。

    • getMethod():获取 HTTP 方法。

    • getURI():获取请求的 URI。

    • getBody():获取请求体的响应式流(Flux)。

示例:

@RestController
public class MyController {

    @GetMapping("/hello")
    public Mono<String> hello(ServerHttpRequest request) {
        String name = request.getQueryParams().getFirst("name");
        return Mono.just("Hello, " + name);
    }
}

3、ServerWebRequest

  • 所属框架:Spring WebFlux(基于响应式编程,非阻塞式 I/O)。

  • 使用场景:响应式 Web 应用(如 Spring WebFlux)。

  • 作用:是对 ServerHttpRequest 和 ServerHttpResponse 的封装、提供了更高级的 API,用于访问请求和响应信息、支持响应式流处理。

  • 常用方法:

    • getHeaders():获取请求头。

    • getMethod():获取 HTTP 方法。

    • getURI():获取请求的 URI。

    • getBody():获取请求体的响应式流(Flux)。

    • getAttribute(String name):获取请求属性。

    • getSession():获取会话。

示例:

@RestController
public class MyController {

    @GetMapping("/hello")
    public Mono<String> hello(ServerWebRequest request) {
        String name = request.getQueryParams().getFirst("name");
        return Mono.just("Hello, " + name);
    }
}

4、使用场景总结

4.1、HttpServletRequest:

适用于传统的 Servlet 应用(如 Spring MVC)。

适合阻塞式 I/O 的场景。

4.2、ServerHttpRequest:

适用于响应式 Web 应用(如 Spring WebFlux)。

适合非阻塞式 I/O 的场景。

4.3、ServerWebRequest:

适用于响应式 Web 应用(如 Spring WebFlux)。

提供了更高级的 API,封装了 ServerHttpRequest 和 ServerHttpResponse。

5、总结

如果你使用的是传统的 Spring MVC,选择 HttpServletRequest。

如果你使用的是响应式 Spring WebFlux,选择 ServerHttpRequest 或 ServerWebRequest。

ServerHttpRequest 更底层,适合直接操作请求和响应。

ServerWebRequest 更高级,封装了更多功能,适合复杂的业务场景。

相关文章:

  • K8S学习之基础九:pod的生命周期
  • Ubuntu20.04双系统安装及软件安装(四):国内版火狐浏览器
  • linux应用:errno、perror、open、fopen
  • StableDifussion初学(模型选择区)
  • 除了DeepSpeed,在训练和推理的时候,显存不足还有什么优化方法吗?FlashAttention 具体是怎么做的
  • Gartner发布安全运营指标构建指南
  • SpringMVC 的配置及拦截器
  • 浅谈开发基于DeepSeek的编程辅助插件需要系统性的技术规划和实施方案
  • Python+Vue+数据可视化的考研知识共享平台(源码+论文+讲解+安装+调试+售后)
  • 【HarmonyOS Next】自定义Tabs
  • 脑机接口SSVEP经典算法 TRCA任务相关成分分析 matlab实战
  • 05类加载机制篇(D6_方法调用和方法执行)
  • QSFP(Quad Small Form-factor Pluggable)详解
  • DeepSeek赋能Power BI:开启智能化数据分析新时代
  • uniapp 常用 UI 组件库
  • 华为hcia——Datacom实验指南——配置手工模式以太网链路聚合
  • 蓝桥云客 求和
  • 数据结构与算法:选择排序
  • 天佐.盘古斧 即时通讯平台
  • kakfa-3:ISR机制、HWLEO、生产者、消费者、核心参数负载均衡
  • 苹果网站导航条/有什么平台可以发布推广信息
  • 交通局网站建设整改/加强服务保障满足群众急需m
  • 企业网站设计文档/百度上怎么免费开店
  • php做网站首页/百度数字人内部运营心法曝光
  • php做网站主要怎么布局/企业微信营销管理软件
  • 公司独立网站平台建设/宁波seo行者seo09