标签:
spring可以轻松的集成多种restful风格的web-service,但其实spring-mvc中已经提供了这一支持。
可以根据需要生成xml、json、text等格式。
生成xml依赖于JAXB,主要是@XmlRootElement、@XmlAttribute、@XmlElement等注解的使用,JDK1.6开始就有jaxb了。
生成json就需要jackson,依赖jackson-mapper-asl-xxx.jar、jackson-core-asl-xxx.jar。maven依赖如下,jackson-core-asl会自动加入。
<!-- jackson --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.7.9</version> </dependency>
下面是一个简单的controller。@RequestMapping注解中的produces指定输出的格式,xml、json等
package com.spring.demo.web.controller; import javax.annotation.PostConstruct; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; import com.spring.demo.core.entity.Member; /** * rest demo * * @author sean * */ @Controller @RequestMapping("/rest") public class RestController { private Logger logger = LoggerFactory.getLogger(getClass()); private Member member; @PostConstruct public void postConstruct() { member = new Member(); member.setEmail("657620636@qq.com"); member.setName("张三"); member.setStreet("南山区白石洲天河街55号"); member.setZip("518025"); } /** * 输出xml * * @return */ @RequestMapping(value = "/xml", produces = { MediaType.APPLICATION_XML_VALUE }) @ResponseBody public Member xml() { logger.debug("rest xml"); return member; } /** * 输出json * * @return */ @RequestMapping(value = "/json", produces = { MediaType.APPLICATION_JSON_VALUE }) @ResponseBody public Member json() { logger.debug("rest json"); return member; } /** * 更新操作,只需要返回成功与否的状态。 * * @return */ @RequestMapping(value="/updateAndReturnOk") @ResponseBody public String updateAndReturnOk() { logger.debug("rest updateAndReturnOk"); return "Ok"; } /** * 更新操作,什么都不返回。 */ @RequestMapping(value="/update") @ResponseStatus(value=HttpStatus.NO_CONTENT) @ResponseBody public void update() { logger.debug("rest update and return no content"); } }
源码参考RestController、Member
spring-mvc restful web services
标签:
原文地址:http://my.oschina.net/u/2007041/blog/424300