6
回答
使用Springmvc @requestBody注解接收不到ajax的json数据,http 415错误
【腾讯云】校园拼团福利,1核2G服务器10元/月!>>>   
这是pom里面的spring版本号和JSON
<properties> 
  	<!-- spring版本号 --> 
	<spring.version>4.1.3.RELEASE</spring.version>
	<!-- mybatis版本号 -->
	<mybatis.version>3.2.6</mybatis.version>
	<!-- log4j日志文件管理包版本 -->
	<slf4j.version>1.7.7</slf4j.version>
	<log4j.version>1.2.17</log4j.version>	
  </properties>
<!-- 映入JSON -->
	<dependency>
	<groupId>org.codehaus.jackson</groupId>
	<artifactId>jackson-core-asl</artifactId>
	<version>1.9.13</version>
	</dependency>
	<dependency>
	<groupId>org.codehaus.jackson</groupId>
	<artifactId>jackson-mapper-asl</artifactId>
	<version>1.9.13</version>
	</dependency>

这是-servlet配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  
       http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
                        http://www.springframework.org/schema/context  
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd  
                        http://www.springframework.org/schema/mvc  
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
	<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
	<import resource="classpath:spring-mybatis.xml" />
	<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
	<context:annotation-config />
	<mvc:annotation-driven />
	<!-- 自动扫描指定包下的内容 -->
	<context:component-scan base-package="com.zking.controller" />
	<context:component-scan base-package="com.zking.service"/>
	<context:component-scan base-package="com.zking.ajax"/>
	   
	<mvc:resources location="/WEB-INF/css/" mapping="/css/**" />  
	<mvc:resources location="/WEB-INF/img/" mapping="/img/**" />  
	 <!-- 文件上传解析器 id 必须为multipartResolver -->
  	 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    </bean> 
	<!-- 定义跳转的文件的前后缀 ,视图模式配置-->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	
		<!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
		<property name="prefix" value="/WEB-INF/pages/" />
		<property name="suffix" value=".jsp" />
	</bean>

</beans>

这是jsp页面


<script type="text/javascript">
	$(function(){
		$('#click').click(function(){
			var person = JSON.stringify({name: "user1", age: "123"});  
			alert(person);  
			$.ajax({
				type : 'POST', 
				url  : '<c:url value='/ajaxTest'/>',
			   	contentType:'application/json; charset=UTF-8',
			    dataType:'json',
			    data : person,
			    success : function(obj) {
			    	if(obj.status == "success"){
			    		alert(obj.result);
			    	}else{
						alert(obj.result);	    		
			    	}
			    },
				error:function(){
			    	alert("错误。。");   
			    }
			});	
		});
	});
</script>

这是controller



@RequestMapping(value="/ajaxTest",method=RequestMethod.POST,produces="application/json; charset=UTF-8")
	public @ResponseBody JSONResponse ajax(@RequestBody Person person) {
		JSONResponse response =new JSONResponse();
		log.info("-------------进入ajaxTest---------------");
		log.info(person.getName()+person.getAge());
		response.setStatus("success");
		response.setResult("恭喜你,测试成功了!");
		return response;
	}

弄了好久,就是不知道为什么为报415错误,如果不写@requestBody注解,可以进入controller,但是取不到值啊

举报
顶部