サーブレットでは、転送とリダイレクトはリクエストとレスポンスによって行われます。両者の違いについては前回の記事をご覧ください。では、springMVC ではどのように行われるのでしょうか?
/**フォワード**/
@RequestMapping("/login.do")
public String login(HttpServletRequest request,HttpServletResponse response){
request.setAttribute("message", "hello");
return "forward:/index.do"; //forward はジャンプ後のメッセージ値を取得できます
}
index.do は、RequestMapping の値である別のパスです。
@RequestMapping("/index.do")
public Stringindex(HttpServletRequestリクエスト,HttpServletResponseレスポンス){
return "welcome";
}
/**リダイレクト**/
@RequestMapping( "/logout.do")
public String logout(HttpServletRequest request,HttpServletResponse response){
request.setAttribute("message", "hello");
return "redirect:/register.do"; requestMapping の値である、jump
}
register.do が別のパスになった後、メッセージ値を取得できません。
@RequestMapping("/register.do")
public String register(HttpServletRequest request,HttpServletResponse response){
return "register";
}
また、アドレスバーのURLは前方ジャンプ後に変更されませんただし、リダイレクト 変更されます
リダイレクトを使用すると、バックグラウンドでページに渡されたすべてのパラメーターは、セッションに配置されない限り失われます。したがって、 springMVC には次のような解決策があります:
@RequestMapping("/update.do")
public String update( RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("message", "Operation success");
return "redirect:/admin/user";
}
リダイレクトされたページで、メッセージの値を取得できます。これは、Spring がメッセージをセッションに入れるためです。
以上がSpringMVC フォワーディングとリダイレクトの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。