前言
之前寫過一篇整合ssm+cxf不過是soap webservice,另一種webservice的實作是Restful風格的。
SOAP Webservice和Restful Webservice的使用,首先需要了解就是SOAP偏向于面向活動,有嚴格的規範和标準,包括安全,事務等各個方面的内容,同時SOAP強調操作方法和操作對象的分離,有WSDL檔案規範和XSD檔案分别對其定義。而REST強調面向資源,隻要我們要操作的對象可以抽象為資源即可以使用REST架構風格。
開發環境
Eclipse+jdk1.8+tomcat
所需jar包
ssm架構的jar包和

示例
web.xml
<!-- 配置cxf的核心控制器 -->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- 所有來自/webservice/*的請求交給cxf處理 -->
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/webservice/*</url-pattern>
</servlet-mapping>
spring-dao.xml添加引用
<import resource="classpath:spring/apache-cxf.xml"/>
apacha-cxf.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">
<context:component-scan base-package="com.XX.dao" />
<import resource="classpath*:META-INF/cxf/cxf.xml" />
<jaxrs:server id="restServiceContainer" address="/">
<jaxrs:providers>
<ref bean="jacksonProvider" />
</jaxrs:providers>
<jaxrs:extensionMappings>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</jaxrs:extensionMappings>
<jaxrs:serviceBeans>
<ref bean="testUserService" />
</jaxrs:serviceBeans>
<jaxrs:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
</jaxrs:inInterceptors>
<jaxrs:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
</jaxrs:outInterceptors>
</jaxrs:server>
<bean id="jacksonObjectMapper"
class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"></bean>
<bean id="jacksonProvider"
class="com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider">
<property name="mapper" ref="jacksonObjectMapper" />
</bean>
</beans>
entity.java 一定要加注解
import java.util.Date;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "baseUser")
public class TBaseUser {
private String userId;
private String userName;
private String identityCode;
private String password;
private String realName;
private String nickName;
private String imageUrl;
private String userWalletAddress;
private String candyWalletAddress;
private String eMail;
private String phoneNumber;
private String exchangeUserId;
private Date creatTime;
private Date updateTime;
private Boolean isDelete;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId == null ? null : userId.trim();
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName == null ? null : userName.trim();
}
public String getIdentityCode() {
return identityCode;
}
public void setIdentityCode(String identityCode) {
this.identityCode = identityCode == null ? null : identityCode.trim();
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password == null ? null : password.trim();
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName == null ? null : realName.trim();
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName == null ? null : nickName.trim();
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl == null ? null : imageUrl.trim();
}
public String getUserWalletAddress() {
return userWalletAddress;
}
public void setUserWalletAddress(String userWalletAddress) {
this.userWalletAddress = userWalletAddress == null ? null : userWalletAddress.trim();
}
public String getCandyWalletAddress() {
return candyWalletAddress;
}
public void setCandyWalletAddress(String candyWalletAddress) {
this.candyWalletAddress = candyWalletAddress == null ? null : candyWalletAddress.trim();
}
public String geteMail() {
return eMail;
}
public void seteMail(String eMail) {
this.eMail = eMail == null ? null : eMail.trim();
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber == null ? null : phoneNumber.trim();
}
public String getExchangeUserId() {
return exchangeUserId;
}
public void setExchangeUserId(String exchangeUserId) {
this.exchangeUserId = exchangeUserId == null ? null : exchangeUserId.trim();
}
public Date getCreatTime() {
return creatTime;
}
public void setCreatTime(Date creatTime) {
this.creatTime = creatTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Boolean getIsDelete() {
return isDelete;
}
public void setIsDelete(Boolean isDelete) {
this.isDelete = isDelete;
}
}
service
@Path("/user")
public interface TestUserService {
@GET
@Path("/getUser")
@Produces({ MediaType.APPLICATION_JSON,@GET
@Path("/getUser")
@Produces({ MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public List<TBaseUser> getAllUsers();MediaType.APPLICATION_XML })
public List<TBaseUser> getAllUsers();
}
serviceimpl
@Named("testUserService")
public class TestUserServiceimpl implements TestUserService{
@Autowired
private TBaseUserMapper tBaseUserMapper;
public List<TBaseUser> getAllUsers(){
TBaseUserExample example= new TBaseUserExample();
List<TBaseUser> list=tBaseUserMapper.selectByExample(example);
return list;
}
}
通路結果
通路http://localhost:8080/項目名/webservice/user/getUser?_type=json,傳回Json
{"baseUser":[{"candyWalletAddress":"0x0686F106aD2194a7b012b18EC390F496042187B4","nickName":"測試","password":"123qwe","phoneNumber":18611112222,"userId":1},{"candyWalletAddress":"0x0686F106aD2194a7b012b18EC390F496042187B4","nickName":"ceshi","password":"ceshi1","phoneNumber":18831688664,"userId":2,"userName":"ceshi"}]}
或者http://localhost:8080/項目名/webservice/user/getUser?_type=xml,傳回XML
參考連結:
https://www.cnblogs.com/zhuyiqizhi/p/6213502.html
https://blog.csdn.net/iamlake/article/details/51217303