天天看點

SpringMVC傳回值類型

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;
	}
           

效果為:

SpringMVC傳回值類型

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;
	}
           

效果如下:

SpringMVC傳回值類型

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>
           

效果如下:

SpringMVC傳回值類型

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;
	}
           

效果如下:

SpringMVC傳回值類型

5.跳轉界面

/**
	 * 跳轉到index.jsp界面
	 * @return
	 */
	@RequestMapping("/test5.do")
	public String test5(){
		return "index";
	}
           

效果為:

SpringMVC傳回值類型

6.傳回字元串

/**
	 * 當加了@ResponseBody注解後将傳回字元串
	 * @return
	 */
	@RequestMapping("/test6.do")
	@ResponseBody
	public String test6(){
		return "index";
	}</span>
           

效果為:

SpringMVC傳回值類型

7.傳回視圖對象

/**
	 * 可傳回pdf,excel等視圖,自動跳轉到test8.jsp頁面
	 */
	@RequestMapping("/test8.do")
	public View test8(){
		return null;
	}
           

效果如下:

SpringMVC傳回值類型

8.傳回void

/**
	 * 不傳回任何東西,直接跳轉到tset7.jsp頁面
	 * @param model
	 */
	@RequestMapping("/test7.do")
	public void test7(Model model){
		model.addAttribute("void","this is a void type");
	}
           

效果如下:

SpringMVC傳回值類型

9.傳回一個對象,或值

/**
	 * 傳回一個值或對象
	 * @return
	 */
	@RequestMapping("/test9.do")
	@ResponseBody
	public boolean test9(){
		return true;
	}
           

效果如下:

SpringMVC傳回值類型