在JavaWebApp中实现URL重定向

在JavaWebApp中实现URL重定向,java,redirect,Java,Redirect,在Tomcat上运行的Java webapp中出现特定条件后,我很难确定如何创建重定向到浏览器的问题。我相信一定有一个简单的解决方案,但我的Java技能非常有限 以下是我正在使用的特定代码(复制自): 我想用重定向回索引页来替换该异常。在PHP中,我可以简单地执行以下操作: header("Location: https://site.domain.com/",TRUE,302); 不过,Java并没有让我这么容易就离开。我能找到的最好的直接模拟是: response.sendRedirect

在Tomcat上运行的Java webapp中出现特定条件后,我很难确定如何创建重定向到浏览器的问题。我相信一定有一个简单的解决方案,但我的Java技能非常有限

以下是我正在使用的特定代码(复制自):

我想用重定向回索引页来替换该异常。在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重定向示例(包括这个),但几乎所有这些示例都实现了单独的方法来实现重定向。正如我所说,我的java技能非常基础,我不知道如何实际实现类似的东西,以便在if条件中使用/调用


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

我建议在异常的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/");
}

另外,如果您使用Java Servlets是出于您的目的。

看起来您是在手工编写Servlets。您不使用SpringMVC这样更简单的工具包有什么原因吗?仅仅是因为我在重用J2EE应用程序的现有扩展。我只需要修改代码以更好地适应我的环境,而我的java能力远远不够,无法完全重写它。谢谢你的建议。不幸的是,在包含sendRedirect的行中,我仍然遇到相同的“找不到符号”编译错误。我是否需要导入其他类?以下是当前导入的非鳄梨酱相关类的列表:org.slf4j.Logger;org.slf4j.LoggerFactory;javax.servlet.http.HttpServletRequest;java.util.HashMap;java.util.Map@Jared是您编写此代码的方法,它有一个
HttpServletResponse
param?该字符串不会出现在.java文件中。您可以在原始帖子(名为guacamole auth passthrough)的链接上查看整个文件-它非常简短,而且,老实说,您自己可能比我解释的更好/更快地找到答案。@Jared检查我更新的代码。我想,
凭证
会提供响应。再次感谢你,贾格洛特。仍然没有成功(同样的错误,现在出现在HttpServletResponse行),但这让我查看了文档,并且可以肯定的是,方法中没有包含响应,所以我猜这意味着我不能直接发送响应。我可以创建一个新的方法或东西来处理重定向,然后从凭据中调用它吗?
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/");
}