Request里设置值,重定向到jsp,jsp里去取request中的值是取不到的,因为重定向是发起新的请求。这时最好用转发。
//response.sendRedirect(request.getContextPath()+"/basedata/item_maint.jsp");
request.getRequestDispatcher("/basedata/item_maint.jsp").forward(request,response);
如果非要用重定向,那么只能以?的形式传入进去。如下面代码:
response.sendRedirect(request.getContextPath()+"/basedata/item_maint.jsp?error_message="+error_message);
这时候,jsp页面就不能用request.getAttribute("error_message")来取了。需要改成request.getParameter("error_message").
再运行,报如下编码错误:
警告: Parameters: Character decoding failed.Parameter skipped.
java.io.CharConversionException:isHexDigit
出现以上错误是因为get提交中文造成编码问题,解决以上问题,需要处理两个地方:
1、 Filter设置字符集对get不起作用,处理get提交乱码通常可以考虑改变服务器的配置,如在tomcat的server.xml里的加上URIEncoding
|
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> |
2、在重定向时,对中文进行URLEncoder.encode编码。
response.sendRedirect(request.getContextPath()+"/basedata/item_maint.jsp?error_message="+URLEncoder.encode(error_message,"UTF-8"));
本文探讨了在使用重定向时如何正确处理请求参数传递的问题,特别是涉及到中文参数时的编码错误,并提供了两种解决方案:使用转发或对参数进行URL编码。同时,文章还介绍了处理GET提交中文乱码的方法,包括服务器配置调整和URL编码实践。
2295

被折叠的 条评论
为什么被折叠?



