Spring MVC コントローラー アクションから外部 URL へのリダイレクト
Spring MVC では、redirect: プレフィックスを使用してプロジェクト内の URL に簡単にリダイレクトできます。 。ただし、外部 URL へのリダイレクトは、特に URL が有効なプロトコルを指定していない場合には注意が必要です。
プロジェクト内の URL にリダイレクトする次のコードを検討してください。
@RequestMapping(method = RequestMethod.POST) public String processForm(HttpServletRequest request, LoginForm loginForm, BindingResult result, ModelMap model) { String redirectUrl = "yahoo.com"; return "redirect:" redirectUrl; }
このコードは、意図した外部 URL にリダイレクトせず、指定された名前のビューにリダイレクトします。外部 URL にリダイレクトするには、以下に示すように、URL にプロトコルを含める必要があります:
@RequestMapping(method = RequestMethod.POST) public String processForm(HttpServletRequest request, LoginForm loginForm, BindingResult result, ModelMap model) { String redirectUrl = "http://www.yahoo.com"; return "redirect:" redirectUrl; }
ただし、この方法では有効なプロトコルが存在する必要があります。有効なプロトコルのない URL を処理するには、2 つのアプローチが利用可能です:
アプローチ 1:
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public void method(HttpServletResponse httpServletResponse) { httpServletResponse.setHeader("Location", projectUrl); httpServletResponse.setStatus(302); }
このアプローチでは、HttpServletResponse オブジェクトを使用してロケーション ヘッダーとステータス コードを設定し、リダイレクトを強制します。
アプローチ 2:
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public ModelAndView method() { return new ModelAndView("redirect:" projectUrl); }
このアプローチでは、ModelAndView を使用して、指定された URL にリダイレクトします。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3