学科分类
目录
Java Web

获取请求参数

在实际开发中,经常需要获取用户提交的表单数据,例如,用户名、密码、电子邮件等,为了方便获取表单中的请求参数,在HttpServletRequest接口中,定义了一系列获取请求参数的方法,如表1所示。

表1 获取请求参数的方法

方法声明 功能描述
String getParameter(String name) 该方法用于获取某个指定名称的参数值,如果请求消息中没有包含指定名称的参数,getParameter方法返回null;如果指定名称的参数存在但没有设置值,则返回一个空串;如果请求消息中包含有多个该指定名称的参数,getParameter(String name)方法返回第一个出现的参数值
String[] getParameterValues(String name) HTTP请求消息中可以有多个相同名称的参数(通常由一个包含有多个同名的字段元素的FORM表单生成),如果要获得HTTP请求消息中的同一个参数名所对应的所有参数值,那么就应该使用getParameterValues(String name)方法,该方法用于返回一个String类型的数组。
Enumeration getParameterNames() getParameterNames()方法用于返回一个包含请求消息中的所有参数名的Enumeration对象,在此基础上,可以对请求消息中的所有参数进行遍历处理。
Map getParameterMap() getParameterMap()方法用于将请求消息中的所有参数名和值装入进一个Map对象中返回。

​ 表1中,列出了HttpServletRequest获取请求参数的一系列方法。其中,getParameter()方法用于获取某个指定的参数,而getParameterValues()方法用于获取多个同名的参数。接下来,通过一个具体的案例,分步骤讲解这两个方法的使用,具体如下:

(1)修改5.3.3小节中的form.html文件,增加3个复选框,修改后的代码如例1所示。

例1 form.html

 1    <form action="/chapter05/RequestParamsServlet" method="POST">
 2        用户名:<input type="text" name="username"><br>
 3        密 码:<input type="password" name="password"><br>
 4        爱 好:
 5        <input type="checkbox" name="hobby" value="sing">唱歌
 6        <input type="checkbox" name="hobby" value="dance">跳舞
 7        <input type="checkbox" name="hobby" value="football">足球<br>
 8        <input type="submit" value="提交">
 9    </form>

(2)编写一个用于获取请求参数的RequestParamsServlet,如例2所示。

例2 RequestParamsServlet.java

 1    package cn.itcast.chapter05.request; 
 2    import java.io.*;
 3    import javax.servlet.*;
 4    import javax.servlet.http.*;
 5    public class RequestParamsServlet extends HttpServlet {
 6        public void doGet(HttpServletRequest request, HttpServletResponse response)
 7                throws ServletException, IOException {
 8            String name = request.getParameter("username");
 9            String password = request.getParameter("password");
 10            System.out.println("用户名:" + name);
 11            System.out.println("密  码:" + password);
 12             // 获取参数名为“hobby”的值
 13            String[] hobbys = request.getParameterValues("hobby");
 14             System.out.print("爱好:");
 15            for (int i = 0; i < hobbys.length; i++) {
 16                System.out.println(hobbys[i]+" ");
 17            }
 18        }
 19        public void doPost(HttpServletRequest request, HttpServletResponse response)
 20                throws ServletException, IOException {
 21            doGet(request, response);
 22        }
 23    }

需要注意的是,由于参数名为“hobby”的值可能有多个,因此,需要通过调用getParameterValues()方法,该方法返回一个String类型的数组,可以获取多个同名参数的值。

(3)在web.xml中配置完RequestParamsServlet映射后,启动Tomcat服务器,在浏览器的地址栏中输入URL地址http://localhost:8080/chapter05/form.html访问form.html页面,并填写表单相关信息,填写后的页面如图1所示。

图1 运行结果

(4)点击图5-21所示的【提交】按钮,在Eclipse的控制台打印出了每个参数的信息,如图2所示。

图2 运行结果

点击此处
隐藏目录