request获取参数以及表单的内容

Request

  1. tomcat服务器启动-----创建servlet对象
  2. 将request对象封装到了 HttpServlet中,———> HttpSerlvetRequest
  3. 解析 HttpServlet 中的一些内置方法:初始化

HttpServletRequest
http://localhost:8080/hello?name=zhangsan&password=123456
doGet() / doPost()

如何获取请求的参数数据(表单中提交过来的)
通用的方法获取参数数据:

String value = getParameter(String anme); //获取单个参数

// 获取所有的参数名称
getParamterValues(); -----> Enurmation(类似于 lterator)
                            hasMoreElements()
                            nextElement()
getParamterValues():获取一个参数对应的多个值(单选按钮 / 复选按钮)

1. 获取请求行的信息:

tomcat服务器获取到浏览器的请求数据
tomcat服务器将请求数据封装到了HttpServletRequest对象中
tomcat服务器调用service方法,业务具体覆盖doGet() / doPost() 方法

package com.github.servlet;

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

/**
 * 获取请求行参数
 */

public class RequestDemo1 extends HttpServlet {
    /**
     * 1)  tomcat服务器获取到浏览器的请求数据
     * 2) tomcat服务器将请求数据封装到了HttpServletRequest对象中
     * 3) tomcat服务器调用service方法,业务具体覆盖doGet() / doPost() 方法
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("调用了doGet()方法。。。");
        // 4) 使用请求对象获取数据

        // 获取请求行的信息
        // 1.1 请求方式
        String mothod = request.getMethod();
        System.out.println(mothod);

        // 1.2 请求url
        String uri = request.getRequestURI();
        System.out.println("url = "+uri);
        System.out.println("url = " + request.getRequestURL().toString());

        // 1.3 请求http协议的版本
        System.out.println("protocal = "+request.getProtocol());
        System.out.println("-------------------");

        // 2. 获取指定的请求头信息
        String host = request.getHeader("host");
        System.out.println("host:"+host);
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

request获取参数以及表单的内容_第1张图片

2. request获取参数

  • get方式和post方式提交数据,后台获取参数不一样,想办法将get方式和post方式提交获取参数通用
  • request.getParameter(String name) ————> String value
  • request.getParamerterName() ————> Enurmation ————> Iterator:迭代器

testMethod.html:


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取表单参数title>
head>
<body>
<h3>GET提交方式h3>
<form action="/RequestDemo4" method="get">
    用户名:<input type="text" name="username"><br>   码:<input type="password" name="password"><br>
    性别:
    <input type="radio" name="gender" value=""><input type="radio" name="gender" value=""><br>
    爱好:
    <input type="checkbox" name="hobit" value="足球">足球
    <input type="checkbox" name="hobit" value="篮球">篮球
    <input type="checkbox" name="hobit" value="跑步">跑步
    <br>
    <input type="submit" value="提交">
form>
<hr>
<h3>POST提交方式h3>
<form action="/RequestDemo3" method="post">
    用户名:<input type="text" name="username"><br>   码:<input type="password" name="password"><br>
    性别:
    <input type="radio" name="gender" value=""><input type="radio" name="gender" value=""><br>
    爱好:
    <input type="checkbox" name="hobit" value="足球">足球
    <input type="checkbox" name="hobit" value="篮球">篮球
    <input type="checkbox" name="hobit" value="跑步">跑步
    <br>
    <input type="submit" value="提交">
form>
body>
html>

servlet:

package com.github.servlet;

import com.sun.org.apache.xpath.internal.operations.String;

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

/**
 * request获取参数
 * get方式和post方式提交数据,后台获取参数不一样,想办法将get方式和post方式提交获取参数通用
 * request.getParameter(String name) ————> String value
 * request.getParamerterName() ————> Enurmation ————> Iterator:迭代器
 */
public class RequestDemo3 extends HttpServlet {
    // 默认执行get提交方式
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // get方式和post方式获取参数数据是完全不同的
        // get方式获取参数数据:
        // public String getQureyString()
        // http://localhost:8080/testMethod.html?username=xxx&password
        java.lang.String queryString = request.getQueryString();
        System.out.println(queryString);   // username=zhangsan&password=123456
    }

    // 默认执行post提交
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // post方式获取参数数据:专有方式获取参数数据
        InputStream in = request.getInputStream();

        // 定义一个字节数组
        byte[] bys = new byte[1024];
        int len = 0;
        while ((len=in.read(bys)) != -1) {
            System.out.println(new java.lang.String(bys,0,len));
        }
        in.close();
    }

}

