ResponseBody响应json数据

  1. DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而不能被使用。解决问题就是需要配置静态资源不进行拦截,在springmvc.xml配置文件添加如下配置
    1. mvc:resources标签配置不过滤
      1. location元素表示webapp目录下的包下的所有文件
      2. mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b
      	
      	<mvc:resources location="/css/" mapping="/css/**"/> 
      	<mvc:resources location="/images/" mapping="/images/**"/> 
      	<mvc:resources location="/js/" mapping="/js/**"/> 
      
  2. 使用@RequestBody获取请求体数据
// 页面加载
$(function(){
	// 绑定点击事件
	$("#btn").click(function(){
		$.ajax({
			url:"user/testJson",
			contentType:"application/json;charset=UTF-8",
			data:'{"addressName":"aa","addressNum":100}',
			dataType:"json",
			type:"post",
			success:function(data){
				alert(data);
				alert(data.addressName);
			}
		});
	});
});
/** 
* 获取请求体的数据
* @param body
*/
@RequestMapping("/testJson")
public void testJson(@RequestBody String body) {
	System.out.println(body);
}
  1. 使用@RequestBody注解把json的字符串转换成JavaBean的对象
// 页面加载
$(function(){
	// 绑定点击事件
	$("#btn").click(function(){
		$.ajax({
			url:"user/testJson",
			contentType:"application/json;charset=UTF-8",
			data:'{"addressName":"aa","addressNum":100}',
			dataType:"json",
			type:"post",
			success:function(data){
				alert(data);
				alert(data.addressName);
			}
		});
	});
});
/**
* 获取请求体的数据
* @param body
*/
@RequestMapping("/testJson")
public void testJson(@RequestBody Address address) {
	System.out.println(address);
}
  1. 使用@ResponseBody注解把JavaBean对象转换成json字符串,直接响应

    1. 要求方法需要返回JavaBean的对象
    // 页面加载
    $(function(){
    	// 绑定点击事件
    	$("#btn").click(function(){
    			$.ajax({
    			url:"user/testJson",
    			contentType:"application/json;charset=UTF-8",
    			data:'{"addressName":"哈哈","addressNum":100}',
    			dataType:"json",
    			type:"post",
    			success:function(data){
    				alert(data);
    				alert(data.addressName);
    			}
    		});
    	});
    });
    
    @RequestMapping("/testJson")
    public @ResponseBody Address testJson(@RequestBody Address address) {
    	System.out.println(address);
    	address.setAddressName("上海");
    	return address;
    }
    
    
  2. json字符串和JavaBean对象互相转换的过程中,需要使用jackson的jar包

<dependency>
	<groupId>com.fasterxml.jackson.coregroupId>
	<artifactId>jackson-databindartifactId>
	<version>2.9.0version>
dependency>
<dependency>
	<groupId>com.fasterxml.jackson.coregroupId>
	<artifactId>jackson-coreartifactId>
	<version>2.9.0version>
dependency>
<dependency>
	<groupId>com.fasterxml.jackson.coregroupId>
	<artifactId>jackson-annotationsartifactId>
	<version>2.9.0version>
dependency>

你可能感兴趣的:(专题)