如何从弹簧控制器重定向?

时间:2017-06-05 06:26:30

标签: java spring spring-mvc

我有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;
  }
}

1 个答案:

答案 0 :(得分:2)

您需要返回"重定向:"查看该页面。 只需将其用作构造函数参数:

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

page1MappingValue这里是page1的地址,具体取决于映射。

您可以在此处详细了解重定向:

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

此外,如果您需要在方法内部获得响应并且您不需要直接返回它,您可以使用RestTemplate-s:

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

它将允许您获得响应并在逻辑内的后端使用它。