`

springmvc与fastjson整合

 
阅读更多

本文主要是进行springmvc与fastjson整合

1.在pom.xml配置fastjson:

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson-version}</version>
</dependency>

 

 

 2.web.xml配置:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/applicationContext.xml</param-value>
    </context-param>


    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/springMVC-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>/index.jsp</welcome-file>
    </welcome-file-list>

    <error-page>
        <error-code>404</error-code>
        <location>/index.jsp</location>
    </error-page>

 3.springMVC-servlet.xml配置:

 <context:component-scan base-package="com.ezubo.global.controller"/>

                <mvc:default-servlet-handler/>
                <mvc:annotation-driven >
                     <mvc:message-converters register-defaults="true">
<!--                            <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>-->
<!--
                            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
-->
                            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                                <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
                                <!-- 转换时设置特性-->
                                <property name="features">
                                    <array>
                                        <!-- 避免默认的循环引用替换-->
                                        <value>DisableCircularReferenceDetect</value>
                                        <value>WriteNullStringAsEmpty</value>
                                        <value>WriteNullNumberAsZero</value>
                                        <value>WriteMapNullValue</value>
                                <!--    <ref bean="DisableCircularReferenceDetect"/>
                                        <ref bean="WriteMapNullValue"/>
                                        <ref bean="WriteNullStringAsEmpty"/>
                                        <ref bean="WriteNullNumberAsZero"/>-->
                                    </array>
                                </property>
                            </bean>
                     </mvc:message-converters>
                </mvc:annotation-driven>

                <mvc:resources mapping="/css/**" location="/css/"/>
                <mvc:resources mapping="/*.html" location="/"/>

                <!-- enum枚举值的引用方法 -->
                <bean id="DisableCircularReferenceDetect" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" >
                    <property name="staticField" value="com.alibaba.fastjson.serializer.SerializerFeature.DisableCircularReferenceDetect"></property>
                </bean>
                <bean id="WriteNullStringAsEmpty" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" >
                    <property name="staticField" value="com.alibaba.fastjson.serializer.SerializerFeature.WriteNullStringAsEmpty"></property>
                </bean>
                <bean id="WriteNullNumberAsZero" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" >
                    <property name="staticField" value="com.alibaba.fastjson.serializer.SerializerFeature.WriteNullNumberAsZero"></property>
                </bean>
                <bean id="WriteMapNullValue" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" >
                    <property name="staticField" value="com.alibaba.fastjson.serializer.SerializerFeature.WriteMapNullValue"></property>
                </bean>

                <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
                     <property name="prefix" value="/WEB-INF/jsp/"/>
                     <property name="suffix" value=".jsp"/>
                </bean>
</beans>

        <!-- fastjson-1.1.41与SpringMVC整合 -->
        <!--
        1)若按照jackson和SpringMVC的整合方式,应按照下面的写法,但测试发现这样会报告"HTTP Status 406"
          The resource identified by this request is only capable of generating responses
          with characteristics not acceptable according to the request "accept" headers.
        2)测试通过的整合方式为上面那样在mvc:annotation-driven里面进行注册
        3)supportedMediaTypes增加[text/html;charset=UTF-8]值,是为了兼容IE6
          否则[application/json]值在IE6中会导致弹出对话框询问是否保存文件,而firefox等高级浏览器会正常打印json字符串
        4)若像下面这样给supportedMediaTypes属性赋两个值[text/html;charset=UTF-8]和[application/json],则[application/json]是无效的
          因为此时应答给浏览器(或者说请求方)的Content-Type头信息都是[text/html;charset=UTF-8],所以给它一个值就行了
          如果给supportedMediaTypes的值为[application/json],则应答给浏览器的Content-Type头信息就是[application/json;charset=UTF-8]
        5)关于features属性,不是serializerFeature,而是features,详见FastJsonHttpMessageConverter.java
          它是用来控制json序列化输出时的一些额外属性,比如说该字段是否输出、输出时key使用单引号还是双引号、key不使用任何引号等等
          QuoteFieldNames===========输出key时是否使用双引号,默认为true
          WriteMapNullValue=========是否输出值为null的字段,默认为false
          WriteNullNumberAsZero=====数值字段如果为null,输出为0,而非null
          WriteNullListAsEmpty======List字段如果为null,输出为[],而非null
          WriteNullStringAsEmpty====字符类型字段如果为null,输出为"",而非null
          WriteNullBooleanAsFalse==Boolean字段如果为null,输出为false,而非null
        6)通常在网上搜到的fastjson和springMVC整合的例子中都像下面注释的代码那样给了两个属性WriteMapNullValue和QuoteFieldNames
          这就表示为json解析器设置QuoteFieldNames和WriteMapNullValue的值为true,即输出时key使用双引号,同时也输出值为null的字段
        7)输出时某字段为String类型,且值为null,此时若需要其输出,且输出值为空字符串,则需同时赋值WriteMapNullValue和WriteNullStringAsEmpty
          经测试,若只赋值WriteNullStringAsEmpty,则不会输出该字段..加上WriteMapNullValue属性后,便输出了,且输出值不是null,而是预期的空字符串
         -->
        <!--
        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
          <property name="messageConverters">
            <list>
              <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                  <list>
                    <value>text/html;charset=UTF-8</value>
                    <value>application/json</value>
                  </list>
                </property>
                <property name="serializerFeature">
                  <array>
                    <value>QuoteFieldNames</value>
                    <value>WriteMapNullValue</value>
                  </array>
                </property>
              </bean>
            </list>
          </property>
        </bean>
         -->
        <!--
        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
          <property name="messageConverters">
            <list>
              <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
              </bean>
            </list>
          </property>
        </bean>
         -->

 4.applicationContext.xml配置

<context:annotation-config/>

 

 

 

分享到:
评论

相关推荐

    SpringMVC+fastjson+Swagger集成示例源码

    在IT行业中,SpringMVC、Fastjson和Swagger是三个非常重要的技术组件,它们分别用于构建Web应用程序、数据序列化和API文档化。本示例源码整合了这三个工具,为开发者提供了一个高效、易用的开发环境。让我们深入探讨...

    springMVC整合FastJson实现RestFul风格API

    本文将详细介绍如何在Spring MVC项目中整合FastJson,实现RESTful风格的API。 首先,我们需要在项目中引入Spring MVC和FastJson的相关依赖。在Maven的pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.spring...

    springMVC整合FastJson实现RestFul风格API涉及jar包

    本教程将详细介绍如何在Spring MVC项目中整合FastJson,以便实现RESTful风格的API。 首先,理解RESTful风格的API至关重要。REST(Representational State Transfer,表述性状态转移)是一种网络应用程序的设计风格...

    spring springmvc mybatis 整合jar包

    spring springmvc mybatis的整合jar包,以及mysql,Junit,fastJson等的jar包,导入这些jar包 搭一个SSM的环境,可以使用SSM框架做一个简单的能够实现增删改查的小项目,具体的jar包及其版本如下 : aopalliance-1.0....

    Spring+SpringMVC+Mybatis整合实现增删改查功能(适合入门学习也可以做脚手架开发)

    1.SpringMVC4.3.16,Mybatis3.2.2,Spring4.3.16三大框架的整合; 2、项目基于Maven做依赖管理 3、前端框架集成了Bootstrap3.3.5,Jquery1.12.3,集成了Bootstrap插件Bootgrid数据表格实现分页,使用Bootstrap的...

    jar包整合:Springmvc+hibernate+Ehcache+shior+mysql+Oracle+fastjson

    标题中的"jar包整合:Springmvc+hibernate+Ehcache+shiro+mysql+Oracle+fastjson"指的是一个综合性的Java项目,它集成了多种技术框架,用于构建高效、可扩展的Web应用。让我们逐一解析这些技术的核心知识点: 1. **...

    spring+springmvc+mybatis项目案例实现用户角色权限管理

    整合FastJson对指定http类型的数据进行转换 整合hibernate.validator校验器对controller接口参数进行校验 使用了springmvc统一异常处理 使用了FormattingConversionServiceFactoryBean对于传入参数中日期或数字字符...

    springmvc-json-lib.rar

    《SpringMVC与JSON库的整合详解》 在现代Web开发中,SpringMVC作为一款强大的MVC框架,被广泛应用于构建企业级的Java应用程序。而JSON作为一种轻量级的数据交换格式,因其易于人阅读和编写,同时也易于机器解析和...

    Spring MVC+FastJson+Swagger集成的完整实例教程

    主要给大家分享介绍了关于Spring MVC+FastJson+Swagger集成的完整实例教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

    Spring MVC+FastJson+hibernate-validator整合的完整实例教程

    主要给大家介绍了关于Spring MVC+FastJson+hibernate-validator整合的完整实例教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

    spring+springMVC+mysql+JSON的jar包整合

    6. **整合过程**:整合这些组件通常涉及以下步骤:配置Spring的ApplicationContext,定义数据源和事务管理器,配置SpringMVC的DispatcherServlet,设置视图解析器,添加JSON解析器的配置,最后在MySQL中创建相应的...

    Spring SpringMVC Mybatis基本使用的jar包

    5. **其他依赖**:例如log4j或slf4j的日志框架,还有可能需要的json解析库(如fastjson、Jackson或Gson),以及对于其他服务的支持(比如邮件服务、任务调度等)。 在实际项目中,这些jar包通常会被组织在一个名为...

    hibernate-validator示例demo

    综上所述,`Hibernate Validator`、`SpringMVC`和`Fastjson`的整合使用能够帮助我们构建出高效、健壮的Web应用,确保数据的准确性和安全性。在实际开发中,理解并熟练运用这些工具将大大提高开发效率和代码质量。

    spring mvc后台管理系统

    简单后台管理系统 基于maven管理,整合最新spring mvc 4.3.3.RELEASE版整合了mybatis 3.4.1,涵盖了目前互联网web系统最流行的组件,log4j2日志、freemarker模板、protostuff序列化、fastjson、redis、spring-data-...

    SSM框架整合.zip

    SSM框架整合指的是Spring、SpringMVC和MyBatis三个开源框架的集成,这在Java Web开发中是非常常见的一种架构模式。Spring作为一个全面的后端服务管理框架,提供了依赖注入和事务管理等功能;SpringMVC作为Spring的...

    SpringMVC-jar包

    "spring整合mybatis-jar包"是指将轻量级持久层框架MyBatis与Spring框架结合使用。Spring通过其强大的依赖注入(DI)功能,可以将MyBatis的SqlSessionFactory或SqlSessionTemplate注入到DAO层,简化数据库操作。这样...

    JAVA SSM整合所需全部jar包

    SSM框架整合是Java开发中常见的技术组合,主要包括Spring、SpringMVC和MyBatis三个核心组件。这些jar包的整合使得开发者能够充分利用各框架的优势,实现高效、灵活的业务逻辑处理。以下将详细讲解这三个框架及其相关...

    ssm +poi + json 整合jar包

    通过整合这些库,开发者可以快速构建出一个功能完善的Java Web应用,能够方便地处理数据、与数据库交互,并提供良好的前端交互体验。这个"ssm +poi + json 整合jar包"就是将这些组件打包在一起,便于开发者直接引入...

    mvc_action:项目中的功能技术点,整合到SpringMVC的示例

    业余时间,整合以前项目技术,创建springMVC示例,目前升级到4.3.13版本,您的宝贵意见,是我们进步的动力。 项目说明 项目基于maven的多profile环境配置,打包时需要选择(test/pro/dev)打包运行的环境。 **项目特点*...

Global site tag (gtag.js) - Google Analytics