springmvc @requestbody引起的前端415 不支持媒体类型错误

前端代码:

 

提交json数据给控制器

 <form id="form"> 
    <table>
     <tr><td>年龄:</td><td><input name="age" id="age1"></td></tr>
     <tr><td>班级:</td><td><input name="classname" id="classname1"></td></tr>
     <tr><td> </td><td><input type="button" value="提交" id="commit"></td></tr>
    </table>
    </form>
    <script type="text/javascript">
      $(document).ready(function(){
        $("#commit").click(function(){
        var age=$("#age1").val();
         $.ajax({
         url:"sbmt.do",
         type:"POST",
         data: JSON.stringify({"age":age,'className':"一年级"}),
         dataType:"json",
         contentType:"application/json",
         success:function(data){
           alert("成功");
           alert(data.age);
         }, 
         error:function(data){
           alert("失败");
         }
         });
         
        });
      
      })
    </script>

控制器:

RequestMapping(value="/sbmt.do",consumes="application/json",method=RequestMethod.POST)
    @ResponseBody
public String getUserInfo(@RequestBody UserInfo info){
   System.out.println("json提交");
   int age=info.getAge();
   System.out.println("age="+age);

String ss="{\"age\":"+age+"}";
JSONObject json = null;
try {
json = new JSONObject(ss);
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println("json="+json.toString());
return json.toString();
}

UserInfo 为只含age和className的pojo类,

最开始的时候servelt-cfg配置

 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
   <property name="prefix" value="/WEB-INF/jsps/"/>
   <property name="suffix" value=".jsp"/>

   </bean> 

在进入控制器的时候直接抛出415错误,查找了很多资料后发现是json数据解析的时候出错,

修改视图解析器,处理数据

<bean  
        class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">  
        <property name="order" value="1" />  
        <property name="mediaTypes">  
            <map>  
                <entry key="json" value="application/json" />  
                <entry key="xml" value="application/xml" />  
                <entry key="htm" value="text/html" />  
            </map>  
        </property>  
  
      <property name="viewResolvers">
            <list>
                <bean
                    class="org.springframework.web.servlet.view.BeanNameViewResolver" />
                <bean
                    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="prefix" value="/WEB-INF/jsps/" />
                    <property name="suffix" value=".jsp" />
                </bean>
            </list>
        </property>
  
        <property name="defaultViews">  
            <list>  
                <!-- JSON View -->  
                <bean  
                    class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">  
                </bean>  
            </list>  
        </property>  
        <property name="ignoreAcceptHeader" value="true" />  
      

    </bean>  

需要导入jackjson 包:

1.jackson-annotations-2.2.1.jar
2.jackson-core-2.2.1.jar
3.jackson-core-asl-1.8.8.jar
4.jackson-databind-2.2.1.jar
5.jackson-mapper-asl-1.8.8.jar
6.jackson-module-jaxb-annotations-2.2.1.jar


 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值