SpringMVC_[3]处理器方法的返回值

Posted 奔跑的路奇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC_[3]处理器方法的返回值相关的知识,希望对你有一定的参考价值。

SpringMVC_[3]处理器方法的返回值

1 处理器方法的返回值

使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型:
	1. ModelAndView
	2. String
	3. 返回自定义类型对象
	4. 无返回值 void
	
选择哪种返回值要根据自己所做功能来选择

1.1 返回ModelAndView

如果是前后端不分的开发,大部分情况下,我们返回 ModelAndView,即数据模型+视图
mv.setViewName(“result”);

//1、返回值是ModelAndView: 这种方式既有数据的携带还有资源的跳转,可以选择该种方式
 @RequestMapping("test01") public ModelAndView test01() ModelAndView mv=new ModelAndView();//模型与视图
  //携带数据
   mv.addObject("teamName","湖人队");
   //相当于request,setAttribute("teamName","湖人队“); 
   mv.setViewName("result");// 经过视图解析器InternalResourceViewResolver的处 理,将逻辑视图名称加上前后缀变为物理资源路径 /jsp/result.jsp 
   return mv;

 

Model 中,放我们的数据,然后在 ModelAndView 中指定视图名称。

1.2 返回String

上一种方式中的 ModelAndView 可以拆分为两部分,Model 和 View,在 SpringMVC 中,Model 我们可以直接在参数中指定,然后返回值是逻辑视图名,视图解析器解析可以将逻辑视图名称转换为物理视图地址。

视图解析器通过内部资源视图解析器InternalResourceViewResolver将字符串与解析器中的prefix和suffix结合形成要跳转的额URI。

	//2、返回字符串 
@RequestMapping("test02") 
public String test02(HttpServletRequest request) 
	Team team=new Team();
	team.setLocation("迈阿密"); 
	team.setTeamId(1002); 
	team.setTeamName("热火");
	//携带数据的两种方式
	request.setAttribute("team",team); 
	request.getSession().setAttribute("team",team);
	//资源的跳转
	return "result";// 经过视图解析器InternalResourceViewResolver的处理,将逻辑视 图名称加上前后缀变为物理资源路径 /jsp/result.jsp 

1.3 返回对象类型

当处理器方法返回Object对象类型的时候,可以是Integer、String、Map、List,也可以是自定义的对象类型。但是无论是什么类型,都不是作为逻辑视图出现,而是直接作为数据返回然后展示的。一般前端发起Ajax请求的时候都会使用直接返回对象的形式。

返回对象的时候,需要使用 @ResponseBody 注解,将转换后的 JSON 数据放入到响应体中。

返回json类型的数据,需要添加相应的依赖

	 <dependency>
	 	<groupId>com.fasterxml.jackson.core</groupId> 
		 <artifactId>jackson-core</artifactId> 
		 <version>2.9.0</version> 
	 </dependency> 
	 
	 <dependency> 
		 <groupId>com.fasterxml.jackson.core</groupId> 
	 	<artifactId>jackson-databind</artifactId>
	 	 <version>2.9.0</version>
	 </dependency>

1.3.1 返回基础类型

    // 一定要加@ResponseBody
    @ResponseBody
    @RequestMapping("test03-1")
    public Integer test031() 
        return 666;
    

    @ResponseBody
    @RequestMapping("test03-2")
    public String test032() 
        return "test";
    

1.3.2 返回自定义对象类型

    @ResponseBody
    @RequestMapping("test03-3")
    public Team test033() 
        Team team = new Team();
        team.setLocation("迈阿密");
        team.setTeamId(1002);
        team.setTeamName("热火");
        return team;
    

1.3.3 返回集合List

    @ResponseBody
    @RequestMapping("test03-4")
    public List<Team> test034() 
        List<Team> list = new ArrayList<>(5);
        for (int i = 1; i <= 5; i++) 
            Team team = new Team();
            team.setLocation("迈阿密" + i);
            team.setTeamId(1002 + i);
            team.setTeamName("热火" + i);
            list.add(team);
        
        return list;
    

1.3.4 返回集合Map

    @ResponseBody
    @RequestMapping("test03-5")
    public Map<String, Team> test035() 
        Map<String, Team> map = new HashMap();
        for (int i = 1; i <= 5; i++) 
            Team team = new Team();
            team.setLocation("金州" + i);
            team.setTeamId(1000 + i);
            team.setTeamName("勇士" + i);
            //日期类型,在返回的时候是个数字,如果想要按日期格式展示需要在实体类对应属性添加注 解@JsonFormat(pattern = "yyyy-MM-dd")
            team.setCreateTime(new Date());
            map.put(team.getTeamId() + "", team);
        
        return map;
    

最后,如果有问题,希望指正,一起进步。

以上是关于SpringMVC_[3]处理器方法的返回值的主要内容,如果未能解决你的问题,请参考以下文章

阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_2 响应之返回值是String类型

返回值分类 (voidstring modelAndView)

ssm科普篇

springMVC处理器相关内容

学习SpringMVC(十四)之关于重定向

阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_4 响应之返回值是ModelAndView类型