getAttribute、getParameter、getParameterMap、getParameterValues等request中获取参数的几种方式
getAttribute、getParameter、getParameterMap、getParameterValues等方法都是在web项目中用于获取request中参数对象的方法,下边简单介绍了各方法的特性及使用场景。
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);
}
}
访问路径:
打印:
更多推荐
所有评论(0)