spring mvc 第三天【注解实现springmvc Handler返回值为Object 的配置】
2016-11-21 23:11
323 查看
这里使用的是在前台发起请求Handler,后台伪造数据响应给前台,
解决方案:将之前的viewResolver抹掉,配置对应(request)请求的Handler信息如下
之前Handler返回的都直接就是逻辑视图名,并且需要配置相对应的固定的视图解析器,不太方便,这次需要返回Object,使Handler更灵活。
既然return 之后的值不再是逻辑视图名称了,那么就让@ResponseBody来帮忙吧
这里有两个新的注解:
@RequestBody 将HTTP请求正文转换为适合的HttpMessageConverter对象。
@ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。
HttpMessageConverter接口,需要开启<mvc:annotation-driven />。
AnnotationMethodHandlerAdapter将会初始化7个转换器,可以通过调用AnnotationMethodHandlerAdapter的getMessageConverts()方法来获取转换器的一个集合 List<HttpMessageConverter>
List<HttpMessageConverter>
引用
可以理解为,只要有对应协议的解析器,你就可以通过几行配置,几个注解完成协议——对象的转换工作!
PS:Spring默认的json协议解析由Jackson完成。
上面的这些Handler都是适用于ajax请求的。不用指定返回视图信息。
解决方案:将之前的viewResolver抹掉,配置对应(request)请求的Handler信息如下
之前Handler返回的都直接就是逻辑视图名,并且需要配置相对应的固定的视图解析器,不太方便,这次需要返回Object,使Handler更灵活。
既然return 之后的值不再是逻辑视图名称了,那么就让@ResponseBody来帮忙吧
这里有两个新的注解:
@RequestBody 将HTTP请求正文转换为适合的HttpMessageConverter对象。
@ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。
HttpMessageConverter接口,需要开启<mvc:annotation-driven />。
AnnotationMethodHandlerAdapter将会初始化7个转换器,可以通过调用AnnotationMethodHandlerAdapter的getMessageConverts()方法来获取转换器的一个集合 List<HttpMessageConverter>
List<HttpMessageConverter>
引用
ByteArrayHttpMessageConverter StringHttpMessageConverter ResourceHttpMessageConverter SourceHttpMessageConverter XmlAwareFormHttpMessageConverter Jaxb2RootElementHttpMessageConverter MappingJacksonHttpMessageConverter
可以理解为,只要有对应协议的解析器,你就可以通过几行配置,几个注解完成协议——对象的转换工作!
PS:Spring默认的json协议解析由Jackson完成。
1 @Controller 2 public class MyController { 3 //处理器方法 4 @RequestMapping(value="/first.do") 5 @ResponseBody 6 public Object doFirst(){ 7 return 1; 8 } 9 10 //处理器方法-----String 11 @RequestMapping(value="/second.do",produces="text/html;charset=utf-8") 12 @ResponseBody 13 public Object doSecond(){ 14 15 return "汉字"; 16 } 17 18 19 //处理器方法-----UserInfo 20 @RequestMapping(value="/third.do") 21 @ResponseBody 22 public Object doThird(){ 23 UserInfo info=new UserInfo(); 24 info.setAge(12); 25 info.setName("Happy"); 26 return info; 27 } 28 29 //处理器方法-----map 30 @RequestMapping(value="/four.do") 31 @ResponseBody 32 public Object doFour(){ 33 UserInfo info=new UserInfo(); 34 info.setAge(12); 35 info.setName("Happy"); 36 37 38 Map<String,UserInfo> map=new HashMap<String,UserInfo>(); 39 map.put("info", info); 40 return map; 41 } 42 43 //处理器方法-----list 44 @RequestMapping(value="/five.do") 45 @ResponseBody 46 public Object doFive(){ 47 UserInfo info=new UserInfo(); 48 info.setAge(12); 49 info.setName("Happy"); 50 51 52 List<UserInfo> list=new ArrayList<UserInfo>(); 53 list.add(info); 54 return list; 55 } 56 }
上面的这些Handler都是适用于ajax请求的。不用指定返回视图信息。
相关文章推荐
- spring mvc 第二天【注解实现springmvc Handler处理ajax简单请求 的配置】
- Spring MVC 4实现RESTFul WebServices的CRUD实例和使用RestTemplate进行请求(全注解形式配置Web和Filter)
- spring mvc 第一天【注解实现springmvc的基本配置】
- spring mvc 第四天【注解实现springmvc 配合使用Exception Resolver 的配置】
- Spring MVC(学习笔记四)控制器的注解(三) -之处理方法的返回值配置
- 零配置 之 21.3 通过注解来实现零配置
- spring mvc注解实现
- 使用注解,实现ssh项目中spring配置文件的零配置,约定优于配置
- spring mvc注解实现
- spring mvc注解配置
- spring mvc 注解基本配置(@resource,@autowired,@Component...)
- Spring零配置通过注解实现Bean依赖注入总结<转>
- spring mvc注解实现
- Spring MVC实现一个控制器写多个方法(注解方式、继承方式)
- Java程序员从笨鸟到菜鸟之(七十二)细谈Spring(四)利用注解实现spring基本配置详解
- Spring入门Blog[五、Spring容器组建注解@Component和Resouces实现完全注解配置]
- 使用spring注解 自动装配以及自动扫描机制 实现零xml配置的前提
- Spring的AOP分为注解和配置两种方式实现
- Spring整理11 -- 面对切面(AOP)1 -- 注解配置的方式实现AOP
- spring mvc配置完后实现下载功能