HttpServletRequest
HttpServletRequest
是 Java Servlet API 中的一个接口,它定义了如何获取来自客户端的请求信息。当一个 HTTP 请求发送到服务器时,服务器端的 servlet 通过 HttpServletRequest
对象来读取请求的细节。下面是一些主要的功能和用途:
-
获取请求参数:
- 使用
getParameter(String name)
方法获取单个请求参数的值。 - 使用
getParameterValues(String name)
获取多个同名参数的值。 - 使用
getParameterNames()
获取所有请求参数的名字。
- 使用
-
访问请求头:
- 使用
getHeader(String name)
获取指定名称的请求头的值。 - 使用
getHeaderNames()
获取所有的请求头名称。
- 使用
-
读取请求方法:
- 使用
getMethod()
获取请求方法(如 GET, POST, PUT, DELETE 等)。
- 使用
-
获取会话信息:
- 使用
getSession(boolean create)
获取与请求关联的HttpSession
对象。如果create
为true
并且没有现有会话,则创建一个新的会话。
- 使用
-
获取请求路径信息:
- 使用
getContextPath()
获取应用上下文路径。 - 使用
getPathInfo()
获取请求 URI 中的路径信息部分。 - 使用
getRequestURI()
获取完整的请求 URI。
- 使用
-
读取请求内容:
- 使用
getInputStream()
或getReader()
读取请求体中的数据,这对于处理 POST 请求中的表单数据或上传文件非常有用。
- 使用
-
获取编码:
- 使用
getCharacterEncoding()
获取请求字符编码。
- 使用
-
获取客户端信息:
- 使用
getRemoteAddr()
获取客户端 IP 地址。 - 使用
getRemoteHost()
获取客户端主机名。
- 使用
-
获取协议版本:
- 使用
getProtocol()
获取 HTTP 协议版本。
- 使用
-
其他相关信息:
- 使用 `getContentType()` 获取请求的 MIME 类型。
- 使用 `getContentLength()` 获取请求体的长度。
这些功能使得开发者能够灵活地处理各种 HTTP 请求,并根据需要进行相应的业务逻辑处理。在实际开发中,HttpServletRequest
常常作为参数传递给 servlet 的 doGet
和 doPost
方法中。
HttpServletResponse
HttpServletResponse
是 Java Servlet API 中的一个接口,它定义了如何向客户端发送 HTTP 响应。当服务器接收到一个 HTTP 请求后,它会创建一个 HttpServletRequest
对象来封装请求信息,并创建一个 HttpServletResponse
对象来封装响应信息。以下是 HttpServletResponse
的一些主要作用:
-
设置响应头:
- 可以使用
setHeader(String name, String value)
方法来设置响应头。 - 使用
addHeader(String name, String value)
添加额外的响应头。
- 可以使用
-
设置响应状态码:
- 使用
setStatus(int status)
设置 HTTP 响应的状态码,例如 200 (OK), 404 (Not Found), 302 (Found) 等。
- 使用
-
设置响应体:
- 使用
getOutputStream()
获取ServletOutputStream
以写入二进制数据(如图片、文件等)。 - 使用
getWriter()
获取PrintWriter
以写入文本数据(如 HTML 页面、JSON 数据等)。
- 使用
-
设置字符编码:
- 使用
setCharacterEncoding(String charset)
设置响应的字符编码,以避免乱码问题。
- 使用
-
发送重定向:
- 使用
sendRedirect(String location)
发送 HTTP 302 重定向,引导客户端浏览器访问另一个 URL。
- 使用
-
发送错误页面:
- 使用
sendError(int sc)
或sendError(int sc, String msg)
发送错误状态码并可附加错误消息。
- 使用
-
设置 Cookie:
- 创建
Cookie
对象,并使用addCookie(Cookie cookie)
添加到响应中。
- 创建
-
设置响应内容类型:
- 使用
setContentType(String type)
设置响应的内容类型(MIME 类型),例如text/html
,application/json
等。
- 使用
-
设置缓存控制:
- 使用
setDateHeader(String name, long date)
或setIntHeader(String name, int value)
来控制缓存行为。
- 使用
-
获取输出流对象:
- 使用 `getOutputStream()` 和 `getWriter()` 分别获取用于输出二进制数据和文本数据的流对象。
- 控制响应的其他方面:
- 例如使用 `setBufferSize(int size)` 设置缓冲区大小,或使用 `flushBuffer()` 刷新缓冲区。
这些方法允许 Servlet 或者过滤器(Filter)对客户端的请求做出响应,包括但不限于发送 HTML 页面、JSON 数据、文件下载、设置 Cookie 和重定向等操作。在实际应用中,HttpServletResponse
对象通常作为参数传递给 doGet
, doPost
, doPut
, doDelete
等方法中,以便根据不同的 HTTP 请求方法进行响应。