使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。
使用 RedirectAttributes 这样在新页面你就可以通过msg获取你想要的值了,例如${ msg }
与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。
因此转发要比重定向更快,而且跳转到的页面属性值将保留,重定向则不会.
但是也不能任意使用转发,用springMVC举个栗子来讲,当你调用某个controller的save方法时会向数据库中插入数据,之后转发到其他页面,而当这时候你刷新页面将会再次调用这个controller重复插入数据,原因在于转发过程url是不发生变化的,因此这种情况下还是选择重定向好一些。
但有人会问,重定向之后怎么传值呢?springMVC3.1之后可以通过Flash属性传值,举个栗子:
@RequestMapping("/save")
public String save(RedirectAttributes reAttrs){reAttrs.addFlashAttribute("msg", "Add success!");return "redirect:/product_view/";
}
使用 RedirectAttributes 这样在新页面你就可以通过msg获取你想要的值了,例如${ msg }