ログインが成功すると、以下のコントローラメソッドはモデルとビューを提供するために別のコントローラに転送します。これは罰金 - しかし、フォワードされたコントローラからのビューを表示している場合でも、ブラウザのURLは、転送が完了した後に "http://localhost:8080/AppName/loginSuccessForward"を表示します。Java Spring MVC:コントローラが転送すると、ブラウザは転送先のコントローラのURLではなく、古いコントローラからのURLを表示します。
転送されたコントローラのURLをブラウザに表示させる方法はありますか?私が望むように機能している場合、ユーザーは、ユーザーのクラスに応じて、ブラウザに「http://localhost:8080/AppName/l/l/profile」または「http://localhost:8080/AppName/t/t/profile」と表示されます。コンテキストの場合
@RequestMapping("/loginSuccessForward")
public String loginForward(Principal principal){
if (principal == null){
return "/";
} else {
if (user1Service.getUser(principal.getName()) != null){
return "forward:/t/t/profile";
} else if (user2Service.getUser(principal.getName()) != null){
return "forward:/l/l/profile";
} else {
return "/";
}
}
}
:(一般的なJavaの問題のように思えるが)これは、Spring MVCの上に構築されています。
。それはサーバー側の前進です。クライアント(Webブラウザ)はまったく関与していません。代わりに*リダイレクト*をブラウザに送り返すので、更新されたURLに新しいリクエストを送ることができます。 – Andreas
@アンドレアス - 理解に感謝しています。私はそれがフォワードとリダイレクトの区別であることは知らなかった:プレフィックス。私はあなたの答えを受け入れるでしょう。 – Ovid2020