什么是JAX-RS
在JSR-311规范中定义,即Java API for RESTful Web Services,一套Java API,用于开发 RESTful风格的Webservice。
工程概况
主要功能:用户增删改查controller(not RESTful,懒得改了) + 查询用户webservice(RESTful)
框架:spring+spring mvc+mybatis
数据库:mysql
构建工具:maven
创建工程
使用IDE创建一个maven工程,pom.xml文件如下,引入cxf、spring、mybatis等依赖,添加tomcat-maven插件:
4.0.0 cn.edu.hdu.wsdemo wsdemo war 0.0.1-SNAPSHOT wsdemo Maven Webapp http://maven.apache.org 3.0.3 3.1 2.0.1 4.1.4.RELEASE 3.2.8 1.1.1 junit junit 4.11 test javax.servlet javax.servlet-api 3.1.0 provided org.slf4j slf4j-api 1.7.21 org.slf4j slf4j-log4j12 1.7.21 log4j log4j 1.2.17 com.google.code.gson gson 2.6.2 org.apache.commons commons-lang3 3.4 org.springframework spring-webmvc ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-context-support ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-jdbc ${spring.version} org.aspectj aspectjweaver 1.8.7 com.alibaba druid 1.0.15 mysql mysql-connector-java 5.1.38 org.mybatis mybatis ${mybatis.version} org.mybatis mybatis-spring 1.2.5 org.apache.cxf cxf-rt-frontend-jaxrs ${cxf.version} org.apache.cxf cxf-rt-transports-http ${cxf.version} org.apache.cxf cxf-rt-rs-service-description ${cxf.version} commons-httpclient commons-httpclient ${httpclient.version} javax.ws.rs javax.ws.rs-api ${jax.ws.rs} org.codehaus.jackson jackson-jaxrs ${jackson.version} wsdemo maven-compiler-plugin 3.0 org.apache.tomcat.maven tomcat7-maven-plugin 2.1
关于spring+spring mvc+mybatis框架的相关配置就不细说了,这里主要关注与CXF相关的配置。
首先,是在web.xml添加一个servlet,拦截Web Service的请求:
CXFServlet org.apache.cxf.transport.servlet.CXFServlet CXFServlet /ws/*
然后,配置jaxrs:server:
最后,编写我们的webservice具体实现:
package cn.edu.hdu.wsdemo.wsservice;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.ws.rs.Consumes;import javax.ws.rs.GET;import javax.ws.rs.POST;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;import org.springframework.beans.factory.annotation.Autowired;import cn.edu.hdu.wsdemo.model.User;import cn.edu.hdu.wsdemo.service.user.IUserService;@Path("/userwsservice/")@Consumes(MediaType.APPLICATION_JSON)@Produces(MediaType.APPLICATION_JSON)public class UserWSService{ @Autowired private IUserService userService; @GET @Path("/users/{id}/") public User getUser(@PathParam("id") String id) { Mapparam = new HashMap (); param.put("id", id); List userList = userService.query(param); return userList.size() > 0 ? userList.get(0) : null; } @POST @Path("/users/getall") public List getAllUsers() { List userList = userService.query(new HashMap ()); return userList; }}
测试服务
执行maven命令:clean tomcat:run
启动成功后,浏览器输入:
结果:
输入:
结果:
输入:
结果:
源码
参考资料