博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
servlet 请求(Request)
阅读量:6679 次
发布时间:2019-06-25

本文共 1690 字,大约阅读时间需要 5 分钟。

servlet的请参数以字符串的形式作为请求的一部分从客户端发送到servlet容器。当请求是一个HttpServletRequest对象,且符合”3.1.1 参数可用时”描述的条件时,容器从URI查询字符串和POST数据中填充参数。参数以一系列的名-值对的形式保存。任何给定的参数的名称可存在多个参数值。ServletRequest接口的下列方法可访问这些参数: 

■ getParameter 
■ getParameterNames 
■ getParameterValues 
■ getParameterMap

getParameterValues方法返回一个String对象的数组,包含了与参数名称相关的所有参数值。getParameter方法的返回值必须是getParameterValues方法返回的String对象数组中的第一个值。getParameterMap方法返回请求参数的一个java.util.Map对象,其中以参数名称作为map键,参数值作为map值。

查询字符串和POST请求的数据被汇总到请求参数集合中。查询字符串数据在POST数据之前发送。例如,如果请求由查询字符串a=hello和POST数据a=goodbye&a=world组成,得到的参数集合顺序将是=(hello,goodbye,world)。

这些API不会暴露GET请求(HTTP1.1所定义的)的路径参数。他们必须从getRequestURI方法或getPathInfo方法返回的字符串值中解析。

以下是在POST表单数据填充到参数集前必须满足的条件:

1。该请求是一个HTTP或HTTPS请求。 

2。HTTP方法是POST。 
3。内容类型是application/x-www-form-urlencoded。 
4。该servlet已经对request对象的任意getParameter方法进行了初始调用。

如果不满足这些条件,而且参数集中不包括POST表单数据,那么servlet必须可以通过request对象的输入流得到POST数据。如果满足这些条件,那么从request对象的输入流中直接读取POST数据将不再有效。

当数据以multipart/form-data的格式发送时,servlet容器支持文件上传。 

如果满足以下任何一个条件,servlet容器提供multipart/form-data格式数据的处理。

■ servlet处理第8.1.5节,注解”@MultipartConfig”标注的请求。 

■ 为了servlet处理请求,部署描述符包含了一个multipart-config元素。

如何使request中multipart/form-data类型的数据可用,取决于servlet容器是否提供multipart/form-data格式数据的处理: 

■ 如果servlet容器提供multipart/form-data格式数据的处理,可通过HttpServletRequest中的以下方法得到:

public Collection
getParts()public Part getPart(String name)
  • 1
  • 2

译者注:Part类代表从multipart/form-data格式的POST请求中接收到的一个部分或表单项。 每个part都可通过Part.getInputStream方法访问头部,相关的内容类型和内容。

对于表单数据的Content-Disposition,即使没有文件名,也可使用part的名称通过HttpServletRequest的getParameter和getParameterValues​​方法得到part的字符串值。

■ 如果servlet的容器不提供multi-part/form-data格式数据的处理,这些数据将可通过HttpServletReuqest.getInputStream得到。

转载于:https://www.cnblogs.com/zhuxiner/p/9106062.html

你可能感兴趣的文章
一步一步学ROP之linux_x64篇
查看>>
Kali linux 2016.2(Rolling)里的应用更新和配置额外安全工具
查看>>
js 实现图片实时预览
查看>>
Java 8 Optional类深度解析
查看>>
联想还是那个联想吗?
查看>>
com.panie 项目开发随笔_前后端框架考虑(2016.12.8)
查看>>
BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]
查看>>
前端MVC学习总结(二)——AngularJS验证、过滤器、指令
查看>>
特许金融分析师 (CFA) 持证人现在一般在做什么工作?职业分布是怎样的?...
查看>>
ubuntu12.04中shell脚本无法使用source的原因及解决方法
查看>>
【题目】求n以内的素数个数
查看>>
VS 项目(c#)引用了 DLL文件,也写了Using,但是编译时提示:未能找到类型或命名空间名称...
查看>>
BZOJ 2599: [IOI2011]Race [点分治]
查看>>
面状县级行政区划转地级行政区划,并关联属性字段
查看>>
HDU 2092 整数解
查看>>
BZOJ 2882: 工艺 [后缀自动机+map]
查看>>
BZOJ 3527: [Zjoi2014]力 [快速傅里叶变换]
查看>>
Sql 列转行 三种方法对比
查看>>
SmartRoute之远程接口调用和负载
查看>>
Asp.net mvc 知多少(七)
查看>>