在Java webapp中实现URL重定向

时间:2016-03-15 15:46:04

标签: java redirect

在Tomcat上运行的Java webapp中的某个条件之后,我无法弄清楚如何创建重定向到浏览器的问题。我确信必须有一个简单的解决方案,但我的Java技能非常有限。

以下是我正在使用的具体代码(从guacamole-auth-passthrough复制):

if (req.getParameter("username") == null {
  LOG.error("username is required");
  throw new GuacamoleServerException("username is required");
}

我想用重定向替换回索引页面来替换该异常。在PHP中,我可以简单地这样做:

header("Location: https://site.domain.com/",TRUE,302);
但是,Java并没有让我这么容易。我能找到的最好的直接模拟是:

response.sendRedirect("https://site.domain.com/");

然而,编译失败的原因是:

[ERROR] /home/dev/guacamole-client-0.9.9/extensions/guacamole-auth-passthrough/src/main/java/com/github/edouardswiac/guacamole/ext/PassthroughAuthProvider.java:[31,6] error: cannot find symbol

我发现了许多其他Java重定向示例(包括其他stackoverflow thread),但几乎所有这些示例都实现了单独的方法来实现重定向。正如我所说,我的java技能非常基础,我不知道如何在if条件下实现类似的东西。

任何人都能提供一些关于如何在上述条件下正确实现这一点的指示吗?在这一点上,我几乎完全没有想法,并且非常感谢任何指导。感谢。

1 个答案:

答案 0 :(得分:0)

我建议在异常的catch块中编写response.sendRedirect()。例如:

HttpServletResponse response = credentials.getResponse();
try{
  if (req.getParameter("username") == null {
    LOG.error("username is required");
    throw new GuacamoleServerException("username is required");
  }
catch(GuacamoleServerException e){
  response.sendRedirect("https://site.domain.com/");
}

P.S。如果您正在使用Java Servlet,则可以使用此选项。