HttpServlet:关于request功能之获取请求参数的方式

1.根据参数名称获取参数值

String  getParameter(String name);

2.根据参数获取参数的数组(多用于复选框)

String[]   getParameterValues(String name);

3.获取所有请求的参数名称

Enumeration<String>  getParameterNames();

4.获取所有参数的map集合

Map<String, String[]>  getParameterMap();

具体案例

HTML: regist.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册页面</title>
</head>
<body>

    <form action="/requestDemo6" method="post">
        <input type="text" name="username" placeholder="请输入用户名"><br>
        <input type="text" name="password" placeholder="请输入密码"><br>

        <input type="checkbox" name="hobby" value="game">游戏
        <input type="checkbox" name="hobby" value="study">学习
        <br>

        <input type="submit" value="注册">
    </form>
</body>
</html>

Servlet :RequestDemo6.java
注意:无论上面的是get还是post请求方式,请求参数,可以直接少写一些复用,直接在get方法调用post方法:this.doPost(request,response);

package cn.tian.web.request;
/**
 * doget方法&dopost里面的方法几乎一样
 * 为了不必要的,在dopost方法直接调用doget方法
 */

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.BufferedReader;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

@WebServlet("/requestDemo6")
public class RequestDemo6 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //post 获取请求参数

        //根据参数名称获取参数值
        String username = request.getParameter("username");
        System.out.println("post");
        System.out.println("username");

        //根据参数获取参数的数组
        String[] hobbies = request.getParameterValues("hobby");
        for (String hobby:hobbies){
            System.out.println(hobby);
        }

        //获取所有请求的参数名称
        Enumeration<String> parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()){
            String name = parameterNames.nextElement();
            System.out.println(name);
            String value = request.getParameter(name);//选了两个缺打印一个,因为这个只能获取一个
            System.out.println(value);
            System.out.println("---------------");
        }

        //获取所有参数的map集合
        Map<String, String[]> parameterMap = request.getParameterMap();
        //遍历
        Set<String> keyset = parameterMap.keySet();
        for (String name : keyset){

            //获取键获取值
            String[] values = parameterMap.get(name);
            System.out.println(name);
            for (String value : values){
                System.out.println(value);
            }
            System.out.println("-------------");
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

最后如果出现乱码,应该是post请求方式出现中文乱码

解决:在获取参数面前,设置request的编码:

//设置流的编码
        request.setCharacterEncoding("utf-8");`
        ``


版权声明:本文为weixin_44768879原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。