如果满足一些条件,我希望将我的代码重定向到同一页面,并在网址中添加额外的参数。我该怎么做?
我尝试使用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
答案 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 (找到)。