2017-06-05 75 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/

它将使你得到回应,并用它在你的逻辑中后端。