开发服务端
导入maven
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.com.techfly</groupId>
<artifactId>07.cxf-rs-spring-server</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- CXF对JAX-RS的支持 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>3.5.2</version>
</dependency>
<!-- spring框架 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.0.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.0.1</version>
</dependency>
<!-- junit测试框架 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- 实体类工具 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
<!-- 转换JSON插件 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-extension-providers</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
<!-- tomcat插件-->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>9000</port>
<server>tomcat7</server>
</configuration>
</plugin>
</plugins>
</build>
</project>
创建User实体类
package cn.com.techfly.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.xml.bind.annotation.XmlRootElement;
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@XmlRootElement
public class User {
private Integer id;//id
private String name;//名字
private String gender;//性别
}
创建接口
package cn.com.techfly.service;
import cn.com.techfly.bean.User;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.List;
/**
* restful风格接口
* http://localhost:9000/UserService
*/
public interface UserService {
@POST //添加操作
public void saveUser(User user);
@PUT //修改操作
public void updateUser(User user);
@DELETE //删除操作
@Path("/{id}") //http://localhost:9000/UserService/10
public void deleteUser(@PathParam("id") Integer id);
@GET //查询操作
public List<User> findAllUser();
@GET //查询操作
@Path("/{id}") //http://localhost:9000/UserService/10
@Produces(MediaType.APPLICATION_JSON)
public User findById(@PathParam("id") Integer id);
}
实现接口
package cn.com.techfly.service.impl;
import cn.com.techfly.bean.User;
import cn.com.techfly.service.UserService;
import java.util.ArrayList;
import java.util.List;
public class UserServiceImpl implements UserService {
public void saveUser(User user) {
System.out.println("保存用户:" + user);
}
public void updateUser(User user) {
System.out.println("修改用户:" + user);
}
public void deleteUser(Integer id) {
System.out.println("删除用户:" + id);
}
public List<User> findAllUser() {
List<User> users = new ArrayList<User>();
users.add(new User(1, "张三", "男"));
users.add(new User(2, "李四", "男"));
users.add(new User(3, "陈六", "女"));
System.out.println("批量添加用户:" + users);
return users;
}
public User findById(Integer id) {
User user = new User();
if (id == 1) {
user.setId(1);
user.setName("露西");
user.setGender("男");
System.out.println("用户:" + user);
}else {
System.out.println("用户不存在!");
}
return user;
}
}
编写applicantionContext.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">
<!-- 发布接口-->
<!-- address:发布地址 -->
<!-- serviceClass:接口类路径-->
<jaxrs:server address="/userService">
<!-- 接口实现类-->
<jaxrs:serviceBeans>
<!-- class:接口实现类路径-->
<bean class="cn.com.techfly.service.impl.UserServiceImpl"/>
</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>
</beans>
配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>07.cxf-rs-spring-server</display-name>
<!-- 监听器启动Spring配置-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicantionContext.xml</param-value>
</context-param>
<!-- 启动cxf-->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<!-- 在项目加载的时候创建-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
开发客户端
导入maven
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.com.techfly</groupId>
<artifactId>08.cxf-rs-spring-client</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--CXF的WebClient工具类-->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-client</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
<!-- 依赖日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>
<!-- 实体类工具 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
<!-- 转换JSON插件 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-extension-providers</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
</project>
创建User实体类
package cn.com.techfly.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.xml.bind.annotation.XmlRootElement;
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@XmlRootElement
public class User {
private Integer id;//id
private String name;//名字
private String gender;//性别
}
编写调用服务端代码
package cn.com.techfly.test;
import cn.com.techfly.bean.User;
import org.apache.cxf.jaxrs.client.WebClient;
import org.junit.Test;
import javax.ws.rs.core.MediaType;
public class ClientDemo {
/**
* 查询一个数据
*/
@Test
public void testFindById() {
//发送GET请求
User user = WebClient
.create("http://localhost:9000/07.cxf-rs-spring-server/userService/1")
.accept(MediaType.APPLICATION_JSON)
.get(User.class);
System.out.println(user);
}
}
运行程序
先运行服务端,在运行客户端。
服务端运行成功。
客户端成功调用服务端接口。