ホームページ >Java >&#&チュートリアル >Spring MVCコントローラーアクションから外部URLにリダイレクトするにはどうすればよいですか?
Spring MVC のコントローラー アクションから外部 URL にリダイレクト
Spring MVC のコントローラー アクションから外部 URL にリダイレクトしようとした場合、デフォルトの「redirect:」構文の制限を理解することが重要です。デフォルトでは、Spring はアプリケーションのコンテキスト パス内の URL にリダイレクトします。
内部 URL へのリダイレクト
最初のコード スニペットに示すように:
@RequestMapping(method = RequestMethod.POST) public String processForm(...) { String redirectUrl = "yahoo.com"; return "redirect:" + redirectUrl; }
このコードは URL「yahoo.com」にリダイレクトしようとしますが、有効なプロトコル (例: http:// またはhttps://)。その結果、Spring はこれを内部 URL として解釈し、アプリケーションのコンテキスト パス内の "yahoo.com" にリダイレクトします。
プロトコルによる外部 URL へのリダイレクト
Toプロトコルを使用して外部 URL にリダイレクトするには、次のアプローチを使用できます。
@RequestMapping(method = RequestMethod.POST) public String processForm(...) { String redirectUrl = "http://www.yahoo.com"; return "redirect:" + redirectUrl; }
を指定することにより、 URL 内のプロトコルを使用すると、Spring はユーザーを外部 Web サイトに正しくリダイレクトします。
プロトコルを使用しない外部 URL へのリダイレクト
プロトコルを使用せずに外部 URL にリダイレクトするには、次を使用します。 Spring MVC には 2 つの代替手段があります:
メソッド1:
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public void method(HttpServletResponse httpServletResponse) { httpServletResponse.setHeader("Location", projectUrl); httpServletResponse.setStatus(302); }
このメソッドは、応答に「Location」ヘッダーと適切な HTTP ステータス コード (302) を手動で設定して、リダイレクトをトリガーします。
メソッド2:
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public ModelAndView method() { return new ModelAndView("redirect:" + projectUrl); }
このメソッドは、「ModelAndView」クラスを使用してリダイレクトを作成します指定された URL を含む応答。
以上がSpring MVCコントローラーアクションから外部URLにリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。