在我的申请中,用户可以订阅不同的俱乐部,例如儿童俱乐部,青年俱乐部,成人俱乐部和老年俱乐部。现在,假设用户已经在2012年10月7日订阅了Kid俱乐部,如果他再次尝试在2012年11月2日订阅同一个俱乐部“Kid Club”,那么我们会尝试将该用户重定向到另一个俱乐部,如Youth Club或Adult Club或老人俱乐部。每个俱乐部都有自己的域名,例如(例如)
Kid club = kidclub.google.mobi
Youth Club = youthclub.yahoo.mobi
Adult Club=adult.godaddy.mobi
Elderly Club = elderly.google.mobi
以下是重定向的示例代码,但这不会重定向到不同的域URL。是由于sendRedirect()方法吗?在这个应用程序中没有使用Servlet。只有JSP与Apache Tomcat Server中的MySQL数据库一起使用请建议尽快。
void doRedirect(HttpServletResponse response, String url)
{
try
{
response.sendRedirect(url);
}
catch (Exception e)
{
e.printStackTrace()
}
}
void redirectReturningUser( HttpServletRequest request, HttpServletResponse
response, ClubDomain currentDomain )
{
String redirectToUrl = currentDomain.getDefaultUrl();
if( "kidclub.google.mobi".equals( currentDomain.getDefaultUrl() ) )
redirectToUrl = "youthclub.yahoo.mobi";
else if( "adult.godaddy.mobi".equals( currentDomain.getDefaultUrl() ) )
redirectToUrl = "kidclub.google.mobi";
else if( "youthclub.yahoo.mobi".equals( currentDomain.getDefaultUrl() ) )
redirectToUrl = "adult.godaddy.mobi";
else if( "adult.godaddy.mobi".equals( currentDomain.getDefaultUrl() ) )
redirectToUrl = "elderly.google.mobi";
else if( "elderly.google.mobi".equals( currentDomain.getDefaultUrl() ) )
redirectToUrl = "adult.godaddy.mobi";
doRedirect(response, "http://"+redirectToUrl );
}
提前致谢
答案 0 :(得分:2)
response.sendRedirect(url);
适用于相对(无http:
)和绝对网址,因此问题必须在其他地方。
问题的最常见原因是一些其他代码已经开始使用getOutputStream()
或getWriter()
将输出写入响应:只要第一个字节以这种方式写入,HTTP标头(它将包含重定向信息)并生成并发送到浏览器。
所以你应该调查catalina.out
,因为可能会调用e.printStackTrace()
。
您可能还想查看currentDomain.getDefaultUrl()
返回的内容;也许上面的if
根本就不匹配。