Javaweb Servlet核心接口学习记录(3)—HttpServletRequest接口
我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口。
- javax.servlet.http.HttpServletRequest 接口的定义为 :
public interface HttpServletRequest extends ServletRequest
- 在 Servlet API 中, ServletRequest 接口被定义为用于封装请求的信息,ServletRequest 对象由 Servlet 容器在用户每次请求 Servlet 时创建并传入Servlet 的 service() 方法中
- HttpServletRequest 接口继承了 ServletRequest 接口,是专用于 HTTP 协议的子接口,用于封装 HTTP 请求信息;
- 在 HttpServlet 类的 service() 方法中,传入的 ServletRequest 对象被强制转换为 HttpServletRequest 对象来进行 HTTP 请求信息的处理 。
- HttpServletRequest 接口提供了具有如下功能类型的方法:
1、获取请求报文信息(包括请求行、请求头、请求正文)的方法;
2、获取网络连接信息的方法;
3、存取请求域属性的方法。
HTTP 协议
POST请求报文信息格式样例
1.获取请求行信息
HttpServletRequest接口对请求行各部分信息的获取方法
方法 | 方法描述 |
---|---|
getMethod() | 获取请求使用的HTTP方法,例如,GET、POST、PUT |
getRequestURI() | 获取请求行中的资源名部分 |
getProtocol() | 获取使用的协议及版本号。例如,HTTP/1.1 、HTTP/1.0 |
getQueryString() | 获取请求URL后面的查询字符串,只对GET有效 |
getServletPath() | 获取Servlet所映射的路径 |
getContextPath() | 获取请求资源所属于的Web应用的路径 |
演示:
创建RequestLineServlet
package com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class RequestLineServlet
*/
@WebServlet("/RequestLineServlet")
public class RequestLineServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RequestLineServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
// 设置响应编码
response.setContentType("text/html; charset=UTF-8");
// 获取请求使用http的方法
String method = request.getMethod();
// 获取请求行的uri部分
String uri = request.getRequestURI();
// 获取使用的协议及版本
String protcol = request.getProtocol();
// 获取uri后面拼接的字符串(参数)
String queryString = request.getQueryString();
// 获取servlet映射路径
String servletPath = request.getServletPath();
// 获取应用的上下文路径
String contextPath = request.getContextPath();
PrintWriter out = response.getWriter();
out.print("<p>请求使用http的方法:" + method + "</p>");
out.print("<p>获取请求行的uri部分:" + uri + "</p>");
out.print("<p>获取使用的协议及版本:" + protcol + "</p>");
out.print("<p>获取uri后面拼接的字符串(参数):" + queryString + "</p>");
out.print("<p>获取servlet映射路径:" + servletPath +