spring mvc 第三天【注解实现springmvc Handler返回值为Object 的配置】

这里使用的是在前台发起请求Handler,后台伪造数据响应给前台,

解决方案:将之前的viewResolver抹掉,配置对应(request)请求的Handler信息如下

之前Handler返回的都直接就是逻辑视图名,并且需要配置相对应的固定的视图解析器,不太方便,这次需要返回Object,使Handler更灵活。

既然return 之后的值不再是逻辑视图名称了,那么就让@ResponseBody来帮忙吧

这里有两个新的注解:

@RequestBody 将HTTP请求正文转换为适合的HttpMessageConverter对象。

@ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。

HttpMessageConverter接口,需要开启<mvc:annotation-driven  />。 
AnnotationMethodHandlerAdapter将会初始化7个转换器,可以通过调用AnnotationMethodHandlerAdaptergetMessageConverts()方法来获取转换器的一个集合 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请求的。不用指定返回视图信息。

时间: 2024-10-18 11:29:39

spring mvc 第三天【注解实现springmvc Handler返回值为Object 的配置】的相关文章

spring mvc 第二天【注解实现springmvc Handler处理ajax简单请求 的配置】

这里使用的是在前台发起ajax请求Handler,后台伪造数据响应给前台, 配置对应ajax请求的Handler信息如下 1 @Controller 2 public class MyController { 3 //处理器方法 4 @RequestMapping(value="/first.do",produces="text/html;charset=utf-8") 5 public void doFirst(HttpServletResponse respon

spring mvc 第一天【注解实现springmvc的基本配置】

创建pojo,添加标识类的注解@Controller,亦可添加该Handler的命名空间:设置类的@RequestMapping(value="/hr") 该类中的方法(Handler)的标识使用@RequestMapping来配置 .可以设置该Handler的请求路径,和允许接收请求类型信息等: 该Handler返回String类型的逻辑视图名称.对应view视图信息. 1 @Controller 2 @RequestMapping 3 public class MyControll

spring mvc(三)开发环境搭建和HelloWorld程序

Spring MVC响应中返回JSON数据的方法: 配置与以前相同使用<mvc:annotation-driven/>的注解配置, 但WEB-INF/lib的类路径里面要有jackson-all-1.6.9.jar这个库文件, 然后在controller里面这样写: @Controller @RequestMapping("/user" ) public class UserController { @RequestMapping("/ajax2" )

Spring MVC 中的基于注解的 Controller【转】

原文地址:http://my.oschina.net/abian/blog/128028 终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求.实际上,ControllerClassNameHandlerMapping, MultiActionController 和选择恰当的 methodNameResolver(如 InternalPathMetho

[Spring MVC]学习笔记--@RequestMapping支持的返回类型

下面针对官方文档列出的支持类型进行举例. (本篇例子存于github上, https://github.com/lemonbar/spring-mvc-resolvingview) 可以直接下载, 也可以在浏览器中打开进行查看(强烈建议看这个, 里面有详细的解释). git clone https://github.com/lemonbar/spring-mvc-resolvingview 准备工作 1. 在WEB-INF下增加一个jsp文件夹, 里面增加两个jsp文件, 为login.jsp和

Spring MVC系列:(7)SpringMVC快速入门(注解版本)

1.引入jar包 spring-core commons-logging-1.2.jar spring-beans-3.2.5.RELEASE.jar spring-context-3.2.5.RELEASE.jar spring-core-3.2.5.RELEASE.jar spring-expression-3.2.5.RELEASE.jar spring-web spring-web-3.2.5.RELEASE.jar spring-webmvc spring-webmvc-3.2.5.R

spring mvc开发:基于注解

将上面的项目拷贝一份,拷贝web项目的时候注意该一个地方: 4.1注解第一个例子 创建web项目 在springmvc的配置文件中指定注解驱动,配置扫描器 <!-- mvc的注解驱动 --> <mvc:annotation-driven /> <!-- 一旦有扫描器的定义mvc:annotation-driven不需要,扫描器已经有了注解驱动的功能 --> <context:component-scan base-package="cn.itcast.s

spring/spring boot/spring mvc中用到的注解

在spring Boot中几乎可以完全弃用xml配置文件,本文的主题是分析常用的注解. Spring最开始是为了解决EJB等大型企业框架对应用程序的侵入性,因此大量依靠配置文件来"非侵入式"得给POJO增加功能,然而,从Spring 3.x开始,Spring被外界最为诟病的一点就是配置繁多,号称"配置地狱",各种xml文件,出了问题非常难排查.从Spring 4.x开始,Spring.io提供了三种方式编织Bean: 利用注解:隐式配置,例如:@Autowired.

Spring MVC 中的基于注解的 Controller(转载)

  终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求.实际上,ControllerClassNameHandlerMapping, MultiActionController 和选择恰当的 methodNameResolver(如 InternalPathMethodNameResolver) 就已经可以在很大程度上帮助我们省去不少的 XML 配置,