2016-03-15 28 views
0

我無法確定在運行於Tomcat上的Java webapp中的特定條件後如何創建重定向到瀏覽器的問題。我確信必須有一個簡單的解決方案,但是我的Java技能非常有限。在Java webapp中實現URL重定向

下面是具體的代碼我與(複製從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/"); 

然而,失敗編譯與部分:Java重定向

[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 

我發現許多其他的例子(包括這種其他stackoverflow thread),但幾乎他們似乎都實現了單獨的方法來實現重定向。正如我所說,我的Java技能是非常基本的,我不知道如何實際實現像在if條件內使用/調用的東西。

任何人都可以提供一些關於如何在上述條件下正確實現這一點的指針嗎?在這一點上,我幾乎完全沒有想法,並非常感謝任何指導。謝謝。

+0

它看起來像你手寫servlets。有沒有理由不使用Spring MVC等更簡單的工具包? – chrylis

+0

僅僅因爲我正在重用J2EE應用程序的現有擴展。我只需要修改代碼以更好地適應我的環境,而且我無法用Java完全重寫它。 – Jared

回答

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 Servlets。

+0

感謝您的建議。不幸的是,我仍然在包含sendRedirect的行上找到相同的「無法找到符號」編譯錯誤。我是否需要導入額外的課程?這裏是目前進口非鱷梨醬相關類別列表: org.slf4j.Logger; org.slf4j.LoggerFactory; javax.servlet.http.HttpServletRequest; java.util.HashMap; java.util.Map; – Jared

+0

@Jared你寫這段代碼的方法是否有'HttpServletResponse'參數? – Jagrut

+0

該字符串不會出現在.java文件中。您可以在原始文章的鏈接中查看整個文件(名爲guacamole-auth-passthrough) - 它非常簡短,而且,老實說,您可以自己更好/更快地找出答案解釋它。 – Jared