HttpServletRequest和HttpServletResponse的作用

67 阅读3分钟

HttpServletRequest

HttpServletRequest 是 Java Servlet API 中的一个接口,它定义了如何获取来自客户端的请求信息。当一个 HTTP 请求发送到服务器时,服务器端的 servlet 通过 HttpServletRequest 对象来读取请求的细节。下面是一些主要的功能和用途:

  1. 获取请求参数

    • 使用 getParameter(String name) 方法获取单个请求参数的值。
    • 使用 getParameterValues(String name) 获取多个同名参数的值。
    • 使用 getParameterNames() 获取所有请求参数的名字。
  2. 访问请求头

    • 使用 getHeader(String name) 获取指定名称的请求头的值。
    • 使用 getHeaderNames() 获取所有的请求头名称。
  3. 读取请求方法

    • 使用 getMethod() 获取请求方法(如 GET, POST, PUT, DELETE 等)。
  4. 获取会话信息

    • 使用 getSession(boolean create) 获取与请求关联的 HttpSession 对象。如果 create 为 true 并且没有现有会话,则创建一个新的会话。
  5. 获取请求路径信息

    • 使用 getContextPath() 获取应用上下文路径。
    • 使用 getPathInfo() 获取请求 URI 中的路径信息部分。
    • 使用 getRequestURI() 获取完整的请求 URI。
  6. 读取请求内容

    • 使用 getInputStream() 或 getReader() 读取请求体中的数据,这对于处理 POST 请求中的表单数据或上传文件非常有用。
  7. 获取编码

    • 使用 getCharacterEncoding() 获取请求字符编码。
  8. 获取客户端信息

    • 使用 getRemoteAddr() 获取客户端 IP 地址。
    • 使用 getRemoteHost() 获取客户端主机名。
  9. 获取协议版本

    • 使用 getProtocol() 获取 HTTP 协议版本。
  10. 其他相关信息

-   使用 `getContentType()` 获取请求的 MIME 类型。
-   使用 `getContentLength()` 获取请求体的长度。

这些功能使得开发者能够灵活地处理各种 HTTP 请求,并根据需要进行相应的业务逻辑处理。在实际开发中,HttpServletRequest 常常作为参数传递给 servlet 的 doGetdoPost 方法中。

HttpServletResponse

HttpServletResponse 是 Java Servlet API 中的一个接口,它定义了如何向客户端发送 HTTP 响应。当服务器接收到一个 HTTP 请求后,它会创建一个 HttpServletRequest 对象来封装请求信息,并创建一个 HttpServletResponse 对象来封装响应信息。以下是 HttpServletResponse 的一些主要作用:

  1. 设置响应头

    • 可以使用 setHeader(String name, String value) 方法来设置响应头。
    • 使用 addHeader(String name, String value) 添加额外的响应头。
  2. 设置响应状态码

    • 使用 setStatus(int status) 设置 HTTP 响应的状态码,例如 200 (OK), 404 (Not Found), 302 (Found) 等。
  3. 设置响应体

    • 使用 getOutputStream() 获取 ServletOutputStream 以写入二进制数据(如图片、文件等)。
    • 使用 getWriter() 获取 PrintWriter 以写入文本数据(如 HTML 页面、JSON 数据等)。
  4. 设置字符编码

    • 使用 setCharacterEncoding(String charset) 设置响应的字符编码,以避免乱码问题。
  5. 发送重定向

    • 使用 sendRedirect(String location) 发送 HTTP 302 重定向,引导客户端浏览器访问另一个 URL。
  6. 发送错误页面

    • 使用 sendError(int sc) 或 sendError(int sc, String msg) 发送错误状态码并可附加错误消息。
  7. 设置 Cookie

    • 创建 Cookie 对象,并使用 addCookie(Cookie cookie) 添加到响应中。
  8. 设置响应内容类型

    • 使用 setContentType(String type) 设置响应的内容类型(MIME 类型),例如 text/htmlapplication/json 等。
  9. 设置缓存控制

    • 使用 setDateHeader(String name, long date) 或 setIntHeader(String name, int value) 来控制缓存行为。
  10. 获取输出流对象

-   使用 `getOutputStream()` 和 `getWriter()` 分别获取用于输出二进制数据和文本数据的流对象。
  1. 控制响应的其他方面
-   例如使用 `setBufferSize(int size)` 设置缓冲区大小,或使用 `flushBuffer()` 刷新缓冲区。

这些方法允许 Servlet 或者过滤器(Filter)对客户端的请求做出响应,包括但不限于发送 HTML 页面、JSON 数据、文件下载、设置 Cookie 和重定向等操作。在实际应用中,HttpServletResponse 对象通常作为参数传递给 doGet, doPost, doPut, doDelete 等方法中,以便根据不同的 HTTP 请求方法进行响应。