HTTP 415错误

网友投稿 973 2022-12-18

HTTP 415错误

HTTP 415错误

前段时间在使用@RequestBody注解的时候遇到了一个以前没遇到过的错误,HTTP 415  Unsupported media type? 这个是个什么鬼,@ResponseBody可以正常工作而一使用@RequestBody来进行交互就会报这个错误。一直请求不到Controller,我开始总以为是路径或者json格式不对的问题,上网查资料大多也说的是这个问题。可是我已经写了

data : JSON.stringify(user),

dataType : 'json',

contentType : 'application/json;charset=UTF-8',

按照网上的办法也一直不管用,百思不得其解。于是继续在网上找资料,

网上分析原因很多,但找了很久都没解决,基本是以下几类:

springmvc添加配置、注解;

pom.xmvAkvKsl添加jackson包引用;

Ajax请求时没有设置Content-Type为application/json 

发送的请求内容不要转成JSON对象,直接发送JSON字符串即可

各种办法都尝试了一遍,还是没有能解决问题;

造了一个简单是数据来测试,还是不行。。

package com-.hnust.controller;

import javax.servlet.httvAkvKsp.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import com-.hnust.domain.User;

import com-.hnust.service.IUserService;

@Controller

@RequestMapping("/user")

public class UserController {

@Autowired

private IUserService userService;

@RequestMapping("/showUser")

public String toIndex(HttpServletRequest request, Model model) {

// int userId = Integer.parseInt(request.getParameter("id"));

// User user = this.userService.getUserById(userId);

// model.addAttribute("user", user);

return "showUser";

}

@RevAkvKsquestMapping(value = "/GetUser", method = RequestMethod.POST)

public @ResponseBody

User GetUser(@RequestBody User user) {

user.setUserName("Wei");

return user;

}

}

控制器也很简单,可是就是请求不到Controller方法。于是我继续在网上寻找资料,直到看到一篇博客,才找到了问题的解决办法。

原来是Jackson的依赖问题,spring3.x和spring4.x是不同的:

spring3.x是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter

spring4.x是org.springframework.http.converter.json.MappingJackson2HttpMessageConverter

具体可以查看spring-web的jar确认,哪个存在用哪个!

在配置ViewResolver的时候应该指定响应的版本,于是我将springmvc的配置文件改为:

class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">

class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">

class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">

class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">

class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">

仅仅将

MappingJacksonJsonView

改为

MappingJackson2JsonView

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:面试时必问的JVM运行时数据区详解
下一篇:使用Spring自定义实现IOC和依赖注入(注解方式)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~