WebService Spring整合Jax-rs規範 使用CXF框架Restful的程式設計風格 編寫服務端
前提是專案SSM框架搭建好。
搭建cxf框架,
一、首先,將框架所需要的jar匯入,pom.xml檔案中
<!-- cxf 進行rs開發 必須匯入 --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxrs</artifactId> <version>3.0.1</version> </dependency> <!--cxf 客戶端 --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-rs-client</artifactId> <version>3.0.1</version> </dependency> <!-- 擴充套件json提供者 --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-rs-extension-providers</artifactId> <version>3.0.1</version> </dependency> <!-- 轉換json工具包,被extension providers 依賴 --> <dependency> <groupId>org.codehaus.jettison</groupId> <artifactId>jettison</artifactId> <version>1.3.7</version> </dependency>
二、然後在web.xml中加入
<!-- 配置CXF的Servlet程式--> <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping>
這裡的url-pattern標籤中的ws是我自定的路徑名字。
三、編寫實體類
在類前面加入註解 @XmlRootElement(name = "User")
以後把User類轉換成XML格式的資料時候,name下的名字做根節點
四、編寫service介面
介面前面加註解 @Produces("*/*") //表示響應資料的型別,任意MIMK型別
編寫方法
方法前面加註解 @Get //請求方式適用於查詢 ; @POST適用新增 ;@PUT適用於修改;@DELETE適用於刪除
@Path("/訪問路徑②名字自定義,可方法名")
如果需要傳入引數則 @Path("/訪問路徑②名字/{引數}")
@Consumes({"application/xml","application/json"}) 接收的引數型別
@Produces({ "application/xml", "application/json" }) 響應的資料類
五、新建applicationContext-cxf.xml
在配置檔案中填寫需要例項化的WebService需要的介面
( 1 )<bean id=“這裡我寫的介面的實現類名首字母小寫” class=“介面實現類的路徑”/>
如:<bean id="routeServiceImp" class="cn.itcast.service.RouteServiceImp"/>
( 2 )<jaxrs:server address="訪問路徑的名字①">
<jaxrs:serviceBeans>
<ref bean="寫上邊bean的id名字"/> //可寫多個
</jaxrs:serviceBeans>
<jaxrs: inInterceptors>
<bean class=''org.apache.cxf.interceptor.LoggingInInterceptor''/>
</jaxrs: inInterceptors>
<jaxrs: outInterceptors>
<bean class=''org.apache.cxf.interceptor.LoggingOutInterceptor''/>
</jaxrs: outInterceptors>
</jaxrs:server>
最終編寫的服務端已經完成
訪問路徑為 IP:埠號/專案名/Web中自定義的名字/配置檔案中訪問路徑名字①/方法介面中的訪問路徑名字②
例如:localhost:8080/CPE/ws/findAll
之後瀏覽器會顯示資料