springmvc-210803-03---处理器方法的返回值

springmvc-210803-03—处理器方法的返回值


返回 ModelAndView

返回 ModelAndView:

	有数据和视图,对视图执行forward操作。
	
    若处理器方法处理完后,需要跳转到其它资源,且又要在跳转的资源间传递数据,此时处理器方法返回 ModelAndView 比较好。
    当然,若要返回 ModelAndView,则处理器方法中需要定义 ModelAndView 对象。

    在使用时,若该处理器方法只是进行跳转而不传递数据,或只是传递数据而并不向任何资源跳转(如对页面的 Ajax 异步响应),
    此时若返回 ModelAndView,
    则将总是有一部分多余:要么 Model 多余,要么 View 多余。
    即此时返回 ModelAndView 将不合适。

返回 String

返回 String:
	表示视图,
	可以是逻辑名称,也可以是完成视图路径。

返回 void

返回 void:
	不能表示数据,也不能表示视图。
	
	处理器方法返回 void 的应用场景,AJAX 响应。
	

返回对象 Object

返回对象 Object:
	处理器方法也可以返回 Object 对象。这个 Object 可以是 Integer,String,自定义对象,Map,List 等。
	返回的Object表示数据,和视图无关。
	
	可以使用对象表示数据,响应ajax请求。
	目前做ajax,主要使用json的数据格式。
		实现步骤:
			1) 加入处理json的依赖,springmvc默认使用jackson。
			2) 在springmvc配置文件中加入<mvc:annotation-driven>注册驱动。
			3) 在处理方法上面加入注解@ResponseBody

处理器对象返回Object,转为json输入到浏览器,响应ajax的原理:

	1. <mvc:annotation-driven>注册驱动
	   相当于:json = om.writeValueAsString(student);
	   
	   <mvc:annotation-driven>在加入springmvc配置文件后,
	   会自动创建HttpMessageConverter接口的7个实现类,
	   包括MappingJackson2HttpMessageConverter(使用jackson工具库中的ObjectMapper实现java对象转为json字符串)
	   
	   注册驱动实现的功能是:完成java对象到json,xml,text,二进制等数据格式的转换。
	   HttpMessageConverter接口:
	   		消息转换器。
	   		功能:定义了java转为json,xml等数据格式的方法,这个接口有很多实现类。
	   		
	   		这两个方法是控制器类把结果输出给浏览器时使用的:
                boolean canWrite(Class<?> var1, @Nullable MediaType var2);
                void write(T var1, @Nullable MediaType var2, HttpOutputMessage var3)
                
                例如:
                	public Student doReturnView(HttpServletRequest request,String name,Integer age){
                		Student student = new Student();
                		student.setU_name("Tom");
                		student.setU_age(22);
                		return student;
                	}
                	1) canWrite作用检查处理器方法的返回值,能否转为var2表示数据。
                	   检查student(Tom,22)能否转为var2表示的数据格式,
                	   如果检查能转为json,canWrite返回true。
                	   MediaType:表示数据格式,比如:json,xml等。
                	   
                	2) write:把处理器方法的返回值对象,调用jackson中的ObjectMapper转为json字符串,
                		      相当于:json = om.writeValueAsString(student);
	2. 注解@ResponseBody
	   放在处理器方法上面,通过HttpServletResponse输出数据,响应ajax请求。
	   相当于:
	   		PrintWriter pw = response.getWriter();
             pw.print(json);
             pw.flush();
             pw.close();

没有加入注解驱动标签<mvc:annotation-driven /> 时的状态
org.springframework.http.converter.ByteArrayHttpMessageConverter
org.springframework.http.converter.StringHttpMessageConverter
org.springframework.http.converter.xml.SourceHttpMessageConverter
org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter


加入注解驱动标签时<mvc:annotation-driven />的状态
org.springframework.http.converter.ByteArrayHttpMessageConverter
org.springframework.http.converter.StringHttpMessageConverter
org.springframework.http.converter.ResourceHttpMessageConverter
org.springframework.http.converter.ResourceRegionHttpMessageConverter
org.springframework.http.converter.xml.SourceHttpMessageConverter
org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter
org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter

HttpMessageConverter接口实现类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值