Javaweb - Request获取请求数据、Reques获取请求参数

文章目录

  • Request(请求)&Response(响应)
    • 测试案例
      • 测试类
      • 运行测试
    • Request继承体系
      • 继承体系图
    • Request获取请求数据
      • 请求行
        • 方法案例演示
        • 运行展示
      • 请求头
        • 案例测试
      • 请求体
        • 案例测试
          • 写一个测试网页
          • doPost()方法
          • 运行测试
    • Request获取请求参数
      • 测试类RequestDemo2
      • 表单网页链接
        • 运行测试
        • 点提交后
      • getParameterValues()方法
        • 测试运行
      • getParameter()方法
        • 运行测试
      • 表单html请求方式改为Post测试
        • 直接方法调用测试
        • 测试结果

Request(请求)&Response(响应)

Javaweb - Request获取请求数据、Reques获取请求参数_第1张图片

测试案例

测试类

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("

" + name + ",欢迎你!

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

运行测试

Javaweb - Request获取请求数据、Reques获取请求参数_第2张图片

Request继承体系

继承体系图

Javaweb - Request获取请求数据、Reques获取请求参数_第3张图片

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 {
    }
}

运行展示

Javaweb - Request获取请求数据、Reques获取请求参数_第4张图片

请求头

请添加图片描述

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

Javaweb - Request获取请求数据、Reques获取请求参数_第5张图片

请求体

请添加图片描述

  • ServletInputStream getInputStream():获取字节输入流
  • BufferedReader getReader():获取字符输入流
案例测试
写一个测试网页

Javaweb - Request获取请求数据、Reques获取请求参数_第6张图片

doPost()方法

Javaweb - Request获取请求数据、Reques获取请求参数_第7张图片

运行测试

Javaweb - Request获取请求数据、Reques获取请求参数_第8张图片

Javaweb - Request获取请求数据、Reques获取请求参数_第9张图片

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>Titletitle>
head>
<body>


<form action="/tomcat_demo02/req2" method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit">
form>
body>
html>
运行测试

Javaweb - Request获取请求数据、Reques获取请求参数_第10张图片

点提交后

Javaweb - Request获取请求数据、Reques获取请求参数_第11张图片

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);
    }
}

测试运行

Javaweb - Request获取请求数据、Reques获取请求参数_第12张图片

Javaweb - Request获取请求数据、Reques获取请求参数_第13张图片

getParameter()方法

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

Javaweb - Request获取请求数据、Reques获取请求参数_第14张图片

Javaweb - Request获取请求数据、Reques获取请求参数_第15张图片

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

Javaweb - Request获取请求数据、Reques获取请求参数_第16张图片

直接方法调用测试

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

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

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

你可能感兴趣的:(Java开发必备,笔记,成长阶段,javaweb,java,servlet,tomcat)