关于get提交编码问题

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、付费专栏及课程。

余额充值