在spring-mvc.xml中添加如下配置

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
        <property name="cacheSeconds" value="0" />  
        <!-- 配置一下对json数据的转换 -->  
        <property name="messageConverters">  
            <list>  
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>  
            </list>  
        </property>
    </bean>  

lib中添加 jackson-all-1.7.6.jar

或者添加如下配置

<mvc:annotation-driven/>

<mvc:annotation-driven />网上解释:

<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。
并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。
后面,我们处理响应ajax请求时,就使用到了对json的支持。
后面,对action写JUnit单元测试时,要从spring IOC容器中取DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,来完成测试,取的时候要知道是<mvc:annotation-driven />这一句注册的这两个bean。

 

在spring context中注册了RequestMappingHandlerMapping,RequestMappingHandlerAdapter,ExceptionHandlerExceptionResolver三个类

 

 

测试:

        @RequestMapping("/index")
        @ResponseBody
        public Map index(String username) {
            System.out.println(username);
            
            //test return list format
//            ArrayList list = new ArrayList();
//            list.add("value1");
//            list.add("value2");
//            return list;
            
            //test return map
            Map map = new HashMap();
            map.put("key", "value");
            return map;
            
            //return "index";
        }

返回数据:

{"key":"value"}