Spring Mvc 返回机制

转自:http://jianzh5.iteye.com/blog/1909234

 

Spring Mvc 有如下的几种返回方式:

ModelAndView,

Model,

ModelMap,

Map,

View,

String,

void

例子在类开始之前加上了如下注解:

@Controller

@RequestMapping("/adController")

一:ModelAndView

Java代码

@RequestMapping("/show")
public ModelAndView show(){
ModelAndView mav = new ModelAndView();
mav.setViewName("/admin/show");
mav.addObject("aaa", "11111");
return mav;
}

 请求路径:项目路径/adController/show.do

 返回视图:项目路径/admin/show.jsp

通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定页面,使用addObject()设置需要返回的值。

在页面上可以通过El表达式${aaa}获取!

二:MAP

Java代码
@RequestMapping("/show2")
	public Map<String,String> getMap(){
		System.out.println("show2");
		Map<String,String> map = new HashMap<String, String>();
		map.put("key1", "111");
		map.put("key2", "222");
		return map;
	}

 请求路径:项目路径/adController/show2.do

 返回视图:项目路径/adController/show2.jsp

URL = prefix前缀+视图名称+suffix后缀组成。

在前台页面也可以根据${key1}来获取相应的值。

三:String

Java代码
@RequestMapping("/show3")
	public String getString(ModelMap model) {
		model.addAttribute("aaa", "1111");
		model.addAttribute("bbb","222");
	  return "center";  
	}

 请求路径:项目路径/adController/show3.do

返回路径:项目路径/center.jsp

URL = prefix前缀+/return的值+suffix组成

可以通过ModelMap构建返回的参数,该ModelMap不需要自己创建。

如果加上了@ResponseBody注解,则会直接将输出值返回输出到页面。

页面会直接显示 “center”

 

四:Void 

Java代码
@RequestMapping("/show4")
	public void getVoid() {
	}

 请求路径:项目路径/adController/show3.do

 返回路径:对于请求路径  后缀为 .jsp

同样也可以构造ModelMap返回参数

 

小结:

1、使用String作为请求处理方法的返回类型是比较通用的方法,这样返回的逻辑视图名不会和请求的URL绑定,具有很大的灵活性,而模型数据也可以根据ModelMap构造控制。

2、使用Void,Map 返回对应的逻辑视图名称真实url为:prefix前缀+视图名称 +suffix后缀组成。

posted @ 2013-12-05 17:14  火光闪耀  阅读(419)  评论(0编辑  收藏  举报