Servlet-获取请求参数

Servlet-获取请求参数

classDiagram
ServletRequest <|-- HttpServletRequest : 继承
HttpServletRequest <|.. RequestFacade : 实现
note for ServletRequest "Java提供的请求对象根接口"
note for HttpServletRequest "Java提供的对Http协议封装的请求对象接口"
note for RequestFacade "Tomcat定义的实现类"
  1. Tomcat需要解析请求数据,封装为request对象,并且创建request对象传递到service方法中
  2. 使用request对象,查询JavaEE API文档的HttpServletRequest接口

Request获取请求数据功能的介绍

请求数据的格式:HTTP请求报文

  1. 请求行:GET/request-demo/req1?username=zhangsan HTTP/1.1
    1. String getMethod(): 获取请求方式:GET
    2. String getContextPath(): 获取虚拟目录(项目访问路径):/request-demo
    3. StringBuffer getRequestURL(): 获取URL(统一资源定位符): http://localhost:8080/request-demo/req1
    4. String getRequestURI(): 获取URL(统一资源标识符): /request-demo/req1
    5. String getQueryString(): 获取请求参数(GET方式): usename=zhangsan&password=13
  2. 请求头:User-Agent: Mozilla/5.0 Chrome/91.0.4472.106
    1. String getHeader(String name): 根据请求头名称,获取值
  3. 请求体:username=superbaby&password=123
    1. BufferedReader getReader(): 获取字符输入流
    2. ServletInputStream getInputStream(): 获取字节输入流
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // String getMethod(): 获取请求方式:GET
        String method = req.getMethod();
        System.out.println(method); //GET
        // String getContextPath(): 获取虚拟目录(项目访问路径):/request-demo
        String contextPath = req.getContextPath();
        System.out.println(contextPath);
        // StringBuffer getRequestURL(): 获取URL(统一资源定位符): http://localhost:8080/request-demo/req1
        StringBuffer url = req.getRequestURL();
        System.out.println(url.toString());
        // String getRequestURI(): 获取URI(统一资源标识符): /request-demo/req1
        String uri = req.getRequestURI();
        System.out.println(uri);
        // String getQueryString(): 获取请求参数(GET方式): usename=zhangsan&password=13
        String queryString = req.getQueryString();
        System.out.println(queryString);

        //--------
        // 获取请求头:user-agent: 浏览器的版本信息
        String agent = req.getHeader("user-agent");
        System.out.println(agent);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取post请求体: 请求参数
        // 1. 获取字符输入流
        BufferedReader br = req.getReader();
        // 2. 读取数据
        String line = br.readLine();
        System.out.println(line);
    }
}