目录
重定向及Flash属性
1.重定向
1.返回值是String的时候,重定向是通过在返回地址前加上"redirect:"
2.所有的动态资源被拦截器拦截了,所以需要通过重定向到另一个控制器,由控制器再次进行转发
3.在重定向到控制器的这个过程reqeust传递的数据将会丢失
4.重定向返回值是String示例
5.返回值是ModelAndView
- 需要通过RedirectView进行转发地址封装
- 需要设置ModelAndView的setView为转发的控制器地址
- 在RedirectView中在请求地址前加不加斜杠代表不同操作,如RedirectView("请求地址")
- 请求地址加斜杠:代表从服务器根目录下开始追加路径
- 请求地址不加斜杠:代表从服务器/项目名/下追加路径
- 如果加了斜杠则需要自己获取项目名
- ModelAndView可以在参数中进行指定
6.测试不加斜杠
- 注意是向控制器main发送的请求,main重定向到了toLogin_info,因此地址栏显示的是toLogin_info,而不是直接请求的toLogin_info
- 代码
- 发起main请求:效果-成功重定向
7.测试加斜杠
- 代码
- 发起main请求:效果-重定向失败404
8.改进加斜杠,动态加载项目名
2.Flash属性
1.使用重定向之后,在reqeust之中的属性将会丢失,但是可以在控制器方法中指定@RedirectAttributes传递参数,然后通过其的addAttribute进行参数的指定即可
2.使用@RedirectAttributes指定属性之后经过重定向可以使用reqeust.getParameter进行获取