如何将页面重定向到与当前url相同的url并附加附加参数?

时间:2015-12-01 12:53:15

标签: jsp servlets redirect

如果满足一些条件,我希望将我的代码重定向到同一页面,并在网址中添加额外的参数。我该怎么做?

我尝试使用response.setHeader,但它没有工作。

if(request.getParameter("lang")==null && UserProfileHelper.readCookie(request,"bha_code")!=null){
    langCode=UserProfileHelper.readCookie(request,"bha_code");
    if(langCode!=null && langCode!="en")
    {
       String url=CafeUtils.getCurrentURLNonUFT8(request);
       String[] urlNew = url.split(fullLailaURL);
       url=fullLailaURL+"/"+langCode+urlNew[1];
       response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
       response.setHeader("Refresh", url);
    }
}

我希望浏览器中的网址能够反映新的网址。

SC_MOVED_TEMPORARILY = 302

1 个答案:

答案 0 :(得分:0)

这是错误的。

response.setHeader("Refresh", url);

HTTP规范clearly表示您必须使用Location标头字段。

response.setHeader("Location", url);

它甚至可以更简单。而不是两条线,

response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
response.setHeader("Location", url);

您可以使用标准HttpServletResponse#sendRedirect()方法。

response.sendRedirect(url);

另见javadoc(强调我的):

  

使用指定的重定向位置网址向客户端发送临时重定向响应,并清除缓冲区。缓冲区将替换为此方法设置的数据。调用此方法将状态代码设置为SC_FOUND 302 (找到)。