1 背景:首先谈一下webservice:
2 1.Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,
3 可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,
4 用于开发分布式的互操作的应用程序。
5 其中最有分量的莫过于CXF框架了
6 2.cxf框架又包含jax-ws和jax-rs这两类
7 今天我们主要来研究一下jax-rs这种基于HTTP协议的(REST)架构风格创建与spring结合使用的Web服务:
8 一:服务器端:
9 1.导入对应的JAR包在你的pom.xml文件中如下:
10 <dependencies>
11 <!-- cxf 进行rs开发 必须导入 -->
12 <dependency>
13 <groupId>org.apache.cxf</groupId>
14 <artifactId>cxf-rt-frontend-jaxrs</artifactId>
15 <version>3.0.1</version>
16 </dependency>
17 <!-- 日志引入 -->
18 <dependency>
19 <groupId>org.slf4j</groupId>
20 <artifactId>slf4j-log4j12</artifactId>
21 <version>1.7.12</version>
22 </dependency>
23 <!-- 客户端 -->
24 <dependency>
25 <groupId>org.apache.cxf</groupId>
26 <artifactId>cxf-rt-rs-client</artifactId>
27 <version>3.0.1</version>
28 </dependency>
29 <!-- 扩展json提供者 -->
30 <dependency>
31 <groupId>org.apache.cxf</groupId>
32 <artifactId>cxf-rt-rs-extension-providers</artifactId>
33 <version>3.0.1</version>
34 </dependency>
35 <!-- 转换json工具包,被extension providers 依赖 -->
36 <dependency>
37 <groupId>org.codehaus.jettison</groupId>
38 <artifactId>jettison</artifactId>
39 <version>1.3.7</version>
40 </dependency>
41 <!-- spring 核心 -->
42 <dependency>
43 <groupId>org.springframework</groupId>
44 <artifactId>spring-context</artifactId>
45 <version>4.1.7.RELEASE</version>
46 </dependency>
47 <!-- spring web集成 -->
48 <dependency>
49 <groupId>org.springframework</groupId>
50 <artifactId>spring-web</artifactId>
51 <version>4.1.7.RELEASE</version>
52 </dependency>
53 <!-- spring 整合junit -->
54 <dependency>
55 <groupId>org.springframework</groupId>
56 <artifactId>spring-test</artifactId>
57 <version>4.1.7.RELEASE</version>
58 </dependency>
59 <!-- junit 的测试开发包 -->
60 <dependency>
61 <groupId>junit</groupId>
62 <artifactId>junit</artifactId>
63 <version>4.12</version>
64 </dependency>
65 </dependencies>
66 <!-- 配置启动maven项目的服务端口为9996 -->
67 <build>
68 <plugins>
69 <plugin>
70 <groupId>org.codehaus.mojo</groupId>
71 <artifactId>tomcat-maven-plugin</artifactId>
72 <version>1.1</version>
73 <configuration>
74 <port>9996</port>
75 </configuration>
76 </plugin>
77 </plugins>
78 </build>
79 2.配置web.xml中的CXFService-servlet
80 <!-- spring配置文件位置 -->
81 <context-param>
82 <param-name>contextConfigLocation</param-name>
83 <param-value>classpath:applicationContext.xml</param-value>
84 </context-param>
85 <!-- spring核心监听器 -->
86 <listener>
87 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
88 </listener>
89 <!-- CXF基于web的访问路径的配置servlet -->
90 <servlet>
91 <servlet-name>CXFService</servlet-name>
92 <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
93 <load-on-startup>1</load-on-startup>
94 </servlet>
95 <servlet-mapping>
96 <servlet-name>CXFService</servlet-name>
97 <url-pattern>/services/★</url-pattern>
98 </servlet-mapping>
99 3.编写服务的接口、实现类、Dao以及实体类
100 接口
101 public interface IXxxService{
102 @Path
103 @Produces | @Consumes
104 @GET|@POST|@PUT|@DELETE
105 public 返回类型 method(@PathParam("")参数 || @QueryParam("")参数);
106 ...
107 }
108 实现类
109 public class XxxServiceImpl implements IXxxService{
110 public 返回类型 method(参数){
111 业务操作
112 return 返回值
113 }
114 ...
115 }
116 Dao层
117 public interface XxxDao implements JpaRepostory<T,String>();
118 实体类
119 @XmlRootElement//定义根元素
120
121 4.配置applicationContext.xml
122
123 <?xml version="1.0" encoding="UTF-8"?>
124 <beans xmlns="http://www.springframework.org/schema/beans"
125 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
126 xsi:schemaLocation="
127 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
128 http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">
129 <!--
130 address 发布服务地址
131 servicesBeans 服务实现类
132 -->
133 <jaxrs:server id="userService" address="/userService" >
134 <jaxrs:serviceBeans>
135 <bean class="cn.itcast.cxf.service.UserServiceImpl" />
136 </jaxrs:serviceBeans>
137 <jaxrs:inInterceptors>
138 <bean class="org.apache.cxf.interceptor.LoggingInInterceptor" />
139 </jaxrs:inInterceptors>
140 <jaxrs:outInterceptors>
141 <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
142 </jaxrs:outInterceptors>
143 </jaxrs:server>
144 </beans>
145
146 5.发布服务器生成访问地址是:
147
148 http://ip:port/项目/services(web.xml CXFServlet url-pattern)/address/path(method)[/参数]
149
150 二:客户端
151 1.直接使用WebClient调用相关属性进行操作:
152 WebClient.create(url)//创建连接
153 .type(MediaType.APPLICAITON_XML)//设置参数传递类型
154 .accept(MediaType.APPLICATION_JSON) //设置接收返回值的类型
155 .get(模型类.class) //设置查询 并设置模型类类型
156 .getCollection(模型类.class) //设置批量查询 并设置模型类类型
157 .put(带参数对象) //修改操作
158 .post(带参数对象) //新增操作
159 .delete(带参数对象) //删除操作
三:提供第三方的接口(通过http协议进行不同系统之间的访问)
常用的是:HTTPClient
160 OK,以上内容仅供参考,如有雷同,纯属巧合^-^.