获取请求体中请求参数相关方法:
1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数
1. String getParameter(String name):根据参数名称获取参数值 username=zs&password=123
2. String[] getParameterValues(String name):根据参数名称获取参数值的数组 hobby=xx&hobby=game,多用于复选框
3. Enumeration<String> getParameterNames():获取所有请求的参数名称
4. Map<String,String[]> getParameterMap():获取所有参数的map集合
* 中文乱码问题:
* get方式:tomcat 8 已经将get方式乱码问题解决了
* post方式:会乱码
* 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");
案例:
ServletDemo07.java
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;
@WebServlet("/ServletDemo07")
public class ServletDemo07 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//这个可以解决中文的字符乱码问题
request.setCharacterEncoding("utf-8");
System.out.println("====================== 1 ==========================");
String username = request.getParameter("username");
System.out.println(username);
System.out.println("====================== 2 ==========================");
String[] hobbs = request.getParameterValues("hobb");
for (String hobb : hobbs) {
System.out.println(hobb);
}
System.out.println("====================== 3 ==========================");
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()){
System.out.println(parameterNames.nextElement());
System.out.println("---------------------");
}
System.out.println("====================== 4 ==========================");
Map<String, String[]> parameterMap = request.getParameterMap();
Set<String> strings = parameterMap.keySet();
for (String string : strings) {
System.out.print(string+": ");
String[] strings1 = parameterMap.get(string);
for (String s : strings1) {
System.out.print(s+" ");
}
System.out.println();
}
System.out.println();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
login3.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/servlet/ServletDemo07" method="post">
用户名:<input type="text" name="username" placeholder="请输入用户名"><br/>
密码:<input type="text" name="password" placeholder="请输入密码"><br/>
<input type="checkbox" name="hobb" value="playgame">玩游戏
<input type="checkbox" name="hobb" value="study">学习
<input type="checkbox" name="hobb" value="read">读书<br/>
<input type="submit" value="提交">
</form>
</body>
</html>
浏览器:
控制台输出:
====================== 1 ==========================
linfeng???
====================== 2 ==========================
study
read
====================== 3 ==========================
username
---------------------
password
---------------------
hobb
---------------------
====================== 4 ==========================
username: linfeng???
password: 123
hobb: study read