【JavaEE】_HttpServletRequest类

目录

1. 核心方法

2. 简单方法使用实例


HttpServletRequest表示一个HTTP请求;

1. 核心方法

方法描述
① String getProtocal()返回请求协议的名称和版本

② String getMethod()

返回请求的HTTP方法的名称,如GET、POST或PUT
③ String getRequestURI()从协议名称直到HTTP请求的第一行的查询字符串中,返回该请求的URL的一部分
④ String getContexPath()

返回指示请求上下文的请求URI部分

(返回第一级路径)

⑤ String getQueryString()

返回包含在路径后的请求URL中的查询字符串(?后的参数)

(返回键值对部分)

⑥ Enumeration getParameterNames()

返回一个String对象的枚举,包含在该请求中包含的参数的名称;

(获取到所有的key)

String getParameter(String name)

以字符串形式返回请求参数的值,或者如果参数不存在则返回null

(根据key获取value)

⑧ String[] getParameterValues(String name)

返回一个字符串对象的数组,包含所有给定的请求参数的值,

如果参数不存在则返回null

(一个key有多个值)

⑨ Enumeration getHeaderNames()返回一个枚举,包含在该请求中包含的所有头名
⑩ String getHeader(String name)以字符串形式返回指定的请求头的值
⑪ String getCharacter Encoding()返回请求主题中使用的字符编码的名称
⑫ String getContentType()返回请求主题的MIME类型,如果不知道类型则返回null
⑬ int getContentLength()以字节为单位返回请求主体的长度,并提供输入流,或者如果长度未知则返回-1
InputStream getInputStream()用于读取请求的body内容,返回一个InputStream对象

 注:1. 对于方法③ :getRequestURI方法请注意为URI而非URL,

URI:唯一资源标识符,类似于身份证号码;

URL:唯一资源定位符/地址符,类似于户口本地址;

因为URL与URI的核心词都是唯一,常会使用URL来作为URI,在实际开发中,二者通常不做严格区分。

2. 对于方法⑥ ⑦ ⑧,均是对query string的键和值的解析操作。

query string 本质上是键值对,一般都是要根据key获取value,很少把query string作为一个整体来使用,方法⑤ getQueryString获取到的是一长串键值对。

3. 对于方法⑨ 和⑩,分别获取到的是HTTP请求头部分(header)的键值对的所有键,和根据key获取value;

4. 对于方法 ⑪ ⑫ ⑬,都是对方法⑩:getHeader方法的简单封装,都可以通过getHeader实现。

由于CharacterEncoding,ContentType和ContentLength属性非常常用,故而单拎出来;

5. 对于方法 ⑭,通过getInputStream可以获取到一个流对象,进一步读取该流对象,就可以得到整个请求的body;

在java中表示一个不定长的数据时,经常会使用流对象,从而实现非必须一次性处理完所有数据,并更好地兼容二进制;

6. 以上方法均为get系列方法,即用于读;没有set系列方法,即不能写;

因为当前获取到的HttpServletRequest的数据都是由客户端发来的,这些内容已经确定了,程序员不应该修改。

2. 简单方法使用实例

包括① ② ③ ④ ⑤ ⑨等方法

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;@WebServlet("/Show")
public class ShowRequestServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 调用API,把得到的结果构造成一个字符串,统一返回给客户端StringBuilder stringBuilder = new StringBuilder();stringBuilder.append(req.getProtocol());stringBuilder.append("<br>");stringBuilder.append(req.getMethod());stringBuilder.append("<br>");stringBuilder.append(req.getRequestURI());stringBuilder.append("<br>");stringBuilder.append(req.getContextPath());stringBuilder.append("<br>");stringBuilder.append(req.getQueryString());stringBuilder.append("<br>");// header部分Enumeration<String> headerNames = req.getHeaderNames();while(headerNames.hasMoreElements()){String key = headerNames.nextElement();String value = req.getHeader(key);stringBuilder.append(key+": "+ value+"<br>");}// 将以上内容整体返回给客户端resp.setContentType("text/html; charset=utf8");resp.getWriter().write(stringBuilder.toString());}
}

注:1. 在html中,<br>标签用于实现换行功能,若需更多常用html标签用法,请查看下文:

【JavaEE】_HTML常用标签-CSDN博客

使用postman向当前webapp发送一个get请求:

查看响应:

也可通过浏览器发送请求并获取响应:

