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

HttpServletRequest

HttpServletRequest是什么

HttpServletRequest是一个接口,其父接口是ServletRequest

HttpServletRequest是Tomcat将 请求报文 转换封装而来的对象        (即请求报文的信息)

,在Tomcat调用service方法时传入

HttpServletRequest 代表客户端发来的请求,所有请求中的信息都可以通过该对象获得

一、功能概述

在 Servlet 的 service 方法中,通过 HttpServletRequest 对象获取请求参数,支持单值参数、多值参数获取,以及遍历所有参数 。

1. 请求头 请求体


        /*
       URI  统一资源标识符   interface URI{}   资源定位的要求和规范
       URL  统一资源定位符   class URL implements URI{}  一个具体的资源路径
        *    URI    /demo03/a.html
        *    URL  http://ip:port/demo03/a.html
        */

    代码

     @Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//行信息相关     请求方式  get\post  ,请求的url , 协议及版本  http/1.1System.out.println(req.getMethod()); //获取请求方式System.out.println(req.getScheme());//获取协议System.out.println(req.getProtocol());//获取协议及版本System.out.println(req.getRequestURI());//获取请求的URI       项目的资源路径System.out.println(req.getRequestURL()); //获取请求的URL      项目的资源的完成路径/*URI  统一资源标识符   interface URI{}   资源定位的要求和规范URL  统一资源定位符   class URL implements URI{}  一个具体的资源路径*    URI    /demo03/a.html*    URL  http://ip:port/demo03/a.html*/System.out.println(req.getLocalPort()); // 本应用容器的端口号  8080System.out.println(req.getServerPort()); // 客户端发请求时使用的端口号System.out.println(req.getRemotePort()); // 客户端软件的端口号// 请求头信息相关    key: value//获取所有请求头的名称Enumeration<String> headerNames = req.getHeaderNames();while (headerNames.hasMoreElements()) {String name = headerNames.nextElement();System.out.println(name+":"+req.getHeader(name));}
    }

    2.获取所有请求参数

    (一)单值参数获取

    // 根据参数名获取单个参数值,适用于像用户名、密码这类一般单个值的参数
    String username = req.getParameter("username");
    System.out.println(username);
    String userPwd = req.getParameter("userPwd");
    System.out.println(userPwd);

    req.getParameter("参数名"):从请求中根据参数名获取对应值,若参数不存在返回 null ,常用于获取文本框、单选框等单个值的表单数据 

    二)多值参数获取

    // 根据参数名获取多个参数值,
    String[] 数组名= req.getParameterValues("参数名");System.out.println(Arrays.toString(数组名));
    

    • req.getParameterValues("参数名"):获取同名参数的多个值,返回字符串数组 。若参数不存在,返回 null ;若只有一个值,数组长度为 1 ,适合处理复选框等多值表单元素 。

    (三)遍历所有参数

    // 获取所有参数名的枚举,遍历枚举来获取每个参数的名和值
    Enumeration<String> pnames = req.getParameterNames();
    while (pnames.hasMoreElements()) {String pname = pnames.nextElement();String[] values = req.getParameterValues(pname);if (values.length > 1) {System.out.println(pname + "=" + Arrays.toString(values));} else {System.out.println(pname + "=" + values[0]);}
    }
    

    • req.getParameterNames():获取请求中所有参数名的枚举对象 。通过遍历枚举,结合 getParameterValues ,可处理所有参数,根据值的数量(单值 / 多值)格式化输出 ,能全面了解请求携带的参数情况 。
    
    // 返回所有参数的map集合  key = 参数名  value = 参数值
    Map<String, String[]> parameterMap = req.getParameterMap();
    Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
    for (Map.Entry<String, String[]> entry : entries) {String pname = entry.getKey();String[] value = entry.getValue();if(value.length>1){System.out.println(pname+"="+Arrays.toString(value));}else{System.out.println(pname+"="+value[0]);}}

    http://www.lqws.cn/news/572689.html

    相关文章:

  • OpenCV 4.10.0 移植
  • Spring Cloud:服务监控与追踪的高级实践
  • C++ 第四阶段 STL 容器 - 第一讲:详解 std::vector
  • 5 c++核心——文件操作
  • restful规范
  • Oauth2 自定义设置token过期时间
  • HarmonyOS 公共事件机制介绍以及多进程之间的通信实现(9000字详解)
  • 【网络】:DNS协议、ICMP协议、NAT技术
  • MongoDB06 - MongoDB 地理空间
  • vllm部署私有智谱大模型
  • 疏通经脉: Bridge 联通逻辑层和渲染层
  • 模拟多维物理过程与基于云的数值分析-AI云计算数值分析和代码验证
  • 生物实验室安全、化学品安全
  • 【notes2】并发,IO,内存
  • 30套精品论文答辩开题报告PPT模版
  • Gemini cli Quickstart
  • 数据结构复习4
  • 常用指令合集(DOS/Linux/git/Maven等)
  • debug的计算表达式
  • 《平行宇宙思维如何让前端错误处理无懈可击》
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 20(题目+回答)
  • 各种常用的串口助手工具分享
  • 第10篇 图像语义分割和目标检测介绍
  • 循环神经网络的概念和案例
  • 带读YOLOv13,HyperACE | FullPAD到底是什么
  • 个人计算机系统安全、网络安全、数字加密与认证
  • 数据库中的 DDL(Data Definition Language,数据定义语言) 用于定义或修改数据库结构(如库、表、索引、约束等)。
  • 机器学习-02(深度学习的基本概念)
  • 智能新纪元:大语言模型如何重塑电商“人货场”经典范式
  • 【QT】信号和槽(1) 使用 || 定义