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 {@Overrideprotected 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);//获取表单中所有的keyEnumeration<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();}}
