zoukankan      html  css  js  c++  java
  • 基于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);
      }
    }

    第四步:启动项目

  • 相关阅读:
    解决android Failed to rename directory 问题
    Android APK反编译
    SQL的bit列名转换成access是/否数据类型,True无效的问题
    android获取屏幕硬件分辨率方法
    cursor:hand 与 cursor:pointer 的区别
    解决android调试是出现:Reinstallation failed due to different application signatures
    Flash as3 基础:AS3中的getChildByName(转)
    机器学习之特征预处理
    用户态和内核态的区别
    深度学习和神经网络的区别(转载)
  • 原文地址:https://www.cnblogs.com/zhaojiu/p/14021414.html
Copyright © 2011-2022 走看看