这里使用的是在前台发起请求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>
ByteArrayHttpMessageConverter
StringHttpMessageConverter
ResourceHttpMessageConverter
SourceHttpMessageConverter
XmlAwareFormHttpMessageConverter
Jaxb2RootElementHttpMessageConverter
MappingJacksonHttpMessageConverter
可以理解为,只要有对应协议的解析器,你就可以通过几行配置,几个注解完成协议——对象的转换工作!
PS:Spring默认的json协议解析由Jackson完成。
@Controller
public class MyController {
//处理器方法
@RequestMapping(value="/first.do")
@ResponseBody
public Object doFirst(){
return 1;
} //处理器方法-----String
@RequestMapping(value="/second.do",produces="text/html;charset=utf-8")
@ResponseBody
public Object doSecond(){ return "汉字";
} //处理器方法-----UserInfo
@RequestMapping(value="/third.do")
@ResponseBody
public Object doThird(){
UserInfo info=new UserInfo();
info.setAge(12);
info.setName("Happy");
return info;
} //处理器方法-----map
@RequestMapping(value="/four.do")
@ResponseBody
public Object doFour(){
UserInfo info=new UserInfo();
info.setAge(12);
info.setName("Happy"); Map<String,UserInfo> map=new HashMap<String,UserInfo>();
map.put("info", info);
return map;
} //处理器方法-----list
@RequestMapping(value="/five.do")
@ResponseBody
public Object doFive(){
UserInfo info=new UserInfo();
info.setAge(12);
info.setName("Happy"); List<UserInfo> list=new ArrayList<UserInfo>();
list.add(info);
return list;
}
}
上面的这些Handler都是适用于ajax请求的。不用指定返回视图信息。
spring mvc 第三天【注解实现springmvc Handler返回值为Object 的配置】的更多相关文章
-
spring mvc 第二天【注解实现springmvc Handler处理ajax简单请求 的配置】
这里使用的是在前台发起ajax请求Handler,后台伪造数据响应给前台, 配置对应ajax请求的Handler信息如下 @Controller public class MyController { ...
-
spring mvc 第一天【注解实现springmvc的基本配置】
创建pojo,添加标识类的注解@Controller,亦可添加该Handler的命名空间:设置类的@RequestMapping(value="/hr") 该类中的方法(Handl ...
-
【#】Spring3 MVC (三)---请求处理方法 参数及返回值总结
博客分类: spring MVCJSPServletCC++ @RequestMapping("/xxxx") public String aaa(){ } 在处理用户请求的方 ...
-
J2EE进阶(十三)Spring MVC常用的那些注解
Spring MVC常用的那些注解 前言 Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam,@ModelAttribute等等这样 ...
-
Hibernate Validation,Spring mvc 数据验证框架注解
1.@NotNull:不能为 Null,但是可以为Empty:用在基本数据类型上. @NotNull(message="{state.notnull.valid}", groups ...
-
SpringMVC Controller 返回值几种类型
SpringMVC Controller 返回值几种类型 2016年06月21日 19:31:14 为who而生 阅读数:4189 标签: Controller 返回值类型spring mvc 更多 ...
-
Spring MVC工作原理 及注解说明
SpringMVC框架介绍 1) spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. Spring 框架提供了构建 Web 应用程序的全功 ...
-
Spring MVC (二)注解式开发使用详解
MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...
-
1.2(Spring MVC学习笔记) Spring MVC核心类及注解
一.DispatcherServlet DispatcherServlet在程序中充当着前端控制器的作用,使用时只需在web.xml下配置即可. 配置格式如下: <?xml version=&q ...
随机推荐
-
【转载】C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...
-
shell脚本批量调用git命令
有时候想对本地的几个repository都进行一下pull,一个一个操作比较繁琐,所以写了个shell脚本进行简化操作. git_pull_all.sh #!/bin/sh clear functio ...
-
Android studio工具介绍
区域1介绍 这个区域是运行和调试相关的操作. 1.编译2中显示的模块 2.当前项目的模块列表 3.运行2中显示的模块 ...
-
C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)
1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域. 从作用域看: 1>全局变量具有全局 ...
-
初学java之事件响应(结合接口来设置在同一个界面上!)
package wahaha; public class test_1 { public static void main( String args[] ) { WindowActionEvent w ...
-
flume-sink报错 java.lang.IllegalStateException: close() called when transaction is OPEN - you must either commit or rollback first
1. 确认代码无误(根据情况修改,表示若获得不了数据不会自动commit或者rollback): Event event = channel.take(); if (event == null) { ...
-
Cordic算法——圆周系统之旋转模式
三角函数的计算是个复杂的主题,有计算机之前,人们通常通过查找三角函数表来计算任意角度的三角函数的值.这种表格在人们刚刚产生三角函数的概念的时候就已经有了,它们通常是通过从已知值(比如sin(π/2)= ...
-
23. pt-slave-delay
略过,用原生的延迟复制: stop slave; change master to master_delay=5; start slave;
-
codeblocks编译器
发现网络有些编译器没有MinGW,特此留一文件: https://pan.baidu.com/s/1pLltzvH 有时下载codeblocks后编译不了,还要修改MinGW的位置,找到MinGW文件 ...
-
OkHttp使用方法
1.在app/build.gradle中添加依赖 compile 'com.squareup.okhttp3:okhttp:4.0.1' 2.创建OkHttpClient实例 OkHttpClient ...