0 0

@RequestBody 错误415问题20

js代码:

function register(){
	var user=$('#r_user').val();
	var psw=$('#r_psw').val();
	var sex=$('#sex').val();
	var userbean={username:user,userpsw:psw,sex:sex};
	$.ajax({
        type: "POST",
        contentType : "application/json ; charset=utf-8",
        url:"/mangascript/controller/register.do",
        data:userbean,
        dataType: "json",
        async: false,
        success:function(data){
        	alert("..");
        }
	 });
}

 controller代码:

@Controller
@RequestMapping(value = "/controller")
public class RegisterController {
	@Autowired
	RegisterService registerservice;	
	@RequestMapping(method=RequestMethod.POST ,value = "/register.do", produces="application/json")
		public void register(@RequestBody UserBean userbean){  

			 registerservice.save(userbean);
		     return;  
		    }  
	}

 xml配置:

<?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:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<!-- ViewResolver -->  
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>  
	<property name="prefix" value="/WEB-INF/jsp/"/>  
	<property name="suffix" value=".jsp"/>  
</bean> 
    
    <!--Spring3.1开始的注解 HandlerMapping -->  
    <bean   
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>  
    <!--Spring3.1开始的注解 HandlerAdapter -->  
    <bean  
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>  
 
    <mvc:annotation-driven />
    
	<!-- 处理器 -->  
	<bean class="test.TestController"/>

	<bean class="controller.RegisterController"/>
	<!-- jackson配置 -->
	<bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
        <list>
            <ref bean="mappingJacksonHttpMessageConverter" />
        </list>
        </property>
    </bean>  
    <bean id="mappingJacksonHttpMessageConverter"  
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />   
</beans>

 引入了jackson-annotations-2.4.1.jar、jackson-core-2.4.1.jar、jackson-databind-2.4.1.jar几个包

网上能用的方法都找过了,我没有用maven,只用了springmvc,希望能有人解决我的问题


问题补充:我是新手,还请解释详细一点

问题补充:刚才有了解决办法,其实也不算解决,我在controller里面用@Requestparam代替了@Requestbody就正常了,虽然不理解这是为什么,正在查询中.. 
2014年12月22日 16:53

7个答案 按时间排序 按投票排序

0 0

感谢分享 

2017年6月01日 14:37
0 0

楼主你可帮了我大忙了,我也是没有使用maven,但是照你贴的代码修改了下@RequestBody就可以了!哎,你要是新手,我就是新新手了

2015年9月18日 16:38
0 0

