2017-06-05 34 views
1

我有一個MainRedirectController,所有的請求和響應將從這個控制器重定向。如何從mainRedirect方法發送請求參數到page1方法,並從page1方法發送響應參數到mainRedirect方法?如何從彈簧控制器重定向?

public class MainRedirectController{ 

    public ModelAndView mainRedirect(HttpServletRequest request, HttpServletResponse response) { 
    String page = ServletRequestUtils.getStringParameter(request, "page", null); 
    if(page.equals("page1")){ 
     //redirect request to page1 controller and 
     //return reponse coming from page1 controller 
    }else if(....){ 
     ... 
    } 

    } 
} 


public class Page1Controller{ 

    public ModelAndView page1(HttpServletRequest request, HttpServletResponse response) { 
    response.getOutputStream().print("{\"completed\": \"1\"}"); 
    response.getOutputStream().flush(); 
    return null; 
    } 
} 
+0

我想知道爲什麼你想通過單個控制器?這是什麼具體原因? –

+0

這不起作用,您需要代理或在控制器中提供更好的映射。你不需要這麼大的控制器來處理(這是「DispatcherServlet =」和「@ RequestMapping」註釋的全部要點。) –

+1

@ShaikElias我有一個客戶端應用程序,用戶可以通過這個應用程序來執行一些操作。問題是這個客戶端應用程序沒有身份驗證信息,於是我創建了一個具有匿名訪問的頁面(MainRedirectController)。通過這個控制器,我需要將用戶請求重定向到某些特定的控制器。 – hellzone

回答

2

您需要將「重定向:」視圖返回到該頁面。 只是用它作爲構造函數的參數:這裏

if(page.equals("page1")){ 
    return new ModelAndView("redirect:/page1MappingValue") 
} 

page1MappingValue是地址到你的第1頁取決於映射。

你可以閱讀更多關於這裏改:

http://www.baeldung.com/spring-redirect-and-forward

此外,如果你需要得到的只是在方法內部的響應,你不需要直接返回它,你可以使用RestTemplate-S:

https://spring.io/guides/gs/consuming-rest/

它將使你得到迴應,並用它在你的邏輯中後端。