req.setCharacterEncoding(“utf-8”)
请求的数据包基于字节在网络上传输,Tomcat接收到请求的数据包后会将数据包中的字节转换为字符。在Tomcat中使用的是ISO-8859-1的单字节编码完成字节与字符的转换,所以数据中含有中文就会出现乱码,可以通过req.setCharacterEncoding(“utf-8”)方法来对提交的数据根据指定的编码方式重新做编码处理。
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
/**
* 获取请求数据
*/
public class GetRequestDataServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置请求编码
req.setCharacterEncoding("utf-8");
//获取用户名
String username = req.getParameter("username");
// String name = new String(username.getBytes("ISO-8859-1"),"UTF-8");
// System.out.println(name);
System.out.println(username);
//获取用户密码
String pwd = req.getParameter("userpwd");
//获取复选框的数据
String[] userlike = req.getParameterValues("userlike");
List<String> list = Arrays.asList(userlike);
//获取表单中所有的key
Enumeration<String> parameterNames = req.getParameterNames();
List<String> paraList = new ArrayList<>();
while (parameterNames.hasMoreElements()){
paraList.add(parameterNames.nextElement());
}
//使用Map结构获取提交的数据
Map<String,String[]> parameterMap =req.getParameterMap();
Iterator<Map.Entry<String,String[]>> iterator = parameterMap.entrySet().iterator();
PrintWriter printWriter = resp.getWriter();
printWriter.println(username);
printWriter.println(pwd);
printWriter.println(list);
printWriter.println(paraList);
while (iterator.hasNext()){
Map.Entry<String,String[]> entry = iterator.next();
String key = entry.getKey();
String[] value = entry.getValue();
printWriter.println(key+"="+Arrays.asList(value));
}
printWriter.flush();
printWriter.close();
}
}