Spring的@RequestBody非常牛x,可以将提交的json直接转换成POJO对象。
正好今天有这样的需求,使用一下,结果一直报415,十分头疼。
HTTP 415 错误 – 不支持的媒体类型(Unsupported media type)
我的angularJs是这样写的
$http({method: "POST", url: url; headers: {'Content-type': 'application/json;charset=UTF-8'}, data: scope.$modelValue}) .success(function(data, status) { // success handle code }) .error(function(data, status) { // error handle code });
url与scope.$modelValue都是项目中的代码,在这里占个坑,scope.$modelValue是一个js对象,会被angularJs转换成json字符串,
反复看angularJs的文档,又抓包分析,确认js没有问题。
在网上一查貌似是Spring的问题,有的网友说需要在*-servlet.xml中增加<mvc:annotation-driven />,一看我的项目没加,立刻加上。
当然还需要加上mvc的xml命名空间,否则该配置无法解析。
xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
<mvc:annotation-driven />会自动注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean
AnnotationMethodHandlerAdapter将会初始化7个转换器,可以通过调用 AnnotationMethodHandlerAdapter的getMessageConverts()方法来获取转换器的一个集合 List<HttpMessageConverter>
ByteArrayHttpMessageConverter StringHttpMessageConverter ResourceHttpMessageConverter SourceHttpMessageConverter XmlAwareFormHttpMessageConverter Jaxb2RootElementHttpMessageConverter MappingJacksonHttpMessageConverter
对于json的解析就是通过MappingJacksonHttpMessageConverter转换器完成的。
只添加<mvc:annotation-driven />还不行,需要在classpath环境中能找到Jackson包,用maven配置如下
<dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.8</version> <type>jar</type> <scope>compile</scope> </dependency>
至此问题解决,附上Spring代码
@RequestMapping(value = "/testjson", method = RequestMethod.POST, consumes = "application/json") @ResponseBody public void testJson(@RequestBody JsonInfo jsonInfo, HttpServletRequest request, HttpServletResponse response) { //handle jsonInfo object instance }
从下文得到帮助,对作者表示感谢:)
http://snowolf.iteye.com/blog/1628861
相关推荐
本篇文章将深入探讨如何在Spring MVC中实现JSON格式的数据处理,包括JSON的解析、转换以及使用注解进行配置。 首先,让我们理解JSON的基本概念。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器...
在IT行业中,SpringMVC和JSON是两个非常重要的技术组件,尤其在开发Web应用程序时。SpringMVC作为Spring框架的一部分,提供了强大的模型-视图-控制器(MVC)架构支持,而JSON则是一种轻量级的数据交换格式,常用于...
在这里,`@RequestBody`注解用于将JSON请求体映射到方法参数,而`@ResponseBody`注解则表明方法的返回值应转换为JSON并返回给客户端。 **6. 测试与调试** 创建的SpringMVC应用可以通过发送HTTP请求来测试JSON接口。...
对于请求参数,可以使用`@RequestBody`注解将JSON请求体解析为Java对象。 5. **异常处理**:使用@ControllerAdvice和@ExceptionHandler注解定义全局的异常处理器,为RESTful服务提供统一的错误响应。 **jQuery和...
使用 `@RequestBody` 注解可以接收 JSON 格式的数据,实现 Ajax 交互。 三、文件上传 SpringMVC 提供了文件上传功能,开发者可以轻松地实现文件上传。 3.1 编写客户端表单 在客户端编写表单,使用 `enctype=...
总结一下,在处理Controller方法返回值为简单类型与JSON数据交互时,一般不需要使用@RequestBody注解。可以通过JavaScript的JSON.stringify()方法发送数据给后端,同时在后端,我们可以使用ObjectMapper类将简单类型...
只需在控制器方法的参数上使用`@RequestBody`: ```java @PostMapping("/example") public ResponseEntity<?> handleRequest(@RequestBody MyRequest request) { // 处理请求 return new ResponseEntity...
在实现上述功能时,Spring MVC提供了一些核心组件,如`DispatcherServlet`(负责分发请求)、`ModelAndView`(用于处理模型和视图)、`@Controller`和`@RequestMapping`(映射HTTP请求),以及`@PathVariable`、`@...
在IT行业中,SpringMVC是Java企业级应用开发中广泛使用的Web框架,它极大地简化了构建基于MVC(Model-View-Controller)架构的应用程序。而RESTful风格是一种设计网络应用程序的方法,它强调资源的概念,并通过HTTP...
在SpringMVC中,如果使用@RequestBody注解接收参数时,需要将contentType设置为"application/json;charset=utf-8",否则将无法接收到参数值。例如: ```java @PostMapping("/method2") @ResponseBody @...
使用`@RequestBody`注解接收请求体中的数据: ```java @PostMapping("/users") public User createUser(@RequestBody User user) { // 保存新用户到数据库 return user; } ``` 7. **PUT和DELETE操作** PUT...
3. **使用@RequestBody注解**:在Spring MVC中,可以使用@RequestBody注解来绑定请求体中的JSON数据到方法的参数上。例如,在方法testJson1中,@RequestBody注解将接收到的JSON数据自动绑定到User对象u上。然后,...
在这个例子中,`@RequestBody`注解将请求体转换为User对象,`UserService`处理业务逻辑,最后使用`ResponseEntity`返回HTTP响应,包括状态码和创建的用户信息。 在实际应用中,你还需要配置数据库连接,比如使用...
这里的`@RequestBody`和`@ResponseBody`注解分别用于将HTTP请求体转换为方法参数和将方法返回值转化为HTTP响应体。 2. **定义Ajax请求**:在前端,使用JavaScript或jQuery库来发送Ajax请求。jQuery简化了Ajax操作,...
6. **JSON序列化和反序列化**:Spring MVC默认使用Jackson库处理JSON数据的序列化和反序列化。`@RequestBody`用于将请求体转换为Java对象,`@ResponseBody`用于将Java对象转换为HTTP响应体。 7. **错误处理**:为了...
Spring MVC和Ajax是Web开发中的两个重要技术,它们在构建动态、交互性强的网页应用时起着关键作用。Spring MVC是Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构来组织和处理HTTP请求,而Ajax...
当Ajax请求不需要提交表单数据时,可以使用Spring MVC的注解如`@GetMapping`、`@PostMapping`等来处理请求。在前端,你可以使用jQuery的`$.ajax()`或者`$.getJSON()`等方法发起请求。在后端,Controller中的方法...
在处理这些参数时,Spring MVC会自动进行编码和解码,但需要注意的是,如果你在请求体中使用非英文字符,确保客户端和服务器都使用一致的字符集,否则仍然可能出现编码问题。 总结来说,Spring MVC中处理Controller...