getAttribute、getParameter、getParameterMap、getParameterValues等方法都是在web项目中用于获取request中参数对象的方法,下边简单介绍了各方法的特性及使用场景。

1、request.getParameter()

作用:

通过request.getParameter()方法,可以根据传递的参数名,获取页面请求中传递的参数值。

例如:

String name = request.getParameter("name");

注意:

当页面中存在多个重名参数,也就是出现一个参数多个值时,此方法只取第一个值。

案例:

代码:

资源访问请求: 

输出:

2、equest.getParameterValues()

作用:

通过request.getParameterValues()方法,可以获取该参数名的参数值数组,也就是说可以获取到一个参数的多个值

例如:

String[] interests = request.getParameterValues("interest");

案例:

代码:

资源访问请求:

输出:

3、request.getParameterMap()

作用:

通过request.getParameterMap()方法,我们可以获取到访问请求中的所有参数,及其对应值组成的Map集合,每个参数的值是一个数组,我们可以同时拿到参数的名称和参数的值,也可以根据参数名,遍历集合获取参数值。

例如:

Map<String, String[]> paramMap = request.getParameterMap();

案例:

代码:

资源访问请求:

输出:

4、request.getAttribute()

作用:

request.getAttribute("user")方法获取的是在请求处理过程中设置的属性值,而不是页面中输入的值。

如果页面中有一个名为user的表单元素,可以通过前面的request.getParameter("user")来获取它的值。如果这个表单元素的值在请求处理过程中被设置为了一个属性,这时候就可以通过request.getAttribute("user")的方式来获取它。

注意:
如果请求处理过程中没有设置名为user的属性,那么request.getAttribute("user")将返回null。

例如:request.getAttribute("user"),返回值不确定,具体看设置属性的时候是什么类型。

案例:

代码:

资源访问请求:

输出:

小结:

在项目编写过程中,应当根据项目需求和不同方法的特点,选择合适的方法来获取request中的参数值。

同时不同方法的返回值也有差别,在处理参数的过程中如果涉及到参数值的更改,如敏感词过滤等功能,在修改参数值时,需要注意基本数据类型和引用数据类型的区别。

以下是文章涉及到的测试案例代码汇总:

@WebServlet("/testServlet")
public class TestServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取测试参数
        //(1) 此方法出现一个参数多个值时,获取的是第一个
        System.out.println("getParameter:");
        String name = request.getParameter("name");
        String msg = request.getParameter("msg");
        //打印测试参数值
        System.out.println(name + "," + msg);
        System.out.println("-------------");

        //(2)
        System.out.println("getParameterValues:");
        String[] names = request.getParameterValues("name");
        String[] msgs = request.getParameterValues("msg");
        System.out.println(Arrays.toString(names));
        System.out.println(Arrays.toString(msgs));
        System.out.println("-------------");

        //(3)
        System.out.println("getParameterMap:");
        Map<String, String[]> map = request.getParameterMap();
        for (String s : map.keySet()) {
            String[] strs = map.get(s);
            System.out.println(Arrays.toString(strs));
        }
        System.out.println("-------------");

        //(4)
        //创建一个Root对象,命名为zhangsan
        Root zhangsan = new Root(1,"zhangsan", "123");
        //设置到request 名称为root
        request.setAttribute("root",zhangsan);
        //从request中获取root
        Object root = request.getAttribute("root");
        System.out.println(root.toString());

    }

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

访问路径:

打印:

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