Module jdk.httpserver

Class Headers

java.lang.Object
com.sun.net.httpserver.Headers
所有已实现的接口:
Map<String,List<String>>

public class Headers extends Object implements Map<String,List<String>>
HTTP请求和响应头由这个类表示,该类实现了接口 Map<String, List <String>>。键是不区分大小写的字符串,表示头部名称,与每个键关联的值是一个 List<String>,每个请求或响应中的头部名称的出现都有一个元素。

例如,如果一个响应头实例包含一个键"HeaderName",具有两个值"value1和value2",那么此对象将输出为两个头部行:

 HeaderName: value1
 HeaderName: value2
 
提供了所有常规 Map 方法,但以下额外的便利方法最有可能被使用:

Headers 的实例可以是 可变的不可变的。一个 可变的头部 允许添加、删除或修改头部名称和值,例如由 HttpExchange.getResponseHeaders() 返回的实例。一个 不可变的头部 不允许对头部名称或值进行任何修改,例如由 HttpExchange.getRequestHeaders() 返回的实例。对于不可变头部实例的修改器方法将无条件地抛出 UnsupportedOperationException

此类中的所有方法都拒绝键和值为 null 的情况。在 HTTP 请求或响应头中永远不会出现键为 null 的情况。

自版本:
1.6
  • Constructor Details

    • Headers

      public Headers()
      创建一个空的 Headers 实例。
    • Headers

      public Headers(Map<String,List<String>> headers)
      从给定的 headers 创建一个可变的 Headers,具有相同的头部名称和值。
      参数:
      headers - 头部名称和值的映射
      抛出:
      NullPointerException - 如果 headers 或其任何名称或值为 null,或者任何值包含 null。
      自版本:
      18
  • Method Details

    • size

      public int size()
      从接口复制的描述: Map
      返回此映射中键-值映射的数量。如果映射包含的元素超过 Integer.MAX_VALUE,则返回 Integer.MAX_VALUE
      指定:
      size 在接口 Map<String,List<String>>
      返回:
      此映射中键-值映射的数量
    • isEmpty

      public boolean isEmpty()
      从接口复制的描述: Map
      返回 true 如果此映射不包含键-值映射。
      指定:
      isEmpty 在接口 Map<String,List<String>>
      返回:
      如果此映射不包含键-值映射,则返回 true
    • containsKey

      public boolean containsKey(Object key)
      从接口复制的描述: Map
      返回 true 如果此映射包含指定键的映射。更正式地说,如果此映射包含一个键 k 的映射,使得 Objects.equals(key, k),则返回 true。(最多只能有一个这样的映射。)
      指定:
      containsKey 在接口 Map<String,List<String>>
      参数:
      key - 要测试其在此映射中是否存在的键
      返回:
      如果此映射包含指定键的映射,则返回 true
    • containsValue

      public boolean containsValue(Object value)
      从接口复制的描述: Map
      返回 true 如果此映射将一个或多个键映射到指定值。更正式地说,如果此映射包含至少一个映射到值 v 的映射,使得 Objects.equals(value, v),则返回 true。对于大多数 Map 接口的实现,此操作可能需要与映射大小成线性关系的时间。
      指定:
      containsValue 在接口 Map<String,List<String>>
      参数:
      value - 要测试其在此映射中是否存在的值
      返回:
      如果此映射将一个或多个键映射到指定值,则返回 true
    • get

      public List<String> get(Object key)
      从接口复制的描述: Map
      返回指定键映射的值,如果此映射不包含键的映射,则返回null

      更正式地说,如果此映射包含从键k到值v的映射,使得Objects.equals(key, k),则此方法返回v;否则返回null。(最多只能有一个这样的映射。)

      如果此映射允许空值,则返回null并不一定表示映射不包含键的映射;也有可能映射将键明确映射到null。可以使用containsKey操作来区分这两种情况。

      指定者:
      get 在接口 Map<String,List<String>>
      参数:
      key - 要返回其关联值的键
      返回:
      指定键映射的值,如果此映射不包含键的映射,则返回null
    • getFirst

      public String getFirst(String key)
      返回给定keyString值的List的第一个值,如果key不存在映射,则返回null
      参数:
      key - 要搜索的键
      返回:
      与键关联的第一个String值,如果key不存在映射,则返回null
    • put

      public List<String> put(String key, List<String> value)
      从接口复制的描述: Map
      在此映射中将指定的值与指定的键关联(可选操作)。如果映射先前包含键的映射,则旧值将被指定的值替换。(如果映射m包含键k的映射,当且仅当m.containsKey(k)将返回true时,才说映射包含键k的映射。)
      指定者:
      put 在接口 Map<String,List<String>>
      参数:
      key - 要关联指定值的键
      value - 要与指定键关联的值
      返回:
      key关联的先前值,如果key之前没有映射,则返回null。(如果实现支持null值,则null返回还可以表示映射先前将nullkey关联。)
    • add

      public void add(String key, String value)
      将给定的value添加到给定key的标题列表中。如果映射尚不存在,则将创建它。
      参数:
      key - 标题名称
      value - 要添加到标题的值
    • set

      public void set(String key, String value)
      将给定的value设置为给定key的唯一标题值。如果映射尚不存在,则将创建它。
      参数:
      key - 标题名称
      value - 要设置的标题值
    • remove

      public List<String> remove(Object key)
      从接口复制的描述: Map
      如果存在,则从此映射中删除键的映射(可选操作)。更正式地说,如果此映射包含从键k到值v的映射,使得Objects.equals(key, k),则将删除该映射。(映射最多只能包含一个这样的映射。)

      返回此映射先前关联的键的值,如果映射不包含键的映射,则返回null

      如果此映射允许空值,则返回null并不一定表示映射不包含键的映射;也有可能映射明确将键映射到null

      一旦调用返回,映射将不包含指定的键的映射。

      指定者:
      remove 在接口 Map<String,List<String>>
      参数:
      key - 要从映射中删除其映射的键
      返回:
      key关联的先前值,如果key没有映射,则返回null
    • putAll

      public void putAll(Map<? extends String,? extends List<String>> t)
      从接口复制的描述: Map
      将指定映射中的所有映射复制到此映射中(可选操作)。此调用的效果等同于在指定映射中从键k到值v的每个映射上调用一次put(k, v)在此映射上。如果在操作进行时修改了指定映射,则此操作的行为是未定义的。如果指定映射具有定义的遇到顺序,则其映射的处理通常按照该顺序进行。
      指定者:
      putAll 在接口 Map<String,List<String>>
      参数:
      t - 要存储在此映射中的映射
    • clear

      public void clear()
      从接口复制的描述: Map
      从此映射中删除所有映射(可选操作)。此调用返回后,映射将为空。
      指定者:
      clear 在接口 Map<String,List<String>>
    • keySet

      public Set<String> keySet()
      从接口复制的描述: Map
      返回此映射中包含的键的Set视图。该集合由映射支持,因此对映射的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(除非通过迭代器自己的remove操作),则迭代的结果是未定义的。该集合支持元素删除,通过Iterator.removeSet.removeremoveAllretainAllclear操作从映射中删除相应的映射。它不支持addaddAll操作。
      指定者:
      keySet 在接口 Map<String,List<String>>
      返回:
      包含在此映射中的键的集合视图
    • values

      public Collection<List<String>> values()
      从接口复制的描述: Map
      返回此映射中包含的值的Collection视图。该集合由映射支持,因此对映射的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(除非通过迭代器自己的remove操作),则迭代的结果是未定义的。该集合支持元素删除,通过Iterator.removeCollection.removeremoveAllretainAllclear操作从映射中删除相应的映射。它不支持addaddAll操作。
      指定由:
      values 在接口 Map<String,List<String>>
      返回:
      此映射中包含的值的集合视图
    • entrySet

      public Set<Map.Entry<String,List<String>>> entrySet()
      从接口中复制的描述: Map
      返回此映射中包含的映射的Set视图。该集合由映射支持,因此对映射的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(除非通过迭代器自身的remove操作或通过迭代器返回的映射条目的setValue操作),则迭代的结果是未定义的。该集合支持元素移除,通过Iterator.removeSet.removeremoveAllretainAllclear操作从映射中移除相应的映射。它不支持addaddAll操作。
      指定由:
      entrySet 在接口 Map<String,List<String>>
      返回:
      包含在此映射中的映射的集合视图
    • equals

      public boolean equals(Object o)
      从类中复制的描述: Object
      指示某个其他对象是否与此对象“相等”。

      equals方法在非空对象引用上实现等价关系:

      • 它是自反的:对于任何非空引用值xx.equals(x)应返回true
      • 它是对称的:对于任何非空引用值xy,如果x.equals(y)应返回true,则只有当y.equals(x)返回truex.equals(y)才应返回true
      • 它是传递的:对于任何非空引用值xyz,如果x.equals(y)返回truey.equals(z)返回true,则x.equals(z)应返回true
      • 它是一致的:对于任何非空引用值xy,多次调用x.equals(y)应一致地返回true或一致地返回 ,前提是在对象上用于 equals比较的信息未被修改。
      • 对于任何非空引用值xx.equals(null)应返回
      等价类;等价类的所有成员彼此相等。等价类的成员可互换,至少对于某些目的而言。
      指定由:
      equals 在接口 Map<String,List<String>>
      覆盖:
      equals 在类 Object
      参数:
      o - 用于比较的引用对象。
      返回:
      如果此对象与obj参数相同,则返回true;否则返回
      参见:
    • hashCode

      public int hashCode()
      从类中复制的描述: Object
      为对象返回一个哈希码值。此方法支持哈希表(例如由HashMap提供的哈希表)的好处。

      hashCode的一般合同是:

      • 在Java应用程序的执行期间,如果在同一对象上多次调用hashCode方法,则只要在对象上用于equals比较的信息未被修改,hashCode方法必须一致地返回相同的整数。这个整数不需要在应用程序的一个执行到另一个执行之间保持一致。
      • 如果两个对象根据equals方法相等,则在两个对象的每个对象上调用hashCode方法必须产生相同的整数结果。
      • 如果根据equals方法两个对象不相等,则不需要调用hashCode方法在两个对象的每个对象上产生不同的整数结果。但是,程序员应该注意,对于不相等的对象产生不同的整数结果可能会提高哈希表的性能。
      指定由:
      hashCode 在接口 Map<String,List<String>>
      覆盖:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      参见:
    • of

      public static Headers of(String... headers)
      使用给定的名称值对作为其头信息集的不可变Headers返回。 String实例必须交替作为头信息名称和头信息值。要向同一名称添加多个值,必须对每个新值提供相同的名称。如果提供的 headers为空,则返回一个空的 Headers
      参数:
      headers - 名称值对的列表
      返回:
      具有给定名称值对的不可变头信息
      抛出:
      NullPointerException - 如果headers或其任何元素为null。
      IllegalArgumentException - 如果提供的字符串数量为奇数。
      自:
      18
    • of

      public static Headers of(Map<String,List<String>> headers)
      使用给定的headers从中返回具有相同头信息名称和值的不可变Headers
      参数:
      headers - 头信息名称和值的映射
      返回:
      一个不可变的头信息
      抛出:
      NullPointerException - 如果headers或其任何名称或值为null,或者任何值包含null。
      自:
      18