我的个人博客开通了,地址:https://timewentby.com 欢迎访问
下面将获取参数的方法都列出来说一说:
request.getParameter(String name) //获取指定name的值,若name有多个相同值则获取第一个value值
request.getParameterNames()//获得表单中name的Enumeration<String>
request.getParameterValues(String name)//获得表单中所有的value数组String[]
request.getParameterMap();//获得表单中所有的name和value
先把案例页面上的表单代码贴出:
说明:为了方便测试,这里没有配置servlet,只是将表单提交到一个jsp页面;
<form action="TestName.jsp" method="post">
<input type="text" value="我是香蕉1" name="banana"/><br>
<input type="text" value="我是香蕉2" name="banana"/><br>
<input type="text" value="我是梨子a" name="pear"/><br>
<input type="text" value="我是梨子b" name="pear"/><br>
<input type="text" value="我是苹果" name="apple"/><br>
<input type="submit" value="提交">
</form>
知识点一:request.getParameter(String name)
这个是没有使用框架的时候,最常用的一个了;
下面贴出在TestName.jsp页面这个案例的代码:
<%
//这里要指定一下编码,否则会乱码
request.setCharacterEncoding("UTF-8");
String banana = request.getParameter("banana");
out.print("banana:"+banana+"<br/>");
String pear = request.getParameter("pear");
out.print("pear:"+pear+"<br/>");
String apple = request.getParameter("apple");
out.print("apple:"+apple+"<br/>");
%>
结果为:
banana:我是香蕉1
pear:我是梨子a
apple:我是苹果
总结:可以看出request.getParameter(String name)这个方法只会获取相同name的第
一个值。
知识点二:request.getParameterNames()
下面贴出在TestName.jsp页面这个案例的代码:
<%
//这里要指定一下编码,否则会乱码
request.setCharacterEncoding("UTF-8");
//获取页面上所有name的值
Enumeration<String> enums = request.getParameterNames();
while(enums.hasMoreElements()){
out.print(enums.nextElement()+"<br/>");
}
%>
结果为:
banana
apple
pear
总结:这个方法会得到表单中name的值,如果那么的值相同,则保留一个或者说交覆盖以前的值。
知识点三:request.getParameterValues(String name)
下面贴出在TestName.jsp页面这个案例的代码:
<%
//这里要指定一下编码,否则会乱码
request.setCharacterEncoding("UTF-8");
//获取页面上所有相同name对应的值得数组
String[] bananas = request.getParameterValues("banana");
for(String str : bananas){
out.print(str+" ");
}
out.print("<br/>");
String[] pears = request.getParameterValues("pear");
for(String str : pears){
out.print(str+" ");
}
out.print("<br/>");
String[] apples = request.getParameterValues("apple");
for(String str : apples){
out.print(str+" ");
}
%>
结果为:
我是香蕉1 我是香蕉2
我是梨子a 我是梨子b
我是苹果
总结:这个方法可以获取的指定name的所有的值放进一个Stirng[]返回,我们可以b遍历这个数组得到该name所有的值。
知识点四:request.getParameterMap()
下面贴出在TestName.jsp页面这个案例的代码:
<%
request.setCharacterEncoding("UTF-8");
Map<String, String[]> map = request.getParameterMap();
Set<String> keySet = map.keySet();
Iterator<String> it = keySet.iterator();
if(it != null){
while(it.hasNext()){
String key = it.next();
out.print("key:"+key);
//out.print("key:"+it.next()); 这个地方不能怎么写,往下看就知道了
//因为不能一次判断取两次值,可能会抛出NoSuchElementExcetion异常
String[] value = map.get(key);
for(String str : value){
out.print(" value :"+str);
}
out.print("<br/>");
}
}
%>
结果为:
key:banana value :我是香蕉1 value :我是香蕉2
key:apple value :我是苹果
key:pear value :我是梨子a value :我是梨子b
总结:request.getParameterMap()这个方法会将form表单中所有的name和其对应的
value封装到Map<String,String[]>返回,我们可以通过边里得到所有的参数。