1. 接口定义

HttpServletRequest 接口为 ServletRequest 接口的子接口。官方对于 ServletRequest 接口的描述如下。

Defines an object to provide client request information to a servlet. The servlet container creates a ServletRequest object and passes it as an argument to the servlet’s service method.

工具人再次上线,该接口对象的主要作用就是把客户端的请求信息传递给 servlet。具体来看,就是 servlet 容器会把请求信息作为一个对象参数传递给 servlet 的 service() 方法。

HttpServletRequest 是 ServletRequest 接口的扩展,它为 HttpServlet 对象提供请求信息。

2. 接口方法

该接口提供了一系列用于读取 HTTP 请求信息的方法。

  • getContextPath() - 返回客户端所请求访问的 Web 应用的URL入口
  • getCookies()
  • getHeader(String name)
  • getHeaderNames()
  • getMethod()
  • getRequestURI() - 返回 HTTP 请求行中的URI
  • getQueryString() - 返回 HTTP 请求中的查询字符串,即 URL 中”?”后面的内容

3. 补充内容

3.1 URL 和 URI 的区别

URI:统一资源标识符
URL:统一资源定位符

它们都可以用来唯一的标识一个资源,不同之处在于前者是用符号(identifier)表示,后者用位置(locator)标识。

举个最简单的例子,假如全世界的人名都不允许重复,那么“小明”这个符号可以用来唯一的标识一个人,此外我们还可以通过位置的方式去标识小明,比如:/中国/北京/海淀/北京大学/小明。同时,位置也是符号的一种,不过是表现形式不同罢了,所以 URI 包括了 URL,URL不过是 URI 的一种而已。

3.2 状态码200的含义

之前对200这个状态码的定义停留在请求成功,但是什么叫请求成功了呢,对成功的定义没有明确的认知。

根据 rfc 文档对于状态码200的描述可知:所谓200确实代表着请求成功(request succeeded!),但是由于 http 请求方式的不同,成功的含义也是各不相同的,具体可以参考这里