springMVC 和ajax 最先进数据交互方式和 406错误处理

一.引入spring-web-3.2.12.RELEASE.jar, spring-webmvc-3.2.12.RELEASE.jar, jackson-core-asl.jar,jackson-mapper-asl-1.9.3.jar 

二. js采用ajax发送请求和接收数据,数据格式为json

$(document).ready(  
    function() {  
      jQuery.ajax( {  
        type : 'GET',  
        contentType : 'application/json',  
        url : 'user/list',  
        dataType : 'json',  
        success : function(data) {  
          if (data && data.success == "true") {  
            $('#info').html("共" + data.total + "条数据。<br/>");  
            $.each(data.data, function(i, item) {  
              $('#info').append(  
                  "编号:" + item.id + ",姓名:" + item.username  
                      + ",年龄:" + item.age);  
            });  
          }  
        },  
        error : function() {  
          alert("error")  
        }  
      });  
    });


三. controller中是用注解@ResponseBody 可以将结果(一个包含字符串和JavaBean的Map),转换成JSON,

使用 @RequestBody 注解前台只需要向 Controller 提交一段符合格式的 JSON,Spring 会自动将其拼装成 bean。 

@Controller  
@RequestMapping("/user")  
public class DemoController {  
  private Logger logger = LoggerFactory.getLogger(DemoController.class);  
  
  @RequestMapping(value = "/list", method = RequestMethod.GET)  
  @ResponseBody  
  public Map<String, Object> getUserList() {  
    logger.info("列表");  
    List<UserModel> list = new ArrayList<UserModel>();  
    UserModel um = new UserModel();  
    um.setId("1");  
    um.setUsername("sss");  
    um.setAge(222);  
    list.add(um);  
    Map<String, Object> modelMap = new HashMap<String, Object>(3);  
    modelMap.put("total", "1");  
    modelMap.put("data", list);  
    modelMap.put("success", "true");  
    return modelMap;  
  }   
}


如果这种交互方式,报有如下错误:

页面 : http 请求返回错误: 406

后台: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representatio


说明后台返回的json数据格式有误,应在spring xml文件中加上如下代码:

<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
	<property name="messageConverters">
		<list>
		    <ref bean="jacksonMessageConverter"/>
		</list>
	</property>
</bean>


你可能感兴趣的:(springMVC 和ajax 最先进数据交互方式和 406错误处理)