Request获取请求参数的通用方法

从这里Request获取请求数据实例我们可以了解到,get请求和post请求获取请求参数有着不一样的方法,这对我们的封装很不方便,下面就介绍一种获取请求参数的通用方法

  • String getParameter(String name):根据参数名称获取参数值
  • String[] getParameterValues(String name):根据参数名称获取参数值的数组
  • Enumeration getParameterNames():获取所有请求的参数名称
  • Map getParameterMap():获取所有参数的map集合

写一个例子,因为方法是通用的,所以不管是get请求,还是post请求,都是一样的,所以为了测试,我们在get请求里调用post请求的方法

package com.lingaolu.request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author 林高禄
 * @create 2020-07-07-12:06
 */
@WebServlet("/requestDemo3")
public class RequestDemo3 extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("post请求------------------------------------------------------------");
        String name = request.getParameter("name");
        System.out.println("名字为:"+name);
        System.out.println("爱好为:");
        String[] loves = request.getParameterValues("love");
        Stream.of(loves).forEach(System.out::println);
        System.out.println("所有的请求参数名称为:");
        Enumeration parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()){
            String s = parameterNames.nextElement();
            System.out.println(s);
        }
        System.out.println("所有的请求参数为:");
        Map parameterMap = request.getParameterMap();
        parameterMap.forEach(
                (key,value)->System.out.println(key+": "+Stream.of(value).collect(Collectors.joining(",", "", "")))
        );
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("get请求---------------------------------------------------------");
        String name = request.getParameter("name");
        System.out.println("名字为:"+name);
        System.out.println("爱好为:");
        String[] loves = request.getParameterValues("love");
        Stream.of(loves).forEach(System.out::println);
        System.out.println("所有的请求参数名称为:");
        Enumeration parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()){
            String s = parameterNames.nextElement();
            System.out.println(s);
        }
        System.out.println("所有的请求参数为:");
        Map parameterMap = request.getParameterMap();
        parameterMap.forEach(
                (key,value)->System.out.println(key+": "+Stream.of(value).collect(Collectors.joining(",", "", "")))
        );
        this.doPost(request,response);
    }
}

Postman请求,get请求,参数为2个nam,一个age,两个love

Request获取请求参数的通用方法_第1张图片

后台输出

get请求---------------------------------------------------------
名字为:lin
爱好为:
aa
bb
所有的请求参数名称为:
name
age
love
所有的请求参数为:
name: lin,cc
age: 27
love: aa,bb
post请求------------------------------------------------------------
名字为:lin
爱好为:
aa
bb
所有的请求参数名称为:
name
age
love
所有的请求参数为:
name: lin,cc
age: 27
love: aa,bb

虽然有2个name,但是getParameter获取到的是第一个name

你可能感兴趣的:(Web核心,Request,请求参数,通用)