get方式获取参数数据:
request获取参数以及表单的内容_第2张图片
在这里插入图片描述
在这里插入图片描述
post方式获取参数数据:
request获取参数以及表单的内容_第3张图片
在这里插入图片描述
在这里插入图片描述

3. 通过表单的name参数值——>获取表单的内容


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取表单参数title>
head>
<body>
<h3>GET提交方式h3>
<form action="/RequestDemo4" method="get">
    用户名:<input type="text" name="username"><br>   码:<input type="password" name="password"><br>
    性别:
    <input type="radio" name="gender" value=""><input type="radio" name="gender" value=""><br>
    爱好:
    <input type="checkbox" name="hobit" value="足球">足球
    <input type="checkbox" name="hobit" value="篮球">篮球
    <input type="checkbox" name="hobit" value="跑步">跑步
    <br>
    <input type="submit" value="提交">
form>
<hr>
<h3>POST提交方式h3>
<form action="/RequestDemo4" method="post">
    用户名:<input type="text" name="username"><br>   码:<input type="password" name="password"><br>
    性别:
    <input type="radio" name="gender" value=""><input type="radio" name="gender" value=""><br>
    爱好:
    <input type="checkbox" name="hobit" value="足球">足球
    <input type="checkbox" name="hobit" value="篮球">篮球
    <input type="checkbox" name="hobit" value="跑步">跑步
    <br>
    <input type="submit" value="提交">
form>
body>
html>
package com.github;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

/**
 * request获取参数
 * get方式和post方式提交数据,后台获取参数不一样,想办法将get方式和post方式提交获取参数通用
 * request.getParameter(String name) ————> String value
 * request.getParamerterName() ————> Enurmation ————> Iterator:迭代器
 */
public class RequestDemo4 extends HttpServlet {
    // 默认执行get提交方式
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // get方式和post方式获取参数数据是完全不同的
        // get方式获取参数数据:
        // public String getQureyString()
        // http://localhost:8080/testMethod.html?username=xxx&password

        // get方式和post方式通用获取参数数据的方法
        // 通过表单的name参数值——>获取表单的内容
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        // tomcat以下的版本:遇到参数中文的,获取参数需要手动解码
        System.out.println(username+"&"+password);
        System.out.println("----------------------------------");

        // 方式2
        // 获取的所哟参数名称
        Enumeration<String> enums = request.getParameterNames();
        while(enums.hasMoreElements()) {
            String paramName = enums.nextElement();
            // 通过参数名称获取参数值
            String paramValue = request.getParameter(String.valueOf(paramName));
            System.out.println(paramName+" = "+paramValue);
        }
        System.out.println("----------------------------------");

        // 方式3:获取所有的参数对象
        // key(参数名称),value:如果只有一个参数:value[0]
        Map<String,String[]> parameterMap = request.getParameterMap();

        // map集合的遍历
        // 1.entrySet():获取当前map集合中的所有的键值对的对象
        // 2.keySet():获取所有的键——>遍历

        // 1) entrySet()
        Set<Map.Entry<String,String[]>> entrySet = parameterMap.entrySet();
        for (Map.Entry<String,String[]> entry:entrySet) {
            // 通过键值对对象获取所有的键和值
            String name = entry.getKey();
            String[] value = entry.getValue();
            System.out.println(name+" = "+value[0]);
        }

        System.out.println("----------------------------------");
        // 方式4:通过获取参数:获取一个参数(对应多个值)
        String[] hobits = request.getParameterValues("hobit");
        // 先判断在使用
        if (hobits != null) {
            for (String hobit:hobits) {
                System.out.println("hobit = "+hobit);
            }
        }
    }

    // 默认执行post提交
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // post方式手动解码
        request.setCharacterEncoding("utf-8");

//        Enumeration enums = request.getParameterNames();
//        while(enums.hasMoreElements()) {
//            String paramName = enums.nextElement();
//            // 通过参数名称获取参数值
//            java.lang.String paramValue = request.getParameter(java.lang.String.valueOf(paramName));
//            // 如果参数对应有多个值,默认获取第一个值
//            System.out.println(paramName+" = "+paramValue);
//        }
//        System.out.println("----------------------------------");

        // 一般在doPost方法将doGet方法复用
        doGet(request,response);
    }

}


get方式获取参数数据:在这里插入图片描述
request获取参数以及表单的内容_第4张图片
post方式获取参数数据:
在这里插入图片描述
request获取参数以及表单的内容_第5张图片

你可能感兴趣的:(Web前端)