JSP重定向到不同的URL

时间:2012-11-09 15:09:56

标签: java jsp

在我的申请中,用户可以订阅不同的俱乐部,例如儿童俱乐部,青年俱乐部,成人俱乐部和老年俱乐部。现在,假设用户已经在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 );
    }

提前致谢

1 个答案:

答案 0 :(得分:2)

response.sendRedirect(url);适用于相对(无http:)和绝对网址,因此问题必须在其他地方。

问题的最常见原因是一些其他代码已经开始使用getOutputStream()getWriter()将输出写入响应:只要第一个字节以这种方式写入,HTTP标头(它将包含重定向信息)并生成并发送到浏览器。

所以你应该调查catalina.out,因为可能会调用e.printStackTrace()

您可能还想查看currentDomain.getDefaultUrl()返回的内容;也许上面的if根本就不匹配。