重定向:错误日志:
错误日志:重定向发出第二次get请求路径中文乱码
解决方案:对要发送的数据进行编码,不能对整个路径进行编码,不然路径编码后会请求错误,只能对要发送的数据进行编码;
注意:只能是数据,除数据外的 ( ?name= )都不能进行编码 ,不然取不出值
示例:
第一次重定向:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = "张亮";
String newName = URLEncoder.encode(name, "UTF-8");
System.out.println(newName);
resp.sendRedirect(req.getContextPath()+"/Test?data="+newName);
}
第二次发出get请求;req接收数据不用进行解码,直接设置请求的编码格式为UTF-8即可接收成功!
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
String data = req.getParameter("data");
System.out.println(data);
resp.getWriter().write(data);
}
仅个人测试结果,如有错误,请纠正!