SpringMVC return forward redirect疑问
来源:互联网 发布:c语言 time.h库函数 编辑:程序博客网 时间:2024/06/06 06:41
我们都知道,在一般情况下,控制器方法返回的字符串都会被当做逻辑视图名来处理。
但是当字符串带有“forward”或者“redirect”前缀时,则对他们进行特殊处理。把“forward”与“redirect”当成指示符,其后的字符串
作为URL来处理。
redirect:会让浏览器发起一个新的请求。
forward:与当前请求同属一个。
遇到的一个问题:
@RequestMapping("/test1")public String test1(@ModelAttribute("user") User user) { System.out.println("test1 " + user); return "forward:/test2";}@RequestMapping("/test2")public String test2(ModelMap map) { System.out.println("test2 " + map.get("user")); return "user/success";}
当我们请求/test1时,被转发到/test2了。
问题是:我们能够在test2中得到名称为user的User对象吗?
答案是否定的。
http://localhost:8080/SM/test1
test1 User{username='lgh', password='', realName='null'}
test2 null
原因:
1、SpringMVC在调用方法前会创建一个隐含的模型对象implicitModel,作为模型数据的存储容器。如果处理方法的入参为Map或者Model类型,则
SpringMVC会将implicitModel的引用传递给这些入参。
所以test1与test2有两个不同的implicitModel,test2不可以获得test1的implicitModel。
2、对于JSP视图来说,SpringMVC会将模型数据转存到ServletRequest的属性列表中,因为test1与test2同属一个请求,所以,我们在最终的视图页面可以得到
test1与test2的所有模型数据。
测试:
@RequestMapping("/test1")public String test1(@ModelAttribute("user") User user) { System.out.println("test1 " + user); return "forward:/test2";}@RequestMapping("/test2")public String test2(ModelMap map) { System.out.println("test2 " + map.get("user")); map.addAttribute("user1", new User("111", "222", "333")); return "user/success";}访问:http://localhost:8080/SM/test1
返回:
User{username='lgh1992314@qq.com', password='', realName='null'}
User{username='111', password='222', realName='333'}
当然改为redirect,则只会显示test2里的数据。
- SpringMVC return forward redirect疑问
- SpringMVC-forward和redirect
- 【SpringMVC】 forward 和 redirect
- springmvc:Forward和Redirect
- SpringMVC的forward和redirect
- springmvc中forward和redirect
- springmvc中forward和redirect
- SpringMVC return:redirect 中文乱码
- springMVC中的redirect和forward跳转
- SpringMVC 的redirect 和forward 跳转
- Springmvc的return modelAndView和return "redirect:/index"
- forward&redirect
- redirect && forward
- forward redirect
- Forward&Redirect
- forward redirect
- SpringMVC 中Controller之间的 forward 和 redirect
- springmvc中的@RequestMapping注解中的return "redirect:/";的用法。
- [Leetcode] #235 Lowest Common Ancestor of a Binary Search Tree
- java-正则表达式判断移动联通电信手机号
- 野指针
- tcpdump
- 深入理解Java类型信息(Class对象)与反射机制
- SpringMVC return forward redirect疑问
- 深入理解linux系统的目录结构
- 机器学习sklearn指东
- 用sparkstreaming按天计算地区销售额简单模版
- 部署Servlet(二)——Servlet3.0
- linux(centos7)安装jdk
- 文章标题
- UVA 12108 特别困的学生
- javascript入门(一)