前几天写了一个spring3mvc处理xml、json数据的例子,json调试成功了,但xml数据处理总是报415错误,请各位看看什么原因,谢谢!
执行HelloWorldControllerTest后,调试信息如下,报415 (Unsupported Media Type)错误,感觉前端还是没有解析出xml数据:
2014-05-07 10:12:38 DEBUG [HttpAccessor.java:78] org.springframework.web.client.RestTemplate.createRequest() - Created POST request for "http://localhost:8090/spring/handle51.html"
2014-05-07 10:12:38 DEBUG [RestTemplate.java:579] org.springframework.web.client.RestTemplate.doWithRequest() - Setting request Accept header to [application/json, application/xml, application/*+json, text/xml, application/json, application/*+xml, application/*+json]
2014-05-07 10:12:38 DEBUG [RestTemplate.java:653] org.springframework.web.client.RestTemplate.doWithRequest() - Writing [com.jshbank.springmvc.model.TUser@796e1c] as "application/xml" using [org.springframework.http.converter.xml.MarshallingHttpMessageConverter@2c03ff]
2014-05-07 10:12:39 WARN [RestTemplate.java:529] org.springframework.web.client.RestTemplate.handleResponseError() - POST request for "http://localhost:8090/spring/handle51.html" resulted in 415 (Unsupported Media Type); invoking error handler
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
<!-- 默认扫描的包路径 -->
<context:component-scan base-package="com.jshbank.springmvc" />
<!-- 添加注解驱动 -->
<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
xml=application/xml
*=*/*
</value>
</property>
</bean>
<!-- 定义一个DefaultAnnotationHandlerMapping处理器映射,启动Spring MVC的注解功能,完成请求和注解POJO的映射,类级别的处理器映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<!-- 定义一个AnnotationMethodHandlerAdapter,完成请求和注解POJO的映射,方法级别的处理器映射-->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"
p:messageConverters-ref="messageConverters"/>
<util:list id="messageConverters">
<bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
<!-- 解析xml请求数据,将xml转换为java对象-->
<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"
p:supportedMediaTypes="application/xml"
p:marshaller-ref="xmlMarshaller"
p:unmarshaller-ref="xmlMarshaller"/>
</util:list>
<bean id="xmlMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="autodetectAnnotations" value="true"/>
<property name="streamDriver">
<bean class="com.thoughtworks.xstream.io.xml.StaxDriver"/>
</property>
<property name="annotatedClasses">
<list>
<value>com.jshbank.springmvc.model.TUser</value>
</list>
</property>
</bean>
<!-- 定义跳转的文件的前后缀 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/view/"
p:suffix=".jsp" />
</beans>
public ResponseEntity<TUser> handler51(HttpEntity<TUser> requestEntity){
TUser user=requestEntity.getBody();
user.setId(1000);
return new ResponseEntity<TUser>(user,HttpStatus.OK);
}
package com.jshbank.springmvc.web;
import java.io.IOException;
import java.util.Collections;
import junit.framework.Assert;
import org.junit.Test;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter;
import org.springframework.http.converter.xml.MarshallingHttpMessageConverter;
import org.springframework.oxm.xstream.XStreamMarshaller;
import org.springframework.web.client.RestTemplate;
import com.jshbank.springmvc.model.TUser;
import com.thoughtworks.xstream.io.xml.StaxDriver;
public class HelloWorldControllerTest {
@Test
public void testhandle51() throws IOException{
RestTemplate restTemplate=buildRestTemplate();
TUser user=new TUser();
user.setName("li");
user.setPassword("123");
user.setAge(85);
HttpHeaders entityHeaders=new HttpHeaders();
entityHeaders.setContentType(MediaType.valueOf("application/xml"));
entityHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_XML));
HttpEntity<TUser> requestEntity=new HttpEntity<TUser>(user, entityHeaders);
ResponseEntity<TUser> responseEntity=restTemplate.exchange("http://localhost:8090/spring/handle51.html", HttpMethod.POST, requestEntity, TUser.class);
TUser responseUser=responseEntity.getBody();
Assert.assertEquals(1000, responseUser.getId().intValue());
Assert.assertEquals("li", responseUser.getName());
Assert.assertEquals("123", responseUser.getPassword());
}
private RestTemplate buildRestTemplate(){
RestTemplate restTemplate=new RestTemplate();
XStreamMarshaller xmlMarshaller=new XStreamMarshaller();
xmlMarshaller.setStreamDriver(new StaxDriver());
xmlMarshaller.setAnnotatedClasses(new Class[]{TUser.class});
MarshallingHttpMessageConverter xmlConverter=new MarshallingHttpMessageConverter();
xmlConverter.setMarshaller(xmlMarshaller);
xmlConverter.setUnmarshaller(xmlMarshaller);
restTemplate.getMessageConverters().add(xmlConverter);
MappingJacksonHttpMessageConverter jsonConverter=new MappingJacksonHttpMessageConverter();
restTemplate.getMessageConverters().add(jsonConverter);
return restTemplate;
}
}
相关推荐
spring-mvc.xml资源下载,本xml为springmvc最纯净版xml!
1. **spring-mvc.xml**: 这是Spring MVC框架的核心配置文件,用于设置DispatcherServlet的行为,管理控制器(Controller)、视图解析器(View Resolver)、数据绑定器(DataBinder)等组件。例如,它会定义bean,如...
Spring3 MVC提供了一种分离关注点的方式,让开发者可以独立地处理业务逻辑、数据访问和用户界面。它通过DispatcherServlet作为前端控制器,接收HTTP请求,并根据配置将请求分发到相应的处理器。此外,它还支持多种...
Spring3MVC是Spring框架的一个重要模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构支持。这个框架使得开发者可以更轻松地处理HTTP请求、数据绑定、验证以及视图渲染等任务。在"spring3MVC框架demo"中,...
这个入门教程将涵盖XML配置和注解配置两种方式,帮助初学者理解如何在Spring MVC中搭建基本的"Hello, World!"应用。 首先,我们从XML配置开始。在Spring MVC中,`DispatcherServlet`是入口点,它负责分发HTTP请求到...
在Spring MVC框架中,开发人员经常需要处理不同的数据交换格式,如XML和JSON,以便与客户端进行交互。这两种格式在Web应用中广泛用于传输数据,因为它们轻量级且易于解析。下面我们将深入探讨如何在Spring MVC中生成...
config.properties:数据库配置文件 log4j.properties:mybatis日志文件 spring-mvc.xml:spring-MVC配置文件 spring-mybatis.xml:mybatis的配置文件 spring.xml
Spring MVC是Spring框架的一部分,它提供了模型-视图-控制器(MVC)架构模式的实现,用于处理Web应用的请求和响应。MyBatis则是一个轻量级的持久层框架,它将SQL语句与Java代码分离,通过XML或注解来配置和映射原生...
除此之外,Spring MVC还支持数据绑定、验证、本地化、主题、异常处理等功能。例如,使用@ModelAttribute注解可以将请求参数绑定到Controller方法的参数上,@Valid用于进行数据验证,Validator接口可以自定义验证逻辑...
数据验证也是Web开发中的一个重要环节,Spring Web MVC提供了声明式的数据验证支持,它内置了多种验证约束和注解,帮助开发者在数据处理前进行校验,并提供了灵活的错误消息处理机制。 在视图解析方面,Spring Web ...
配置Spring3 MVC通常涉及web.xml的设置、DispatcherServlet的配置以及Spring的上下文配置(如beans.xml)。 接下来,让我们转向jQuery。jQuery简化了JavaScript编程,提供了一套简洁的API来处理DOM操作,如元素选择...
3. **模型(Model)**:在Spring MVC中,模型通常是POJO(Plain Old Java Object),用于封装数据。 4. **视图(View)**:Spring MVC支持多种视图技术,如JSP、Thymeleaf、FreeMarker等。视图负责渲染模型中的数据...
Spring3 MVC 是一款基于Java的轻量级Web应用框架,它是Spring框架的一部分,主要用于构建Web应用程序的模型-视图-控制器(MVC)结构。在本文中,我们将深入探讨Spring3 MVC的基础配置、注解使用以及核心概念。 一、...
ViewResolver 是 Spring MVC 框架中负责将模型数据渲染到视图中的组件。我们可以使用 InternalResourceViewResolver 或其他视图解析器来配置 ViewResolver。 七、总结 Spring MVC 是一个功能强大且灵活的 Web 框架...
在Spring MVC中,这些对象通常通过`@Service`和`@Repository`注解进行管理,前者封装了业务逻辑,后者处理数据访问。 3. **视图(View)**:视图负责展示数据。Spring MVC支持多种视图技术,如JSP、FreeMarker或...
3. **第3部分:在Spring 3.0 MVC中进行表单处理** - 探讨如何使用Spring MVC处理表单提交,包括数据绑定和验证。 4. **第4部分:Spring 3 MVC的Tiles支持与Eclipse中的插件教程** - Tiles框架是一种用于管理页面布局...