tomcat或apache自动编码重定向url

时间:2012-02-07 19:33:52

标签: apache tomcat urlencode

我的Spring控制器中有一个简单的重定向,如下所示:

if (url != null) {
    String username = request.getParameter("j_username");
    if(username != null) {
         username = URLEncoder.encode(username, "UTF-8");
    }
    url = url + (url.contains("?")? "&":"?") + "j_username=" + username;
    getRedirectStrategy().sendRedirect(request, response, url);
}

用户名应在下一个表单中预先填充。这在我的本地jetty和dev(Tomcat)环境中正常工作(用户名正确显示为“abc@mysite.com”)。但当它到达apache / tomcat上的QA时,用户名被双重编码,它在浏览器地址栏上显示“j_username = abc%2540mysite.com”,并在表单上显示为“abc%40mysite.com”。以前从未见过这个问题。有什么指针吗?谢谢。

1 个答案:

答案 0 :(得分:0)

尝试使用org.springframework.web.util.UriUtils.encodeQueryParam(String, String)对查询参数进行编码,URLEncoder过于通用,并且不知道您所处的上下文。