Request(请求)&Response(响应)

请添加图片描述

测试案例

测试类

ServletDemo14.java

package com.taotao.web;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@SuppressWarnings({"all"})
public class ServletDemo14 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //使用reguest对象 获取请求数据
        String name = req.getParameter("name"); //url?name=zhangsan

        //使用response对象 设置响应数据
        resp.setHeader("content-type","text/html;charset=utf-8");
        resp.getWriter().write("<h1>" + name + ",欢迎你!</h1>");

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post...");
    }
}

运行测试

请添加图片描述

Request继承体系

继承体系图

请添加图片描述

Request获取请求数据

  • 请求数据分为3部分:

请求行

请添加图片描述

  • String getMethod():获取请求方式
  • String getContextPath():获取虚拟目录(项目访问路径)
  • StringBuffer getRequesURL():获取URL(统一资源定位符)
  • String getRequestURI():获取URL(统一资源标识符)
  • String getQueryString():获取请求参数(GET方式)

方法案例演示

package com.taotao.web;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@SuppressWarnings({"all"})
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //- String getMethod():获取请求方式
        String method = req.getMethod();
        System.out.println(method); //GET

        //- String getContextPath():获取虚拟目录(项目访问路径)
        String contextPath = req.getContextPath();
        System.out.println(contextPath);    // tomcat_demo02

        //- StringBuffer getRequesURL():获取URL(统一资源定位符)
        StringBuffer requestURL = req.getRequestURL();
        System.out.println(requestURL.toString());      //http://localhost:8080/tomcat_demo02/req1

        //- String getRequestURI():获取URL(统一资源标识符)
        String requestURI = req.getRequestURI();
        System.out.println(requestURI);             ///tomcat_demo02/req1

        //- String getQueryString():获取请求参数(GET方式)
        String queryString = req.getQueryString();
        System.out.println(queryString);           //问号后面的参数
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }
}

运行展示

请添加图片描述

请求头

请添加图片描述

  • String getHeader(String name):根据请求头名称获取值

案例测试

请添加图片描述

请求体

请添加图片描述

  • ServletInputStream getInputStream():获取字节输入流
  • BufferedReader getReader():获取字符输入流

案例测试

写一个测试网页

请添加图片描述

doPost()方法

请添加图片描述

运行测试

请添加图片描述

请添加图片描述

Request获取请求参数

从用户输入获取请求参数,返回给服务器端

测试类RequestDemo2

package com.taotao.web;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

@SuppressWarnings({"all"})
@WebServlet("/req2")
public class RequestDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get...");

        //1.获取所有参数的Map集合
        Map<String, String[]> map = req.getParameterMap();
        for (String key:map.keySet()){
            System.out.println(key + ":");

            //获取值
            String[] values = map.get(key);
            for (String value: values) {
                System.out.print(value + " ");
            }
            System.out.println();
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //我们调用doGet方法,使用相同的逻辑
        this.doGet(req, resp);
    }
}

表单网页链接

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<!--通过post方式提交-->
<form action="/tomcat_demo02/req2" method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit">
</form>
</body>
</html>

运行测试

请添加图片描述

点提交后

请添加图片描述

getParameterValues()方法

package com.taotao.web;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

@SuppressWarnings({"all"})
@WebServlet("/req2")
public class RequestDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get...");

        //1.获取所有参数的Map集合
        Map<String, String[]> map = req.getParameterMap();
        for (String key:map.keySet()){
            System.out.println(key + ":");

            //获取值
            String[] values = map.get(key);
            for (String value: values) {
                System.out.print(value + " ");
            }
            System.out.println();
        }

        //2.根据key获取参数值,数组
        String[] hobbies = req.getParameterValues("hobby");
        for (String hobby: hobbies){
            System.out.println(hobby);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //我们调用doGet方法,使用相同的逻辑
        this.doGet(req, resp);
    }
}

测试运行

请添加图片描述

请添加图片描述

getParameter()方法

        System.out.println("------------------");
        //3.根据key 获取单个参数值
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println(username);
        System.out.println(password);

运行测试

请添加图片描述

请添加图片描述

表单html请求方式改为Post测试

请添加图片描述

直接方法调用测试

在doPost()方法中调用doGet()

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //我们调用doGet方法,使用相同的逻辑
        this.doGet(req, resp);
    }

测试结果

get与post结果相同,不再演示


版权声明:本文为qq_39123467原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_39123467/article/details/123683482