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来把返回的对象转换成一个响应主体。如需了解关于转换器的更多信息,见前面的”消息转换器”这一章节。


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

相关文章推荐

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

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

7、Spring MVC 之 处理异步请求

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

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

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

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

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

21.3 实现Controller控制器

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

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

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

Spring MVC框架介绍、Spring MVC特点

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

DispatcherServlet原理、DispatcherServlet配置

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

地区(locale)的使用

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

21.13.2 ModelMap模型(ModelAndView)

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

Spring MVC异步请求处理介绍,异步请求处理原理,处理顺序,异步请求的异常处理,拦截异步请求
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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