Spring 4.x官方参考文档中文版——第21章 Web MVC框架(8)

原创 2016年06月01日 10:08:52
支持的方法返回参数类型
        以下是支持的方法返回参数类型:
  • ModelAndView : 这个对象由包括了指令对象的model模型,和带@ModelAttribute注解的数据访问方法的返回结果组成。
  • Model : 模型对象,由通过RequestToViewNameTranslator决定了的视图名,包括了指令对象的model模型,和带@ModelAttribute注解的数据访问方法的返回结果共同组成。
  • Map : map对象代表了model模型,由通过RequestToViewNameTranslator决定了的视图名,包括了指令对象的model模型,和带@ModelAttribute注解的数据访问方法的返回结果共同组成。
  • View : view对象,由通过指令对象决定了的model模型,和带@ModelAttribute注解的数据访问方法的返回结果共同组成。它的处理器方法中,也可以用编程的方式来声明一个Model参数,并添加进这个model模型里。
  • String : 一个字符串值,可以被当成视图名,由通过指令对象决定了的model模型,和带@ModelAttribute注解的数据访问方法的返回结果共同组成。它的处理器方法中,也可以用编程的方式来声明一个Model参数,并添加进这个model模型里。
  • void :如果这个方法自己处理响应(通过声明一个ServletResponse/HttpServletResponse类型的方法入参,在里面直接写响应的内容这种方式),或者视图名支持通过RequestToViewNameTranslator来指定时使用(在处理器方法中没有声明一个response(响应)入参)。
  • 如果方法被@ResponseBody注解了,返回的参数类型会被写到响应的HTTP主体中,返回值会被HttpMessageConverters转换成声明了的方法入参类型。详见”使用@ResponseBody注解映射响应主体”这一章节。
  • HttpEntity<?> ResponseEntity<?> : 这两个对象是提供了Servlet响应HTTP 报头和内容的访问权。这个实体的主体部分会被HttpMessageConverters转换为响应stream(数据流),详见”使用HttpEntity”这一章节。
  • HttpHeaders : 这个对象可以返回一个没有body(主体)部分的响应。
  • Callable<?> : 在Spring MVC的管控下,当应用需要在一个线程中异步地产生返回值时,这个值能够通过这个对象进行返回。
  • DeferredResult<?> : 当应用需要在被特定的线程中异步地产生返回值时,这个值能够通过这个对象进行返回。
  • ListenableFuture<?> : 当应用需要在被特定的线程中异步地产生返回值时,这个值能够通过这个对象进行返回。
  • ResponseBodyEmitter : 能把多个对象异步地写到响应中并返回,同样也能通过在主体中使用ResponseEntity来支持。
  • SseEmitter : 能把Server-Sent Events(服务端推送事件)异步地写入到响应中并返回,也能通过在主体中使用ResponseEntity来支持。
  • StreamingResponseBody : 能把响应的OutPutStream异步地写入到返回值中,也能通过在主体中使用ResponseEntity来支持。
  • 使用通过在方法级的@ModelAttribute特定的属性名(或者基于返回类型的类名的默认属性名)的任何能在视图中展示的单个model模型属性的返回类型,包括了有指令对象的model模型,和带@ModelAttribute注解的数据访问方法的返回结果共同组成。


使用@RequestParam把请求参数绑定到方法参数上
        使用@RequestParam注解,能够在你的controller上,把请求参数绑定到方法参数上。

        请看下面的使用实例代码:


         默认情况下,参数是必须要用这个注解的,但是你能通过把@RequestParam的required属性设置为false,来使特定参数变得可选。(比如:@RequestParam(path=”id”,required=false))。
         如果目标的方法参数的类型不是String,会被自动转换成String,请参考”方法参数和类型转换”这一章节。
如果在Map<String, String>或者MultiValueMap<String, String>的方法入参上使用@RequestParam注解,这个map将被所有请求参数填充。