可也在URL中指定query string,就可以从响应页面获取到query string了:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/492445.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WampServer环境下载安装并结合内网穿透实现远程访问管理界面

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境&#xff0c;是一组常用来…

开源MBG----renrenGenerator

目录 1.克隆项目到本地 2.编辑数据库连接 3.定义生成的代码模版 4.验证生成结果 5.多说一句 项目简介&#xff1a;人人开源项目的代码生成器&#xff0c;可在线生成entity、xml、dao、service、vue、sql代码&#xff0c;减少70%以上的开发任务。 项目地址&#xff1a;ren…

刚拿到的《HarmonyOS应用开发者高级认证》,全网整理的题目,将近300题,100%通过

刚拿到《HarmonyOS应用开发者高级认证》&#xff0c;现在把题目和答案分享一下&#xff0c;这些题目是我根据其他网站整理的&#xff0c;宁滥勿缺&#xff0c;有个别题目是重复的&#xff0c;抽半天时间看一下&#xff0c;应该是稳过的。当然建议还是先跟着文档学一下鸿蒙或者看…

看了字节跳动月薪20K+测试岗面试题,让我这个工作3年的测试工程师,冷汗直流....

朋友入职已经两周了&#xff0c;整体工作环境还是非常满意的&#xff01;所以这次特意抽空给我写出了这份面试题&#xff0c;而我把它分享给伙伴们&#xff0c;面试&入职的经验&#xff01; 大概是在2月下旬的时候他告诉我投递了字节跳动并且简历已通过&#xff0c;2月24经…

基于Prony算法的系统参数辨识matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 Prony算法是一种用于信号处理和系统辨识的经典方法&#xff0c;特别适用于线性时不变系统&#xff08;LTI&#xff09;的频率响应分析以及模拟复指数信号序列。其…

Python爬虫系列-获取每天黄金价格(编写爬虫的过程和编写代码思路详细解析)

最近因为经济形势不好,黄金这样的硬通货价格持续走高,而且现在已经到了相当之高的程度。介于理财投资的低迷&#xff0c;黄金的长期投资说不定可以跑赢通胀。对于我们新手的投资&#xff0c;本着低买高卖的原则&#xff0c;总不会亏太多&#xff0c;这样我们就需要一个可以每天…

基于容器和集群技术的数据自动化采集设计和实现

目标&#xff1a;部署mysql服务容器并使用docker构建包含python爬虫脚本的容器采集数据到mysql数据库。 环境&#xff1a;Centos7、已配置Kubernetes集群及docker。 环境配置请参考以下文章&#xff1a; CentOS7搭建Kubernetes集群 Kubernetes集群信息如下(虚拟机主机名和IP…

Mac使用K6工具压测WebSocket

commend空格 打开终端&#xff0c;安装k6 brew install k6验证是否安装成功 k6 version设置日志级别为debug export K6_LOG_LEVELdebug执行脚本&#xff08;进入脚本所在文件夹下&#xff09; k6 run --vus 100 --duration 10m --out csvresult.csv script.js 脚本解释&…

计算机设计大赛 深度学习图像风格迁移 - opencv python

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习图像风格迁移 - opencv python 该项目较为新颖&#xff0c;适合作为竞赛课题…

【小沐学QT】QT学习之Web控件的使用

文章目录 1、简介1.1 Qt简介1.2 Qt下载和安装1.3 Qt快捷键1.4 Qt帮助 2、QtWeb控件2.1 测试代码1&#xff08;QApplication&#xff09;2.2 测试代码2&#xff08;QApplicationQWidget&#xff09;2.3 测试代码3&#xff08;QApplicationQMainWindow&#xff09;2.4 测试代码4&…

如何做代码的Review:一场细致入微的质量把控之旅

我是洋哥&#xff0c;一个拥有6年经验的程序员&#xff0c;Litchi开源组织发起人。 在软件开发中&#xff0c;代码Review是一个至关重要的环节。它不仅是保证代码质量的有效手段&#xff0c;还是团队成员之间交流经验、共享知识的桥梁。本文将带你走进代码Review的世界&#xf…

hcia datacom课程学习(1):通信基础

1.总体框架 上图为发送方通过互联网传递信息给接收方的过程。 家用路由器会直接集成上图中的四层&#xff08;vlan&#xff0c;DHCP&#xff0c;静态路由&#xff0c;NAT&#xff0c;PPPoE&#xff09;。 2.网络性能指标 &#xff08;1&#xff09;带宽 单位时间内传输的数…