req.setCharacterEncoding(“utf-8”)
    请求的数据包基于字节在网络上传输,Tomcat接收到请求的数据包后会将数据包中的字节转换为字符。在Tomcat中使用的是ISO-8859-1的单字节编码完成字节与字符的转换,所以数据中含有中文就会出现乱码,可以通过req.setCharacterEncoding(“utf-8”)方法来对提交的数据根据指定的编码方式重新做编码处理。

    1. import javax.servlet.ServletException;
    2. import javax.servlet.http.HttpServlet;
    3. import javax.servlet.http.HttpServletRequest;
    4. import javax.servlet.http.HttpServletResponse;
    5. import java.io.IOException;
    6. import java.io.PrintWriter;
    7. import java.util.*;
    8. /**
    9. * 获取请求数据
    10. */
    11. public class GetRequestDataServlet extends HttpServlet {
    12. @Override
    13. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    14. //设置请求编码
    15. req.setCharacterEncoding("utf-8");
    16. //获取用户名
    17. String username = req.getParameter("username");
    18. // String name = new String(username.getBytes("ISO-8859-1"),"UTF-8");
    19. // System.out.println(name);
    20. System.out.println(username);
    21. //获取用户密码
    22. String pwd = req.getParameter("userpwd");
    23. //获取复选框的数据
    24. String[] userlike = req.getParameterValues("userlike");
    25. List<String> list = Arrays.asList(userlike);
    26. //获取表单中所有的key
    27. Enumeration<String> parameterNames = req.getParameterNames();
    28. List<String> paraList = new ArrayList<>();
    29. while (parameterNames.hasMoreElements()){
    30. paraList.add(parameterNames.nextElement());
    31. }
    32. //使用Map结构获取提交的数据
    33. Map<String,String[]> parameterMap =req.getParameterMap();
    34. Iterator<Map.Entry<String,String[]>> iterator = parameterMap.entrySet().iterator();
    35. PrintWriter printWriter = resp.getWriter();
    36. printWriter.println(username);
    37. printWriter.println(pwd);
    38. printWriter.println(list);
    39. printWriter.println(paraList);
    40. while (iterator.hasNext()){
    41. Map.Entry<String,String[]> entry = iterator.next();
    42. String key = entry.getKey();
    43. String[] value = entry.getValue();
    44. printWriter.println(key+"="+Arrays.asList(value));
    45. }
    46. printWriter.flush();
    47. printWriter.close();
    48. }
    49. }