使用@RequestBody注解来映射request请求主体

        方法参数中的@RequestBody注解,代表了这个方法参数与HTTP请求主体的值绑定在一起,比如:


 
        通过使用HttpMessageConverter,你把请求的主体转换成了一个方法入参。HttpMessageConverter可以把HTTP请求的消息转换为一个对象,也可以把一个对象转换成HTTP响应主体。利用以下默认的HttpMessageConverters,RequestMappingHandlerAdapter可以支持@RequestBody注解:
  • ByteArrayHttpMessageConverter : 可以转换字节数组。
  • StringHttpMessageConverter : 可以转换字符串。
  • FormHttpMessageConverter : 可以在表单数据和MultiValueMap<String, String>间互相转换。
  • SourceHttpMessageConverter : 可以转换成一个javax.xml.transform.Source。


        如果需要详细了解这些转换器,见”消息转换器”这一章节。同时请注意,如果使用MVC命名空间或者MVC java配置,默认会注册很多不同功能的信息转换器。详见”启用MVC Java配置或MVC XML命名空间”这一章节。

        如果你想读写XML,你需要利用在org.springframework.oxm包里的Marshaller和Unmarshaller实现,来配置MarshallingHttpMessageConverter。下面的例子展示了在配置文件中的配置方法,但是如果你是通过MVC命名空间或者MVC Java配置应用,请参考” 启用MVC Java配置或MVC XML命名空间”这一章节。


 
         一个@RequestBody方法参数能被@Valid所注解,这种情况下,这个方法参数能被配置好的Validator实例所验证。当使用MVC 命名空间或MVC Java配置时,假定在classpath(类路径)中可以使用JSR-303的实现时,JSR-303验证器将会被自动配置好。


小提示:

      也可参考” 启用MVC Java配置或MVC XML命名空间”这一章节,来获得更多关于通过使用MVC配置命名空间或MVC Java配置,来配置消息转换器和验证器的信息。


利用@ResponseBody注解映射响应主体

        @ResponseBody注解与@RequestBody很相似,这个注解放在方法上面,代表方法的返回类型直接写入到HTTP响应的主体中(而不是被放置在一个model模型中,或者被当作一个视图名),例如:


         上面的例子会把“Hello World”直接写入到HTTP响应数据流中。

         利用@RequestBody,Spring会利用HttpMessageConverter来把返回的对象转换成一个响应主体。如需了解关于转换器的更多信息,见前面的”消息转换器”这一章节。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

7、Spring MVC 之 处理异步请求

Spring MVC 3.2开始引入Servlet 3中的基于异步的处理request.往常是返回一个值,而现在是一个Controller方法可以返回一个java.util.concurrent.Ca...

理解Spring MVC中的异步处理请求(下)

本文主要在上一篇文章的基础上进一步深入介绍了Spring MVC的另一种异步处理请求的方式,已经如何提供服务器推送服务。...

spring cloud Zuul 理解

1、官网翻译: 路由和过滤器:Zuul(Router andFilter: Zuul) Routing in an integral part of a microservice archit...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

【参与翻译】Spring4.x框架参考文档

Spring4.x框架参考文档 为了不出现重复翻译Spring4参考文档,专门发此文进行通知,同时也希望有兴趣参与翻译的参与进来。   项目地址:  http://git....
  • isea533
  • isea533
  • 2014年12月31日 08:53
  • 31720

Spring 4.x官方参考文档中文版——第21章 Web MVC框架(7)

@RequestMapping的不同接收条件,支持的方法参数类型

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Spring 4.x官方参考文档中文版——第六部分 Web技术

基于Spring 4.2.5官方文档,现在MVC部分已经翻译完毕,现在重新优化翻译并审校,制作离线文档中。制作完成后将发布于博客。...

Spring4.x官方参考文档中文版——第21章 Web MVC框架(20)

21.7 URI的组建、21.7.1 组建连接到controller和方法的URI、21.7.2 在视图中组建连接到controller和方法中的URI...

Spring4.x官方参考文档中文版——第21章 Web MVC框架(27)

21.13.3 关于RequestToViewNameTranslator视图
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring 4.x官方参考文档中文版——第21章 Web MVC框架(8)
举报原因:
原因补充:

(最多只允许输入30个字)