初识Servlet(四)🛺

149 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第25天,点击查看活动详情

写在前面👀

今天主要讲讲获取请求参数的通用方式

一、Request获取请求参数

上回书说到,GET请求参数在请求行中,可以用getQueryString( )获取参数;而POST请求参数一般在请求体中,可以用getReader( )获取纯文本的参数。那么有没有一种获取请求参数的通用方式呢?答案是当然有的。

1️⃣获取参数的方法

返回值类型方法声明功能描述
StringgetParameter(String name)返回指定参数名的参数值。
String [ ]getParameterValues (String name)以字符串数组的形式返回指定参数名的所有参数值(HTTP 请求中可以有多个相同参数名的参数)。
Enumeration< String >getParameterNames()以枚举集合的形式返回请求中所有参数名。
Map<String, String[]>getParameterMap()用于将请求中的所有参数名和参数值装入一个 Map 对象中返回。

2️⃣代码示例

a.编写html文件

  • webapp目录下添加一个html文件,名称为:register.html。添加一个表单类型标签,设置请求方式为POST,请求路径为/tomcat/req4。后面可以把请求方式改为GET,验证getParameter系列方法获取参数是否通用。
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="/tomcat/req4" method="post">
            账号:<input type="text" name="username">
            <br>
            密码:<input type="password" name="password">
            <br>
            <input type="checkbox" name="language" value="1"> java
            <input type="checkbox" name="language" value="2"> go
            <input type="checkbox" name="language" value="3"> python <br>
            <input type="submit" value="注册">
        </form>
    </body>
</html>
b.创建Servlet
  • 名字叫做RequestDemo3,Servlet映射路径:/req4
/**
 * request 通用方式获取请求参数
 */
@WebServlet("/req4")
public class RequestDemo4 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.获取请求方式
        System.out.println("请求方式为:" + request.getMethod());
        // 2.获取所有参数的Map集合
        Map<String, String[]> map = request.getParameterMap();
        for (String key : map.keySet()) {
            // 获取key
            System.out.print(key + ":");
            // 获取value
            String[] values = map.get(key);
            for (String value : values) {
                System.out.print(value + " ");
            }
            System.out.println();
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}
c.启动tomcat
d.填写表单信息
  • 在浏览器地址栏输入localhost:8080/tomcat/register.html

image-20220427231039438

e.结果演示
  • 表单请求方式为POST

image-20220427231217254

  • 表单请求方式为GET

image-20220428105437210

3️⃣获取参数的大致流程

1.根据请求方式获取请求参数

  • 先用service( )方法判断是哪种请求方式,然后根据请求方式的不同用不同的方法获取请求参数。如GET请求用getQueryString( )获取参数;而POST请求用getReader( )获取纯文本的参数。
  • 获取到的参数是一长串带有&=符号的字符串,例如👇

image-20220428115807408

2.把获取到的内容进行分割

  • 根据&=符号分割字符串,获取有用的参数

3.将数据存入到Map集合中

  • 注意:因为参数的值可能是一个,也可能有多个,所以Map的值的类型为String数组。

写在后面🍻

感谢观看啦✨
有什么不足,欢迎指出哦💖
掘金的运营同学审核辛苦了💗