spring boot 基础学习 - controller响应返回数据

spring boot 的controller 实际上就是在spring mvc 的controller加强了,所以spring mvc 支持的spring boot 当然那是也支持的。

第一种:通过ModelAndView 返回
通过这种新式返回数据时,spring会将你返回的modelAndView对象自动存放到pageContext中,这样一来在jsp页面就可以通过EL表达式取出;

@RequestMapping("/mvtest")
public ModelAndView modelAndViewTest() {
	ModelAndView mv = new ModelAndView();
	mv.addObject("modelandviewmsg", "这是一条存放在modelAndView对象中的消息!");
	mv.setViewName("index");
	return mv;
}
jsp代码:

${modelandviewmsg }

页面放回效果如下:

spring boot 基础学习 - controller响应返回数据_第1张图片
第二种:通过形参Model返回
上面的ModelAndView看名字就可以知道包含两个部分,Model 和 View ,从controller代码也发现~spring同时也支持将model 和 view 分开,将model 放在controller 形参上,spring 也可以将他自动的放到pagContext中,这样,controller就只需要返回视图名称就行了。

@RequestMapping("/modeltest")
public String modelTest(Model model) {
	model.addAttribute("modelmsg", "也可以通过给controller方法设置一个Model形参,将响应内容放在	  	model中,
然后返回一个视图这样"); return "index"; }
spring boot 基础学习 - controller响应返回数据_第2张图片
第三种:以通过形参map返回
上面所说的ModelAndView 和 Model 返回方式实际上都是往pageContext中存入了一个map集合,spring boot 也支持直接给controller添加一个Map类形参,这样,所有存入到这个map中的数据同样也会自动存放到pageContext中;

// controller代码
@RequestMapping("/mapmodel")
	public String modelTest(Map model) {
		model.put("mapmsg", "你好,Springboot,这是一条通过Map model返回页面的		消息!");
		return "index";
	}
页面效果

spring boot 基础学习 - controller响应返回数据_第3张图片

第四种:以json形式返回
spring boot 这么青大的东西当然也支持返回json数据了~只需要一个注解@responseBody就搞定,而且完全是自动配置,你甚至都不需要添加json依赖,应为spring boot y已经帮我们自动配置好了!

// controller代码
@RequestMapping("jsonTest")
public @ResponseBody ModelBean jsonTest() {
	ModelBean mb = new ModelBean();
	mb.setBeanmsg("这是一条json数据~~~");
	mb.setBeanstatus(1);
	return mb;
}
<%jsp代码 %>

	
效果:

spring boot 基础学习 - controller响应返回数据_第4张图片
而且,从4.0 开始,spring 还为我们提供了一个@restController注解,这个注解继承自@Controller注解,他结合了原有的@Controller注解和@ResponseBody注解, 带有这个注解的类所有的方法的一般类型返回值都将以json的形式通过responseBody响应给页面,也就是说,不能再直接返回视图,如果要返回视图只能通过前台js处理或者使用ModelAndView的形式放回。

注意:
需要注意的是,当使用@Controller 并且没有使用@ResponseBody时,无论如何controller方法(或成为handler)都将会会返回一个视图。
 此时,如果返回值为string,那么返回值讲将作为视图名返回,
 如果返回值为modelAndView,那么会从modelAndView中获取视图名称,如果modelAndView中没有视图名称,那么spring会将请求的action名称作为视图名称解析
 如果handler返回类型为void,那么系统会将handler方法名作为视图名返回。
 如果一个handler不需要返回值,使用@ResponseBody 注解,这个时候可以将返回null,或者直接使用void返回类型

你可能感兴趣的:(spring,boot,学习笔记)