rest full api使用方便能够很好的弱耦合,那么spring对rest full服务很好的支持。
依赖的jar:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.0.RELEASE</version> </dependency>
web.xml配置:
<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-admin.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class> org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener>
spring-mvc.xml:
<mvc:resources mapping="/static/**" location="/static/" /> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter" /> <bean class="org.springframework.http.converter.ResourceHttpMessageConverter" /> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json" /> </bean> </mvc:message-converters> </mvc:annotation-driven> <context:component-scan base-package="com.linkrmb" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
rest api相关的控制层代码:
@RestController
@RequestMapping("/api")
public class ApiController extends BaseController {
private Logger log = LoggerFactory.getLogger(ApiController.class);
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody
public Item get(@PathVariable String id, HttpServletRequest request) {
Item item = new Item();
item.setId(id);
item.setName("name");
return item;
}
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public void post(Item item, HttpServletRequest request) {
log.info("post item:{}", item.toString());
}
@RequestMapping(method = RequestMethod.PUT,consumes=MediaType.APPLICATION_JSON_VALUE,produces=MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public void put(@RequestBody Item item, HttpServletRequest request) {
log.info("put item:{}", item.toString());
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public void delete(@PathVariable String id, HttpServletRequest request) {
log.info("delete id:{}", id);
}
}