关于Spring MVC ModelAndView请求转发时的跳转问题
如果觉得写的还可以,点个赞支持一下新人笔者呗!笔者会持续更新关于Java和大数据有关的文章
业务场景:SpringMVC项目使用ModelAndView进行重定向跳转到另外一个@Controller方法.
我们都知道利用ModelAndView可以通过request域向逻辑视图传入数据,一般来说都是从@Controller方法跳转到视图。那么如果从@Controller方法跳转到另一个@Controller方法中,并且要传入数据,该怎么办?其实很简单,但笔者之前没有碰到过这种情况,于是就自己做了一个测试。
同时还有一个我之前从未发现过的点:在forward:/t中是可以省略forward,因为是默认值。但是如果在配置文件中加入视图后缀。此时必须加上forward,原因是不加forward就会变成访问/t.jsp.(以“forward:”为前缀时,后面部分作为uri路径通过转发的方式跳转)
如果是重定向redirect:/t, mav.addObject("rs1", "mav:转发1次");将会失效,因为redirect是新的请求,上一次请求的内容将不会被保存。
回归正题:当我们访问localhost:8080/t1时,我们所设置的object:rs1将会在request请求中一并发送到/t中,最后会和rs属性一起发送给视图。如下是示例:
publicclassTestController { "/t") (publicModelAndViewtest(){ ModelAndViewmav=newModelAndView("/view.jsp"); mav.addObject("rs", "mav:转发2次"); returnmav; } "/t1") (publicModelAndViewtest1() { ModelAndViewmav=newModelAndView("forward:/t"); mav.addObject("rs1", "mav:转发1次"); returnmav; } }
<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head><body><h1>I'm view page</h1><h3>${requestScope.rs}</h3><h3>${rs1}</h3></body></html>