在servlet中,轉發和重定向是由request和response完成的。兩者之間的區別請看我之前的文章。那麼在springMVC中是如何完成的呢? /**轉發**/ @RequestMapping("/login.do") public String login(HttpServletReque ...
在servlet中,轉發和重定向是由request和response完成的。兩者之間的區別請看我之前的文章。那麼在springMVC中是如何完成的呢?
/**轉發**/
@RequestMapping("/login.do")
public String login(HttpServletRequest request,HttpServletResponse response){
request.setAttribute("message", "hello");
return "forward:/index.do"; //forward在跳轉後可以取到message值
}
index.do為另外一個path,也就是RequestMapping中的值。
@RequestMapping("/index.do")
public String index(HttpServletRequest request,HttpServletResponse response){
return "welcome";
}
/**重定向**/
@RequestMapping("/logout.do")
public String logout(HttpServletRequest request,HttpServletResponse response){
request.setAttribute("message", "hello");
return "redirect:/register.do"; //redirect在跳轉後無法取到message值
}
register.do為另外一個path,也就是RequestMapping中的值。
@RequestMapping("/register.do")
public String register(HttpServletRequest request,HttpServletResponse response){
return "register";
}
另外forward跳轉後地址欄URL不會改變 而redirect會改變
當我們使用重定向時,在後臺傳到頁面的參數全部丟失,除非放在session中。所以在springMVC有一種解決方式如下:
@RequestMapping(“/update.do”)
public String update( RedirectAttributes redirectAttributes) {
redirectAttributes.addFlashAttribute("message", "操作成功");
return "redirect:/admin/user";
}
在重定向的頁面中,可以獲取到message的值,這是由於spring將message放入session中了。
歡迎大家訪問機器矩陣java學習論壇:http://machine-matrix.com