`

SpringMVC 3.x @ResponseBody 415错误处理

 
阅读更多
<!-- 配置SpringMVC @ResponseBody和@RequestBody注解 -->
	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="jsonHttpMessageConverter" />
			</list>
		</property>
	</bean>

	<bean id="jsonHttpMessageConverter"
		class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>application/json;charset=UTF-8</value>
			</list>
		</property>
	</bean>


配置好之后,使用@RequestBody尝试转换json为Javabean,有时会返回HTTP错误码415 Unsupported media type,把log改为debug,Spring并没有给出有用信息。网上有些说法是修改HttpRequest头的Accept和Content-type,无效。经过代码追踪发现,其实是实现转换的Jackson包抛出异常,而Spring拦截了该异常,错误信息丢失……

一般来说Json的每种数据,都有相应的Java类型,Jackson无法进行转换通常有两个原因:
1.Javabean没有实现无参数的构造方法。
2.Javabean无法序列化,有可能是定义Javabean的是内部类……
3.Javabean使用了泛型,虽然Jackson支持泛型但是@RequestBody不支持输入泛型类型参数,所以不要在Javabean上使用泛型……

解决以上两个问题,再也不报415了。
分享到:
评论
2 楼 redrunner 2012-12-26  
分析的得很好,有帮助
1 楼 showyourshadow 2012-10-17  
如果是使用jquery调用post,可先用
    $.ajaxSetup({  
        contentType : 'application/json' 
    }); 

设置为json提交格式,否则,也会报http 425错误。

相关推荐

    基于注解的spring3+hibernate3的springMVC框架

    综上所述,这个项目展示了如何利用Spring 3.x的注解配置,配合Hibernate 3.x进行持久化操作,并通过SpringMVC处理HTTP请求,构建一个高效、灵活的企业级应用。通过深入理解这些框架和注解的用法,开发者能够更有效地...

    springmvc 3.2.8 restful支持

    8. **异常处理**:Spring MVC提供了全局异常处理机制,通过`@ControllerAdvice`和`@ExceptionHandler`注解,可以集中处理异常并返回自定义的错误响应。 在实际开发中,结合以上知识,我们可以构建一个完整的RESTful...

    SpringMVC中使用JSON传递数据时用的jar包

    6. **错误处理**:在处理JSON数据时,可能出现解析错误,如JSON格式不正确等。Spring MVC提供了`@ExceptionHandler`注解来处理这些异常,你可以自定义异常类,并在Controller中捕获并返回友好的错误信息。 7. **...

    springmvc返回json用到的jar包

    7. **错误处理**: - 当JSON序列化或反序列化过程中出现错误时,Spring MVC会抛出异常。通常,你可以通过自定义异常处理器(如`@ControllerAdvice`和`@ExceptionHandler`)来捕获并优雅地处理这些错误。 8. **其他...

    springMVC整合FastJson实现RestFul风格API涉及jar包

    - **错误处理**:在处理JSON序列化和反序列化异常时,应捕获`JSONException`并给出适当的错误响应。 - **安全性考虑**:FastJson存在一些安全问题,如不合理的配置可能导致DoS攻击。因此,在生产环境中务必关注...

    Spring MVC返回JSON数据 用到的jar包

    - **类型安全**:在处理JSON数据时,确保Java对象的属性与JSON字段匹配,避免出现序列化或反序列化错误。 - **定制序列化/反序列化**:通过使用`@JsonAutoDetect`、`@JsonProperty`、`@JsonIgnore`等注解,可以...

    jackson-core-asl-1.9.13+jackson-mapper-asl-1.9.13jar包.

    在开发基于Spring MVC的Web应用时,我们常常会遇到数据传输的问题,特别是在处理RESTful API时,使用`@ResponseBody`注解将Java对象转换为JSON格式返回给客户端。然而,有时候这种转换过程中可能会出现错误,比如...

    Spring MVC 3.0实战指南.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7...

    IE8+SpringMVC文件上传防止JSON下载

    在使用IE8浏览器配合SpringMVC框架进行文件上传的过程中,可能会遇到一个问题,即在上传文件时,服务器返回的JSON数据被浏览器误处理为需要下载的文件,而不是直接在页面上显示JSON内容。这种情况通常是由于浏览器的...

    解决angular的post请求后SpringMVC后台接收不到参数值问题的方法

    // 处理错误响应 }); ``` 通过以上两个步骤,你应该能成功地让SpringMVC后台接收到AngularJS的POST请求参数。如果问题仍然存在,可能需要检查其他可能的影响因素,如跨域设置(CORS)、拦截器配置等。确保前后端...

    volley图片上传服务端

    4. **错误处理**:处理可能出现的异常,如文件大小限制、文件类型检查等,返回错误码和错误信息。 5. **安全性考虑**:服务端应确保上传安全,避免XSS和CSRF攻击,可以通过验证令牌或设置过滤规则实现。 6. **性能...

    js+springMVC 提交数组数据到后台的实例

    然后配置了请求的URL为"/user/downReport",该URL映射到后端SpringMVC的处理方法。请求类型为POST,表示发送一个请求,请求体中包含了我们想要提交的数组。在data对象中,我们用键downReportArray指代了要提交的数组...

    在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法

    在SSM(Spring、SpringMVC、MyBatis)框架整合中,当使用LayUI的拖拽图片上传功能,若前端页面和后台接口不在同一个源下,就会出现这种问题。 在前端,LayUI的图片上传组件通过JavaScript的`layui.upload`方法实现...

Global site tag (gtag.js) - Google Analytics