SpringMVC支援的傳回值類型有:ModelAndView,Model,ModelMap,Map,View,void,Sting.
SpringMVC未指定跳轉頁面時,有@ResponseBody注解則會根據請求的路徑最後/後的字段去掉字尾作為跳轉的檔案名.
SpringMVC對其支援的傳回值類型,預設傳回類型為:text/html
不是其支援的類型對象預設傳回形式為:application/json
1.傳回ModelAndView對象
package com.danger.superclub.controller;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.View;
@Controller
public class SpringTestController {
/**
* 跳轉到test.jsp頁面
* @return
*/
@RequestMapping("/test1.do")
public ModelAndView test1(){
ModelAndView mav = new ModelAndView("test1");//指定傳回的視圖頁面
mav.addObject("mav", "this is a ModelAndView type");
return mav;
}
效果為:
2.傳回Model對象
/**
* Model是一個接口,其實作類為ExtendedModelMap,繼承了ModelMap類,
* 跳轉到test2.jsp頁面,
* @param model
* @return
*/
@RequestMapping("/test2.do")
@ResponseBody
public Model test2(Model model){
model.addAttribute("model","this is a Model type");
return model;
}
效果如下:
3.傳回ModelMap對象
<span style="font-size:18px;">/**
* @ReponseBody注解可将對象按照請求的消息頭格式傳回
*/
@RequestMapping("/test3.do")
@ResponseBody
public ModelMap test3(ModelMap modelMap){
modelMap.addAttribute("modelMap","this is a ModelMap type");
return modelMap;
}</span>
效果如下:
4.傳回Map對象
/**
* 直接跳轉到test4.jsp
*/
@RequestMapping("/test4.do")
@ResponseBody
public Map<String,String> test4(Map<String, String> map){
map.put("map", "this is a Map<String,String> type");
return map;
}
效果如下:
5.跳轉界面
/**
* 跳轉到index.jsp界面
* @return
*/
@RequestMapping("/test5.do")
public String test5(){
return "index";
}
效果為:
6.傳回字元串
/**
* 當加了@ResponseBody注解後将傳回字元串
* @return
*/
@RequestMapping("/test6.do")
@ResponseBody
public String test6(){
return "index";
}</span>
效果為:
7.傳回視圖對象
/**
* 可傳回pdf,excel等視圖,自動跳轉到test8.jsp頁面
*/
@RequestMapping("/test8.do")
public View test8(){
return null;
}
效果如下:
8.傳回void
/**
* 不傳回任何東西,直接跳轉到tset7.jsp頁面
* @param model
*/
@RequestMapping("/test7.do")
public void test7(Model model){
model.addAttribute("void","this is a void type");
}
效果如下:
9.傳回一個對象,或值
/**
* 傳回一個值或對象
* @return
*/
@RequestMapping("/test9.do")
@ResponseBody
public boolean test9(){
return true;
}
效果如下: