基于JAX-RS规范入门 服务端

服务提供方RS xml或者json

2.5.1 编写服务端

第一步:创建maven的web工程,导入一下依赖

<dependencies>

       <!-- 导入webservice依赖 -->
       <dependency>
           <groupId>org.apache.cxf</groupId>
           <artifactId>cxf-rt-frontend-jaxws</artifactId>
           <version>3.0.1</version>
       </dependency>

       <dependency>
           <groupId>org.apache.cxf</groupId>
           <artifactId>cxf-rt-transports-http</artifactId>
           <version>3.0.1</version>
       </dependency>

       <dependency>
           <groupId>org.apache.cxf</groupId>
           <artifactId>cxf-rt-frontend-jaxrs</artifactId>
           <version>3.0.1</version>
       </dependency>

       <dependency>
           <groupId>org.apache.cxf</groupId>
           <artifactId>cxf-rt-rs-client</artifactId>
           <version>3.0.1</version>
       </dependency>

       <dependency>
           <groupId>org.apache.cxf</groupId>
           <artifactId>cxf-rt-rs-extension-providers</artifactId>
           <version>3.0.1</version>
       </dependency>

       <dependency>
           <groupId>org.codehaus.jettison</groupId>
           <artifactId>jettison</artifactId>
           <version>1.3.7</version>
       </dependency>

       <dependency>
           <groupId>org.apache.cxf</groupId>
           <artifactId>cxf-rt-transports-http-jetty</artifactId>
           <version>3.0.1</version>
           <exclusions>
               <exclusion>
                   <groupId>org.apache.geronimo.specs</groupId>
                   <artifactId>geronimo-servlet_3.0_spec</artifactId>
               </exclusion>
           </exclusions>
       </dependency>

       <dependency>
           <groupId>com.colobu</groupId>
           <artifactId>fastjson-jaxrs-json-provider</artifactId>
           <version>0.3.1</version>
       </dependency>

       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-web</artifactId>
           <version>5.0.2.RELEASE</version>
       </dependency>

       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-context</artifactId>
           <version>5.0.2.RELEASE</version>
       </dependency>

       <dependency>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-api</artifactId>
           <version>1.7.25</version>
       </dependency>


       <dependency>
           <groupId>org.apache.geronimo.specs</groupId>
           <artifactId>geronimo-servlet_3.0_spec</artifactId>
           <version>1.0</version>
           <scope>provided</scope>
       </dependency>


   </dependencies>

   <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>3.1</version>
               <configuration>
                   <source>1.8</source>
                   <target>1.8</target>
               </configuration>
           </plugin>
           <plugin>
               <groupId>org.apache.tomcat.maven</groupId>
               <artifactId>tomcat7-maven-plugin</artifactId>
               <version>2.2</version>
               <configuration>
                   <port>1234</port>
                   <path>/</path>
               </configuration>
           </plugin>
       </plugins>
   </build>

第二步:在web.xml中配置spring容器在应用加载时创建

<listener>
 <listener-class>
  org.springframework.web.context.ContextLoaderListener
 </listener-class>
</listener>
<context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:applicationContext.xml</param-value>
</context-param>

第三步:在web.xml中配置CXF的核心控制器

<!-- 配置CXF的核心控制器,就是一个Servlet:CXFServlet -->
<servlet>
 <servlet-name>cxf</servlet-name>
 <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>

<servlet-mapping>
 <servlet-name>cxf</servlet-name>
 <!-- 此处不要配置/*,因为CXFServlet只能处理webservice请求 /ws/*表明请求URL中有/ws的请求 -->
 <url-pattern>/ws/*</url-pattern>
</servlet-mapping>

第四步:业务代码

实体类代码

package cn.itcast.pojo;
/*<user>
<id>11</id>
<name>zhangsan</name>
</user>*/

import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;

@XmlRootElement(name="user") //规定了xml中root节点的名称,此注解不能缺少
public class User implements Serializable {
   private Integer id;
   private String name;
   public Integer getId() {
       return id;
  }
   public void setId(Integer id) {
       this.id = id;
  }
   public String getName() {
       return name;
  }
   public void setName(String name) {
       this.name = name;
  }
}

接口代码

package cn.itcast.service;

import cn.itcast.pojo.User;

import javax.ws.rs.*;

@Path("/user")  //@Path 相当于@RequestMapping
public interface UserService {

   @POST
   @Path("/")
   @Consumes() //消费者请求时的参数数据格式
   public void save(User user);

   @PUT
   @Path("/")
   @Consumes(value ={"application/json","application/xml"})
   public void update(User user);

   @GET
   @Path("/{id}")
   @Consumes(value ={"application/json","application/xml"})
   @Produces(value ={"application/xml","application/json"}) //提供者返回时的内容数据格式
   public User findById(@PathParam("id") Integer id); //@PathParam从路径中获取参数。此注解不能少

   @DELETE
   @Path("/{id}")
   @Consumes(value ={"application/json","application/xml"})
   public void deleteById(@PathParam("id")Integer id);

}

实现类代码

package cn.itcast.service.impl;

import cn.itcast.pojo.User;
import cn.itcast.service.UserService;

public class UserServiceImpl implements UserService {
   @Override
   public void save(User user) {
       System.out.println("进入了save方法"+user.getName());
  }

   @Override
   public void update(User user) {
       System.out.println("进入了update方法"+user.getName());
  }

   @Override
   public User findById(Integer id) {
       User user = new User();
       user.setId(id);
       user.setName("zhangsan");
       return user;
  }

   @Override
   public void deleteById(Integer id) {
       System.out.println("进入了deleteById方法:id是"+id);
  }
}

第四步:启动项目

posted @ 2020-11-22 21:05  照旧  阅读(223)  评论(0编辑  收藏  举报