2016-02-25 44 views
1

我需要根據url中的用戶名重定向url。根據Java中的用戶名稱進行Url重定向

讓說,網址是

形式得到http://192.168.2.0/user1/app/node-id/info

然後,

應該這個URL重定向到不同的服務器一樣,

得到http://192.168.2.1/app/node-id/info

的客戶端應該不知道這個事實,它正在被重定向。 他/她應該看到相同的url,但響應應該來自Json或html格式的重定向url。

我們可以通過請求轉發執行。

每一處我都能看到解決方案的servlet方式。 做春天的最佳方式是什麼?

回答

0

Java servlet具有重定向和轉發方法。它們之間的區別在here上進行了說明,您可以按如下方式使用它們;重定向改變了url,但轉發處理請求內部。

如果你想將用戶重定向到一個遠程URL檢查this Q&A,也許在不改變瀏覽器的地址重定向,最簡單的方法是用url閱讀它並把它寫進響應上的servlet

private void redirect(ResponsePage aDestinationPage, HttpServletResponse aResponse) throws IOException { 
    String urlWithSessionID = aResponse.encodeRedirectURL(aDestinationPage.toString()); 
    aResponse.sendRedirect(urlWithSessionID); 
} 

private void forward(ResponsePage aResponsePage, HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletException, IOException { 
    RequestDispatcher dispatcher = aRequest.getRequestDispatcher(aResponsePage.toString()); 
    dispatcher.forward(aRequest, aResponse); 
} 

另外的用戶名在url地址上,您可以使用filters並將其重定向爲您的願望。如需使用帶濾波器的彈簧,請檢查herehere

+0

有沒有特殊的彈簧方式來轉發請求? –

+0

我認爲過濾器可以解決您的問題。有關使用彈簧與過濾器請檢查http://learningviacode.blogspot.com.tr/2013/07/filters-and-spring.html和http://www.mkyong.com/spring-mvc/how-to-寄存器-A-servlet的過濾器在彈簧-MVC / –