什么是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插件:
View Code
关于spring+spring mvc+mybatis框架的相关配置就不细说了,这里主要关注与CXF相关的配置。
首先,是在web.xml添加一个servlet,拦截Web Service的请求:
<servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping>
然后,配置jaxrs:server:
<bean id="userWSService" class="cn.edu.hdu.wsdemo.wsservice.UserWSService"></bean> <bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" /> <jaxrs:server id="users" address="/apis"> <jaxrs:serviceBeans> <ref bean="userWSService" /> </jaxrs:serviceBeans> <jaxrs:providers> <ref bean='jsonProvider' /> </jaxrs:providers> </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) { Map<String, Object> param = new HashMap<String, Object>(); param.put("id", id); List<User> userList = userService.query(param); return userList.size() > 0 ? userList.get(0) : null; } @POST @Path("/users/getall") public List<User> getAllUsers() { List<User> userList = userService.query(new HashMap<String, Object>()); return userList; } }
测试服务
执行maven命令:clean tomcat:run
启动成功后,浏览器输入:http://localhost:8080/wsdemo/ws
结果:
输入:http://localhost:8080/wsdemo/ws/apis?_wadl
结果:
输入:http://localhost:8080/wsdemo/ws/apis/userwsservice/users/4
结果:
本文转自风一样的码农博客园博客,原文链接:http://www.cnblogs.com/chenpi/p/6110040.html,如需转载请自行联系原作者