IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> request.getParameter()、request.getInputStream()、request.getReader() -> 正文阅读

[PHP知识库]request.getParameter()、request.getInputStream()、request.getReader()

1.request.getParameter(String s)

1.1 返回:
Map (String,String),当参数中存在重复的key时,用这个方法只能获取到其中一个的值。

1.2 获取参数范围:

  1. 请求url的Query String部分
    在这里插入图片描述
  2. 编码类型为application/x-www-form-urlencoded(参数被放入到Form Data)
    在这里插入图片描述

注意:当Content-Type设置为 “application/josn” ,请求参数是会被放入Reqest Payload
在这里插入图片描述

2.request.getParameterMap()

2.1返回:
Map(String, String[]),当参数中存在重复的key时,这个方法会把这个key的所有值,以数组的形式接收。在使用时需要注意。

2.2 获取参数范围:
同request.getParameter(String s)

3.request.getInputStream()

3.1返回:
getInputStream方法返回一个代表实体内容的输入流对象,类型为javax.servlet.ServletInputStream,可以读取HTTP请求消息中的实体内容。如果实体内容中包含二进制数据,那么就只能使用此方法返回的输入流对象来读取。

4.request.getReader()

4.1返回:
getReader方法用于返回一个代表实体内容的BufferReader对象,返回的BufferReader对象将实体内容中的字节数据按照请求消息中指定的字符集编码转换成文本字符串。

总结

  1. Query String的参数通过request.getParameter()获取。

  2. 当content-type为application/x-www-form-urlencoded时,用request.getParameter()方法来获取请求参数值。但当请求内容不是该类型时,调用request.getInputStream()或request.getReader()方法来获取请求内容值。

    其实content-type为application/x- www-form-urlencoded时也可以直接调用request.getInputStream()或request.getReader()方法获取到请求内容再解析出具体都参数,但前提是还没调用request.getParameter()方法。此时当request.getInputStream()或request.getReader()获取到请求内容后,无法再调request.getParameter()获取请求内容。即对该类型的请求,三个方法互斥,只能调其中一个。

  3. request.getParameter()和request.getInputstream()都会从输入流读取数据(流只能读一次),request.getParameter()可以多次重复使用的原因是此方法将request的输入流数据封装到map中去了,所以可以重复获取。

  4. request.getParameter()和request.getInputstream()两个方法之间是互斥的,原因是流是不能重复读取的。而不仅request.getInputstream()会读取request的inputstream,request.getParameter()方法内部也会读取request的inputstream。

    但是当content-type为非application/x- www-form-urlencoded时,例如multipart/form-data编码时,即使先调用request.getParameter()也得不到数据,所以这时调用request.getParameter()方法对 request.getInputStream()或request.getReader()没有冲突,即使已经调用了 request.getParameter()方法也可以通过调用request.getInputStream()或request.getReader()得 到表单中的数据

  5. 当请求消息中的实体内容全部是文本数据,并且在Servlet程序中也需要以文本方式来处理这些内容时,适于使用getReader方法。如果Servlet程序不对他们进行处理,而只是存储到服务器的文件系统或数据库中,这适于使用
    getInputStream方法。

  6. 对于要处理文件上传的Servlet程序来说,只能调用getInputStream方法返回的ServletInputStream字节流对象去读取实体内容,而不能调用getReader方法。因为从ServletInputStream流对象中读取的数据是每个字节的原始内容,而从BufferedReader流对象中读取的数据是原始的内容按某种编码转换成的字符文本。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-22 14:26:09  更:2021-09-22 14:26:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 4:23:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计