1、看属性是不是完全对应,属性不一致也会报错
2、配置 参考
    <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" />  
    <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">  
        <property name="favorPathExtension" value="false" /> 
        <property name="favorParameter" value="false" />  
        <property name="ignoreAcceptHeader" value="false" />  
        <property name="mediaTypes" >  
            <value> 
                atom=application/atom+xml 
                html=text/html 
                json=application/json 
                *=*/* 
            </value>  
        </property> 
    </bean>   

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
    <bean 
        class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
        <property name="order" value="1" /> 
        <property name="favorParameter" value="false" /> 
        <property name="ignoreAcceptHeader" value="true" /> 
 
        <property name="defaultContentType" value="text/html" /> 
 
        <property name="mediaTypes"> 
            <map> 
                <entry key="html" value="text/html" /> <!--真正静态页面,使用htm后缀(文件格式)  -->
                <entry key="json" value="application/json" /> 
            </map> 
        </property> 
        <property name="viewResolvers"> 
            <list> 
                <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" /> 
                <!--                页面请求时先找此配置,无的话再找jsp的视图配置   -->

                  
                <bean 
                    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
                    <property name="viewClass"   value="org.springframework.web.servlet.view.JstlView" /> 
                    <property name="prefix" value="" /> 
                    <property name="suffix" value=".jsp" /> 
                </bean>  
            </list> 
        </property> 
        <!--        view 接口 下的视图解析对象   -->
        <property name="defaultViews"> 
            <list> 
                <bean 
                    class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />  
            </list> 
        </property> 
    </bean>
    <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
        <property name="supportedMediaTypes"> 
            <list> 
                <value>text/html</value> 
                <value>application/json</value> 
                <value>application/x-www-form-urlencoded</value> 
            </list> 
        </property> 
    </bean>

2014年12月26日 11:01
0 0

直接传json对象是错误的,应该传json字符串.如下:
data:JSON.stringify(userbean)

2014年12月26日 09:56
0 0

将这一行去掉就行了,    <mvc:annotation-driven /> 

2014年12月25日 18:30
0 0

楼主还是要把完整的错误信息列出来才是啊,先给个我学习用的所有jar包吧,看看能不能有所帮助。

spring-webmvc-3.1.1.RELEASE.jar
spring-asm-3.1.1.RELEASE.jar
spring-beans-3.1.1.RELEASE.jar
spring-context-3.1.1.RELEASE.jar
spring-aop-3.1.1.RELEASE.jar
spring-context-support-3.1.1.RELEASE.jar
spring-core-3.1.1.RELEASE.jar
commons-logging-1.1.1.jar
spring-expression-3.1.1.RELEASE.jar
spring-web-3.1.1.RELEASE.jar
aopalliance-1.0.jar
jackson-mapper-asl-1.9.1.jar
jackson-core-asl-1.9.1.jar
jstl-1.2.jar
servlet-api-2.4.jar
hamcrest-core-1.3.jar

2014年12月23日 16:36
0 0

data:userbean改成 data:JSON.stringify(userbean),试试

2014年12月23日 13:21

相关推荐

    Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable

    此外,还需要注意异常处理,比如当`@RequestBody`无法将请求体反序列化时,或者`@ResponseBody`转换失败时,需要有合适的错误处理机制。 通过阅读源码,我们可以深入了解Spring是如何管理这些注解的,以及...

    解读@RequestBody的正确使用方法

    然而,如果不正确地使用 `@RequestBody`,可能会导致错误或不期望的行为。以下是对 `@RequestBody` 正确使用方法的详细解读。 1. **`@RequestBody` 的作用** `@RequestBody` 注解用于告诉Spring MVC框架,将请求体...

    详解使用@RequestBody取POST方式的json字符串

    如果没有这个依赖,服务器可能会返回415错误(Unsupported Media Type),提示不支持`'application/json;charset=UTF-8'`的内容类型。 总结来说,`@RequestBody`是Spring MVC中处理POST请求JSON数据的关键工具。它...

    SpringMVC restful 注解之@RequestBody进行json与object转换

    然而,在尝试使用`@RequestBody`注解并调用服务时遇到了问题。开发者首先怀疑可能是Spring没有正确加载`MappingJackson2HttpMessageConverter`,或者加载后没有正常工作。为了验证这个假设,他们尝试自定义配置以...

    详解SpringMVC @RequestBody接收Json对象字符串

    本文主要介绍如何在SpringMVC中使用@RequestBody注解来接收JSON对象字符串。 首先,前端页面向服务器发送数据通常有两种格式:form格式和JSON格式。Form格式提交的数据通常由键值对组成,其格式通常为k=v&k=v,这种...

    Spring源码学习十一:SpringMVC-@RequestBody接收json数据报4151

    在Spring MVC中,`@RequestBody` 注解用于接收HTTP请求体中的JSON或其他格式的数据,并将其自动绑定到控制器方法的参数上。然而,在实际开发中,可能会遇到“415 Unsupported Media Type”错误,这意味着服务器无法...

    RequestBody报400分析与解决方案.docx

    然而,在某些情况下,我们可能会遇到 RequestBody 报 400 错误的问题。这个错误是由于客户端的问题,具体来说,是由于前端参数变化导致的。 分析 在分析这个问题时,我们可以根据 400 响应码初步分析得知,这是一...

    Http请求传参SpringMVC接收参数详细解析

    问题1:前端若未设置`contentType: application/json`,服务器会返回415错误,表示不支持的媒体类型。 问题2:前端参数未转换为JSON格式,会导致403错误。需使用`JSON.stringify()`将JavaScript对象转化为JSON字符串...

    【ASP.NET编程知识】ASP.NET Core读取Request.Body的正确方法.docx

    许多开发者在读取 Request.Body 时都会遇到一些问题,本文将详细介绍读取 Request.Body 的正确方法。 首先,在 ASP.NET Core 中,Request.Body 是一个 Stream 对象,它不能被直接读取。我们需要使用 StreamReader ...

    Spring Cloud如何使用Feign构造多参数的请求

    t", method = RequestMethod.POST) public User post(@RequestBody User user);}如上所示,使用@RequestBody注解,Feign会将User对象序列化成JSON格式,并作为请求体发送出去。注意,这里的User对象需要与服务提供者...

    http post 415错误的解决方法

    为了解决这个问题,确保在处理JSON数据的控制器方法参数前加上`@RequestBody`注解。同时,确保客户端(如前端应用)正确设置了Content-Type为"application/json"。例如,在使用jQuery或Axios发送POST请求时,应设置`...

    扩展SpringMVC以支持绑定JSON格式的请求参数

    当我们在控制器方法的参数前添加`@RequestBody`时,Spring MVC会调用一个名为`HttpMessageConverter`的策略接口的实现来解析请求体。默认情况下,Spring MVC提供了一些内置的`HttpMessageConverter`,例如`...

    spring mvc 使用jquery 传json值给Controller时需要解决的问题

    在Spring MVC中,Controller的方法参数需要是`@RequestBody`注解的,这样Spring MVC会尝试将接收到的JSON数据转化为Java对象。 2. **Content-Type设置** 要使JSON数据被正确处理,必须设置HTTP请求的`Content-...

    validated和valid校验注解用法示例代码

    public ResponseEntity&lt;?&gt; updateUser(@RequestBody @Validated({UpdateInfo.class}) User user) { // ... 更新逻辑 } ``` 在这个例子中,注册用户时会检查username和age,而更新用户信息时只会检查age。 在实际...

    spring mvc json学习

    在控制器(Controller)中,我们可以使用`@RequestBody`和`@ResponseBody`注解来处理JSON请求和响应。`@RequestBody`用于将HTTP请求体中的JSON数据映射到方法参数,而`@ResponseBody`则将方法返回的对象转换为JSON...

    Android-Retrofit2文件上传及其进度显示

    RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file); MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody); ``` 现在我们已经准备...

    springboot WebService的一个例子

    在这个例子中,`@RequestBody`注解将请求体中的JSON转换为`User`对象,而`@ResponseBody`则将方法返回的对象转换为JSON响应。 对于更复杂的服务,可能需要使用Spring的`@Autowired`注解注入服务层或者DAO层的实例,...

    17axios踩坑笔记1

    例如,创建一个与前端发送数据结构匹配的Java对象,如`User`,然后在接口方法中声明`@RequestBody User user`。这样,Spring会自动将接收到的JSON数据映射到`User`对象中。在实际操作中,可以在断点处检查数据是否...

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

    3. **JSON序列化与反序列化**:在Spring MVC中,你可以通过使用`@RequestBody`和`@ResponseBody`注解来实现JSON数据的传递。`@RequestBody`用于将HTTP请求体中的JSON数据转换为Java对象,而`@ResponseBody`则将方法...

    Spring restful Json

    在这个例子中,`/api/users`是服务的根路径,`@PostMapping`表示处理POST请求,`@RequestBody`将JSON数据转换为User对象,然后调用`userService`来保存用户,最后返回创建成功的HTTP响应。 在实际项目中,你可能还...

Global site tag (gtag.js) - Google Analytics