033_SpringMVC返回String,view,Object的原理常⽤的4类返回值:
1.ModelAndView
特点: 有数据和视图两个部分,如果你的请求需要得到数据和视图,使⽤ModelAndView最⽅便。
对视图执⾏的是forward转为⾏为。
如果你的请求结果只⽤到视图或者只⽤数据,使⽤ModelAndView有些⼤材⼩⽤了。
2.String:表⽰视图,只表⽰视图。
框架对返回值的视图执⾏forward转发⾏为
视图两种: 1. 逻辑视图。 2.完整视图路径。
3.void:了解,通过void返回值不能表⽰视图,也不能表⽰数据。
可以在ajax请求中,使⽤void。因为ajax请求本⾝只需要数据,和视图⽆关。
可以使⽤HttpServletResponse输出数据,响应ajax请求。
使⽤json作为数据格式,需要在l加⼊jackson的依赖
使⽤jquery发起ajax请求,需要加⼊jquery.js⽂件
4.Object:重点,返回值是对象,对象表⽰数据的,和视图⽆关.
@RequestMapping("/return-void-ajax2.do")
public Student doSome(String name,Integer age){
Student student = new Student();
student.setName("lisi");
student.setAge(20);
return student
}
框架如何实现把java对象转为json字符串,并通过HttpServletResponse输出给浏览器?
1.实现把java对象转为json字符串,借助HttpMessageConverter接⼝
HttpMessageConverter是spring中的接⼝,翻译过来叫做消息转换器。
HttpMessageConverter接⼝的功能其⼀是:把处理器⽅法返回的java对象转为你需要的各种数据格式。
可以转为json,转为xml,转为text,转为⼆进制等等
#**********************************************************#
开发⼈员需要做的是:在springmvc配置⽂件中加⼊⼀个叫做注解驱动的语句: <mvc:annotation-driven />
<mvc:annotation-driven />作⽤是告诉框架创建HttpMessageConverter接⼝的7个实现类对象,放到内存中使⽤。
#**********************************************************#
接⼝中⽅法的功能:
1)boolean canWrite(Class<?> var1, MediaType var2)
判断第⼀个参数的值能否转为var2表⽰的数据格式,简单的说就是能不能把var1转为var2的数据格式
例如把student对象转为json。能转换为var2,⽅法返回true,其他返回false
MediaType:媒体类型,表⽰数据格式的,类似response.setContentType("application/json")
2) void write(T var1, MediaType var2, HttpOutputMessage var3)
执⾏把var1转为var2表⽰的数据格式。
例如把student对象转为json数据格式
HttpMessageConverter接⼝有很多实现类,处理不同的数据格式,处理json格式有实现类,
处理text格式有实现类,处理xml数据有实现类。
掌握的实现类:
1.) StringHttpMessageConverter,当你的处理器⽅法返回是String时,框架使⽤这个类
public String doSome(String name,Integer age){
return "hellospringmvc";
}
2.) MappingJackson2HttpMessageConverter,当你需要把java对象转为json格式数据,框架使⽤此类
需要把lisi的student转为json,使⽤此类
public Student doSome(String name,Integer age){
Student student = new Student();
student.setName("lisi");
student.setAge(20);
return student
}
MappingJackson2HttpMessageConverter⼯作⽅式:内部使⽤jackson⼯具库的ObjectMapper,完成java对象到json的转为,所以你的项⽬中需要加⼊ jackson依赖。
2。实现json数据通过HttpServletResponse输出到浏览器。
@ResponseBody:放在⽅法的上⾯使⽤的,作⽤是执⾏:
PrintWriter pw = Writer();
pw.print(json);//⽼师这⾥应该填写pw.write()吧?
jquery框架原理pw.flush();
pw.close();
==================================================================== springmvc⽅法返回是java对象,转为json,需要怎么做?
1.加⼊jackson依赖
2.在springmvc配置⽂件加⼊<mvc:annotation-driven/>
3.在处理器⽅法的上⾯加⼊@ResponseBody注解
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论