`

springmvc之HttpMessageConverter<T>接口 .

 
阅读更多

来源:http://blog.csdn.net/flashflight/article/details/13511679

 

spring从3.0开始提供一个HttpMessageConverter<T>接口,这个接口相当有用,spring可以针对Http报文头的ContentType来调用该类的默认实现类将HttpServletRequest转化成各种对象,如String,MultiValueMap,BufferedImage等类型,所以在做验证码或者上传文件时特别有用。spring默认加载该接口的四个默认实现类:StringHttpMessageConverter,ByteArrayHttpMessageConverter,SourceHttpMessageConverter,XmlAwareFormHttpMessageConverter.其余的例如处理json数据的默认类需要手动配置,具体配置例如:

            <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" p:messageConverters-ref="messageConverters"/>

           <util:list id="messageConverters">

                  <bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter" />

           </util:list>

          *这里用到了p命名空间,具体资料可以自己查阅

 

 

<bean id="stringHttpMessageConverter"
  class="org.springframework.http.converter.StringHttpMessageConverter">
  <property name="supportedMediaTypes">
   <list>
    <value>${html.contentType}</value>
   </list>
  </property>
 </bean>
 <bean id="byteArrayHttpMessageConverter"
  class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
 <bean id="resourceHttpMessageConverter"
  class="org.springframework.http.converter.ResourceHttpMessageConverter" />
 <bean id="sourceHttpMessageConverter"
  class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
 <bean id="allEncompassingFormHttpMessageConverter"
  class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter" />

 <bean id="mappingJacksonHttpMessageConverter"
  class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
  <property name="objectMapper">
   <bean class="org.codehaus.jackson.map.ObjectMapper">
    <property name="serializationInclusion" value="NON_NULL" />
    <property name="propertyNamingStrategy">
     <bean
      class="com.ita.kernel.strategy.UseFieldNameStrategy" />
    </property>
   </bean>
  </property>
 </bean>

 <bean
  class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
  <property name="synchronizeOnSession" value="true" />
  <property name="messageConverters">
   <list>
    <ref bean="stringHttpMessageConverter" />
    <ref bean="byteArrayHttpMessageConverter" />
    <ref bean="mappingJacksonHttpMessageConverter" />
    <ref bean="resourceHttpMessageConverter" />
    <ref bean="sourceHttpMessageConverter" />
    <ref bean="allEncompassingFormHttpMessageConverter" />
   </list>
  </property>
 </bean>

项目中spring-mvn有如上的配置,一直不是很清楚为什么这么配置??

分享到:
评论

相关推荐

    druid-1.0.11.jar

    javaee/javaweb常用jar包,亲测可用,导入到java工程中即可使用

    xmpcore-5.1.2.jar

    javaee/javaweb常用jar包,亲测可用,导入到java工程中即可使用

    node-v4.6.2-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v6.2.0-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    ECharts-2.2.7.jar

    javaee/javaweb常用jar包,亲测可用,导入到java工程中即可使用

    validation-api-1.1.0.Final.jar

    javaee/javaweb常用jar包,亲测可用,导入到java工程中即可使用

    node-v0.10.47-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    华中科技大学 计算机学科学与技术学院 实验资料 课程设计-大数据导论-内含源码和说明书(可自己修改).zip

    本项目是课程设计课程实验的demo,内含源码和说明书,可以自己修改

    循环小组作业.cpp

    循环小组作业.cpp

    哈工大(威海)编译原理课程实验的程序-内含源码和说明书(可自己修改).zip

    本项目是课程设计课程实验的demo,内含源码和说明书,可以自己修改

    grpcio-1.14.0-cp36-cp36m-manylinux1_i686.whl

    Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    skywalking-springmvc-1.0-SNAPSHOT.war

    # 分布式链路追踪_skywalking_学习(1)

    jiguang-common-1.0.8.jar

    javaee/javaweb常用jar包,亲测可用,导入到java工程中即可使用

    基于matlab实现文档+程序NSGA-II多目标优化的matlab代码.rar

    基于matlab实现文档+程序NSGA-II多目标优化的matlab代码.rar

    node-v10.15.0-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    AspectJ Java方面的集合,以促进面向方面的编程模式、日志记录、缓存验证等.zip

    AspectJ Java方面的集合,以促进面向方面的编程模式、日志记录、缓存验证等

    linux常用命令大全

    linux常用命令大全

    期末考试.py

    期末考试.py

    解密制度用python举例.md

    解密制度通常需要结合加密算法和密钥管理方法来确保解密操作的安全性和有效性

    node-v10.22.0-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics