一.SpringMVC的方法返回值
SpringMVC 的方法返回值有多种, ModelAndView, Model,ModelMap,Map,View, String, void , 但是常用的,只有3个,ModelAndView,void 和String. 这里,详细的介绍一下。
下面讲解一下,跳转方法返回值类型
二 返回ModelAndView 对象。 (最常用的之一)
ModelAndView, 实际上就是 Model 模型和View 视图, 将数据模型和返回视图放置在一个类里面。
public class ModelAndView { private Object view; //视图 private ModelMap model; //数据 private boolean cleared = false; }
二.一 后台处理:
@RequestMapping(value="/toLogin") public ModelAndView toLogin(){ //放置对象还可以放其他的类型,下面会重点讲解。这里先只返回简单的字符串。 ModelAndView model=new ModelAndView(); //添加数据 model.addObject("name","两个蝴蝶飞ModelAndView形式"); //设置视图 model.setViewName("user/login"); return model; }
ModelAndView ,利用 addObject() 来放置数据, 利用setViewName() 来设置要跳转的视图的名称。 这是是最常用的。
二.二 前端视图展示。 (接下来的视图展示也是用这个代码)
<body> <h3>${name}欢迎你来到这个页面</h3> </body>
运行之后,前端展示
常看见,将ModelAndView 放置在方法的参数里面,这样也是可行的。 不用再次实例化了。
@RequestMapping(value="/toLogin") public ModelAndView toLogin(ModelAndView model){ //放置对象还可以放其他的类型,下面会重点讲解。这里先只返回简单的字符串。 //添加数据 model.addObject("name","两个蝴蝶飞ModelAndView形式"); //设置视图 model.setViewName("user/login"); return model; }
其实,SpringMVC的方法参数里面可以放置很多对象,如ModelAndView,Model ,HttpServletRequest 等。 会专门收集讲一下的。
##三. 返回Model 类型
返回的是Model,数据模型,可以填充数据了, 那么如何指定要跳转到哪儿呢,即指定视图名。 猜想,可以在方法名或者是访问路径url上做文章。是在url 上进行的。 可以验证一下。
三.一 Model接口
Model 是一个接口,故最好放置在方法参数里面,而不是进行手动的实例化。
package org.springframework.ui; import java.util.Collection; import java.util.Map; public abstract interface Model { public abstract Model addAttribute(String paramString, Object paramObject); public abstract Model addAttribute(Object paramObject); public abstract Model addAllAttributes(Collection<?> paramCollection); public abstract Model addAllAttributes(Map<String, ?> paramMap); public abstract Model mergeAttributes(Map<String, ?> paramMap); public abstract boolean containsAttribute(String paramString); public abstract Map<String, Object> asMap(); }
三.二 URL 形式的后台指定跳转视图名
@RequestMapping(value="/login") public Model login(Model model){ model.addAttribute("name","两个蝴蝶飞Model形式"); return model; }
前台传入的路径url 是login,那么就会跳转到login.jsp 页面。
三.三 将URL 与方法名设置不一致,主要是将url 进行改变,看跳转到哪一个页面。
@RequestMapping(value="/toLogin") public Model login(Model model){ model.addAttribute("name","两个蝴蝶飞Model形式"); return model; }
运行服务器, 进行访问之后,会报404错误,说要跳转到toLogin.jsp(url控制),而不是login.jsp(方法名控制).
这样,就需要将url 访问路径与页面的视图名称保持一致,不太友好。