关于get提交编码问题

本文探讨了在使用重定向时如何正确处理请求参数传递的问题,特别是涉及到中文参数时的编码错误,并提供了两种解决方案:使用转发或对参数进行URL编码。同时,文章还介绍了处理GET提交中文乱码的方法,包括服务器配置调整和URL编码实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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"));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值