你的位置:首页 > Java教程

[Java教程]SpringMVC4.0以后版本返回json格式数据问题


第一次写博文写的不好,但希望能帮助大家,有什么偏颇的地方希望大家多多斧正。在这个问题上困扰了我两天,这两天翻来覆去睡不着。一直在想这个问题。废话不多说下面进入正题。

1.创建创建web项目,加入SpringMVC的jar,我这里演示用spring-framework-4.2.3.RELEASE。jar包如下图所示:

2.配置web.

 <?<web-app version="2.5"
            xsi:schemaLocation="http://java.sun.com/    http://java.sun.com/    
    <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:applicationContext.        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

3.配置applicationContext.

<?<beans                 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">   
      <context:component-scan base-package="cn.xugang.."></context:component-scan>
      <mvc:annotation-driven content-negotiation-manager="contentNegotiationManagerFactoryBean"/>
      <mvc:default-servlet-handler/>
      <bean id="contentNegotiationManagerFactoryBean">
              <property name="favorPathExtension" value="false"/>
              <property name="favorParameter" value="false"/>
              <property name="ignoreAcceptHeader" value="false"/>
              <property name="mediaTypes">
                  <map>  
                    <entry key="                    <entry key="json" value="application/json"/>  
                    <entry key="xls" value="application/vnd.ms-excel"/>  
                </map>
              </property>
      </bean>
      <bean id="mappingJacksonHttpMessageConverter">
              <property name="supportedMediaTypes">
                  <list>
                      <value>text/html;charset=UTF-8</value>
                  </list>
              </property>
      </bean>
      <bean id="annotationMethodHandlerAdapter" >
              <property name="messageConverters">
                  <list>
                      <ref bean="mappingJacksonHttpMessageConverter"/>
                  </list>
              </property>
      </bean>
      
      
      <bean >
              <property name="prefix" value="/WEB-INF/jsp/"></property>
              <property name="suffix" value=".jsp"></property>
      </bean>
</beans>

4.配置创建controller,使用@Responsebody注解,指定返回内容。

package cn.xugang.cotroller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.xugang.entity.User;

@Controller
@RequestMapping("/user")
public class UserCotroller {
    @RequestMapping(value="/hello.html",method=RequestMethod.GET )
    public @ResponseBody User hello(){
        User user=new User();
        user.setAge(19);
        user.setName("test");
        return user;
    }
    @RequestMapping(value="/test.html")
    public String test(){
        System.out.println("hello world");
        return "hello";
    }
}
5.发送异步请求。这个由于本人用了Etx.js,就直接用ext.js发送异步请求了。

Ext.onReady(function(){
    Ext.define('User',{
        extend:'Ext.data.Model',
        fields:['name','age'],
    });
    var store=Ext.create('Ext.data.Store',{
        model:'User',
        proxy:{
            type:'ajax',
            url:'/SpringMVC4/user/hello.html',
            reader:{
                type:'json',
                
            }
        }
        
    });
    
    store.load({
        callback:function(records,operation,success){
            if(success){
                var msg=[];
                store.each(function(user){
                    msg.push(user.get('name')+" "+user.get('age'));
                    
                });
                Ext.MessageBox.alert("提示",msg.join("<br>"));
            }
        }
        
        
    });
    var msg=[];
    store.each(function(user){
        msg.push(person.get('name')+" "+user.get('age'));
        
    });
    Ext.MessageBox.alert('提示',msg.join("<br>"));
    
});

6.结果演示

并于applicationContext.

<?<beans                 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">   
      <context:component-scan base-package="cn.xugang.."></context:component-scan>
      <mvc:annotation-driven/>
      <mvc:default-servlet-handler/>
      <bean id="mappingJacksonHttpMessageConverter">
              <property name="supportedMediaTypes">
                  <list>
                      <value>application/json;charset=UTF-8</value>
                  </list>
              </property>
      </bean>
      <bean >
              <property name="prefix" value="/WEB-INF/jsp/"></property>
              <property name="suffix" value=".jsp"></property>
      </bean>
</beans>

最后,希望帖子对大家有用,由于第一次写,很多地方写的不是很好,请大家多多包涵.如大家对上述有疑惑,可以留言。如转载请注明出处。谢谢大家!