Can `jakarta.servlet.ServletRequest#getParameterMap` contain null keys or values (in Tomcat)?

huangapple go评论87阅读模式
英文:

Can `jakarta.servlet.ServletRequest#getParameterMap` contain null keys or values (in Tomcat)?

问题

jakarta.servlet.ServletRequest#getParameterMap 可以包含空键或值吗(在Tomcat中)?

文档没有明确说明:

返回此请求的参数的java.util.Map。
请求参数是与请求一起发送的额外信息。对于HTTP
servlets,参数包含在查询字符串或已发布的表单中
数据。
返回:一个包含参数名称的不可变java.util.Map
作为键和参数值作为映射值。参数中的键
映射的类型为String。参数映射中的值的类型为
字符串数组。

英文:

Can jakarta.servlet.ServletRequest#getParameterMap contain null keys or values (in Tomcat)?

The documentation isn't clear about that:
> Returns a java.util.Map of the parameters of this request.
> Request parameters are extra information sent with the request. For HTTP
> servlets, parameters are contained in the query string or posted form
> data.
> Returns: an immutable java.util.Map containing parameter names
> as keys and parameter values as map values. The keys in the parameter
> map are of type String. The values in the parameter map are of type
> String array.

答案1

得分: 1

以下是翻译好的部分:

这实际上是两个问题:

它可以包含空键吗?不可以。键是参数名称。如果参数没有名称,它根本就不存在。

它可以包含空值吗?不可以。值是参数值。在查询字符串或提交数据中,参数可能看起来没有值,但映射将其存储为包含单个值""的字符串数组。如果尝试从映射中获取值并返回null,则表示具有该键/名称的参数不存在。

由于您提到了Tomcat,它返回ParameterMap(规范指定了Map,这是一个接口,因此不同的容器可能返回不同类型的映射)。

通常情况下,您可以假定您获取的映射具有与通过ServletRequest.getParameterValues与之交互的映射相同的行为。

英文:

This is really two questions:

Can it contain null keys? No. The key is the parameter name. If a parameter has no name it simply does not exist.

Can it contain null values? No. The value is the parameter value. A parameter can appear to be valueless in a query string or in post data, but the map stores this as a String array with the single value "". If you attempt to get a value from the map and it returns null, it indicates the parameter with that key/name does not exist.

Since you mentioned Tomcat, it returns ParameterMap (the spec specifies Map, which is an interface, so different containers may return different types of maps).

In general, you can assume the map you're getting has the same behavior as the one you're interacting with through ServletRequest.getParameterValues.

huangapple
  • 本文由 发表于 2023年6月26日 17:30:38
  • 转载请务必保留本文链接:https://go.coder-hub.com/76555379.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定