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 请求方式的不同,成功的含义也是各不相同的,具体可以参考这里。