2017-06-05 11 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

"redirect:"ビューをそのページに戻す必要があります。 ただ、コンストラクタパラメータとしてそれを使用する:ここ

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/

それはあなたが応答を取得し、あなたのロジック内部のバックエンドにそれを使用できるようになります。

関連する問題