• 10、Web Service-IDEA-jaxrs 整合spring


     1、服务端的开发

    1、web项目目录

     

    2、pom

    <?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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.cr</groupId>
      <artifactId>springserver</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <name>springserver Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
      </properties>
    
      <dependencies>
        <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-frontend-jaxws</artifactId>
          <version>3.0.1</version>
        </dependency>
    
        <!--日志-->
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.7.12</version>
          <scope>test</scope>
        </dependency>
    
    
        <!--restful风格客户端调用所需要的 -->
        <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>
      
        <dependency>
          <groupId>org.codehaus.jettison</groupId>
          <artifactId>jettison</artifactId>
          <version>1.3.7</version>
        </dependency>
    
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>4.3.10.RELEASE</version>
        </dependency>
    <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.10.RELEASE</version> </dependency> </dependencies>
    <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <showWarnings>true</showWarnings> </configuration> </plugin> </plugins> </build> </project>

    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
      <display-name>cxf</display-name>
    
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/applicationContext.xml</param-value>
      </context-param>
    
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    
    <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>/cr/*</url-pattern>
    </servlet-mapping>
    </web-app>

    applicationContext.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:cxf="http://cxf.apache.org/core"
            xmlns:jaxws="http://cxf.apache.org/jaxws"
            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/spring-context.xsd
    http://cxf.apache.org/core
    http://cxf.apache.org/schema/core.xsd
    http://cxf.apache.org/jaxws
    http://cxf.apache.org/schemas/jaxws.xsd
    http://cxf.apache.org/jaxrs
    http://cxf.apache.org/schemas/jaxrs.xsd">
    
    
        <!---->
        <!--服务地址 -->
        <!--服务类-->
        <jaxrs:server address="/userService">
            <jaxrs:serviceBeans>
                <bean class="com.cr.service.impl.UserServiceImpl"></bean>
            </jaxrs:serviceBeans>
        </jaxrs:server>
    </beans>

    UserService

    package com.cr.service;
    
    import com.cr.entity.User;
    
    import javax.ws.rs.*;
    import java.util.List;
    
    //访问当前服务接口对应的路径
    @Path("/userService")
    @Produces("*/*")//支持任意类型
    public interface UserService {
    
    
        @POST
        @Path("/user")//访问当前端方法对应的路径
        @Consumes({"application/xml","application/json"})//服务器支持的请求数据格式类型
        public void save(User user);
    
    
        @GET
        @Path("/user")
        @Consumes({"application/xml","application/json"})
        @Produces("application/xml")
        public List<User> findUser();
    
    }

    UserServiceImpl

    package com.cr.service.impl;
    
    import com.cr.entity.User;
    import com.cr.service.UserService;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class UserServiceImpl implements UserService {
    
        public void save(User user){
            System.out.println("save:"+user);
        }
    
        public List<User> findUser(){
            List<User> uList = new ArrayList<>();
    
            User u1 = new User("aa","qwe");
            User u2 = new User("bb","asd");
            uList.add(u1);
            uList.add(u2);
            System.out.println(uList);
            return uList;
    
        }
    }

    User

    package com.cr.entity;
    
    import javax.xml.bind.annotation.XmlRootElement;
    
    //基于restful风格的webservice
    //客户端与服务的之间通讯可以传到xml、json
    
    //该注解指定对象序列化为xml或者json数据时根节点的名称
    //xml:  <User><id></id></User>
    //json:效率更高   {"User":"",pwd:""}
    
    @XmlRootElement(name = "User")
    public class User {
        private  String name;
        private  String  pwd;
    
      //...
    }

    配置tomcat,启动服务

    2、客户端的实现

     
    1、工程目录

    2、pom

    <?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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.cr</groupId>
      <artifactId>springclient</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <name>springclient</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
      </properties>
    
      <dependencies>
        <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-frontend-jaxws</artifactId>
          <version>3.0.1</version>
        </dependency>
    
        <!--日志-->
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.7.12</version>
          <scope>test</scope>
        </dependency>
    
        <!--restful风格客户端调用所需要的 -->
        <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>
    
        <dependency>
          <groupId>org.codehaus.jettison</groupId>
          <artifactId>jettison</artifactId>
          <version>1.3.7</version>
        </dependency>
    
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
    
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>4.3.10.RELEASE</version>
        </dependency>
    <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.10.RELEASE</version> </dependency>
    <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.10.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <showWarnings>true</showWarnings> </configuration> </plugin> </plugins> </build> </project>

    3、类

    package com.cr.entity;
    
    import javax.xml.bind.annotation.XmlRootElement;
    
    //基于restful风格的webservice
    //客户端与服务的之间通讯可以传到xml、json
    
    //该注解指定对象序列化为xml或者json数据时根节点的名称
    //xml:  <User><id></id></User>
    //json:效率更高   {"User":"",pwd:""}
    
    @XmlRootElement(name = "User")
    public class User {
        private  String name;
        private  String  pwd;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPwd() {
            return pwd;
        }
    
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    
        public User() {
        }
    
        public User(String name, String pwd) {
            this.name = name;
            this.pwd = pwd;
        }
    }

    测试:

       @Test
        public void save(){
            //远程调用服务端
            WebClient.
                    create("http://localhost:8082/cr/userService/userService/user").
                    type("application/json").
                    post(new User("qq","22"));
        }

    查询:

        //查询
        @Test
        public void find(){
            WebClient.create("http://localhost:8082/cr/userService/userService/user").get();
    
        }

  • 相关阅读:
    如何将本地项目上传到码云
    启动Springboot 报错 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Sat Jan 12 15:50:25 CST 2019 There was an unexpected error (type=Not
    Redis
    c++指针
    zed hdmi核构建error:xx uses VFP register arguments, hdmi02.elf does not
    github只下载某个文件夹的方法
    linux下vivado tcl使用 & linux环境变量设置
    vivado hls make csim error: /opt/Xilinx/Vivado_HLS/2016.4/lnx64/tools/opencv/libopencv_highgui.so: undefined reference to `TIFFR
    linux下hls运行make csim出现:../common/Makefile.rules:55: *** multiple target patterns. Stop.
    读写sd卡代码分析(vivado sdk c++)
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10585835.html
Copyright © 2020-2023  润新知