• RESTful WebService 入门实例


     

    /* 新建MavenProject,使用以下代码,创建类和POM文件。
    使用命令行切换到Project根目录,运行mvn package(或者,选中pom.xml 文件右键单击 > run as maven build > 在goals中填入 "clean package") , mvn exec:java 或 对于包含main方法的类my.restful.Main, run as Java application。

    ,即可启动RESTful service。
    在浏览器中输入http://localhost:8080/myapp/myresource/,
    此时会显示内容: Got it!

    ---<<Java RESTful Web Service 实战 >>*/




    package my.restful; 2 3 import org.glassfish.grizzly.http.server.HttpServer; 4 import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; 5 import org.glassfish.jersey.server.ResourceConfig; 6 7 import java.io.IOException; 8 import java.net.URI; 9 10 /** 11 * Main class. 12 * 13 */ 14 public class Main { 15 // Base URI the Grizzly HTTP server will listen on 16 public static final String BASE_URI = "http://localhost:8080/myapp/"; 17 18 /** 19 * Starts Grizzly HTTP server exposing JAX-RS resources defined in this application. 20 * @return Grizzly HTTP server. 21 */ 22 public static HttpServer startServer() { 23 // create a resource config that scans for JAX-RS resources and providers 24 // in my.restful package 25 final ResourceConfig rc = new ResourceConfig().packages("my.restful"); 26 27 // create and start a new instance of grizzly http server 28 // exposing the Jersey application at BASE_URI 29 return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc); 30 } 31 32 /** 33 * Main method. 34 * @param args 35 * @throws IOException 36 */ 37 public static void main(String[] args) throws IOException { 38 final HttpServer server = startServer(); 39 System.out.println(String.format("Jersey app started with WADL available at " 40 + "%sapplication.wadl\nHit enter to stop it...", BASE_URI)); 41 System.in.read(); 42 server.stop(); 43 } 44 }
    package my.restful;
    
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    
    /**
     * Root resource (exposed at "myresource" path)
     */
    @Path("myresource")
    public class MyResource {
    
        /**
         * Method handling HTTP GET requests. The returned object will be sent
         * to the client as "text/plain" media type.
         *
         * @return String that will be returned as a text/plain response.
         */
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String getIt() {
            return "Got it!";
        }
    }
    package my.restful;
    
    import javax.ws.rs.client.Client;
    import javax.ws.rs.client.ClientBuilder;
    import javax.ws.rs.client.WebTarget;
    
    import org.glassfish.grizzly.http.server.HttpServer;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import static org.junit.Assert.assertEquals;
    
    public class MyResourceTest {
    
        private HttpServer server;
        private WebTarget target;
    
        @Before
        public void setUp() throws Exception {
            // start the server
            server = Main.startServer();
            // create the client
            Client c = ClientBuilder.newClient();
    
            // uncomment the following line if you want to enable
            // support for JSON in the client (you also have to uncomment
            // dependency on jersey-media-json module in pom.xml and Main.startServer())
            // --
            // c.configuration().enable(new org.glassfish.jersey.media.json.JsonJaxbFeature());
    
            target = c.target(Main.BASE_URI);
        }
    
        @After
        public void tearDown() throws Exception {
            server.stop();
        }
    
        /**
         * Test to see that the message "Got it!" is sent in the response.
         */
        @Test
        public void testGetIt() {
            String responseMsg = target.path("myresource").request().get(String.class);
            assertEquals("Got it!", responseMsg);
        }
    }
     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     3 
     4     <modelVersion>4.0.0</modelVersion>
     5 
     6     <groupId>my.restful</groupId>
     7     <artifactId>my-first-service</artifactId>
     8     <packaging>jar</packaging>
     9     <version>1.0-SNAPSHOT</version>
    10     <name>my-first-service</name>
    11 
    12     <dependencyManagement>
    13         <dependencies>
    14             <dependency>
    15                 <groupId>org.glassfish.jersey</groupId>
    16                 <artifactId>jersey-bom</artifactId>
    17                 <version>${jersey.version}</version>
    18                 <type>pom</type>
    19                 <scope>import</scope>
    20             </dependency>
    21         </dependencies>
    22     </dependencyManagement>
    23 
    24     <dependencies>
    25         <dependency>
    26             <groupId>org.glassfish.jersey.containers</groupId>
    27             <artifactId>jersey-container-grizzly2-http</artifactId>
    28         </dependency>
    29         <!-- uncomment this to get JSON support:
    30          <dependency>
    31             <groupId>org.glassfish.jersey.media</groupId>
    32             <artifactId>jersey-media-moxy</artifactId>
    33         </dependency>
    34         -->
    35         <dependency>
    36             <groupId>junit</groupId>
    37             <artifactId>junit</artifactId>
    38             <version>4.9</version>
    39             <scope>test</scope>
    40         </dependency>
    41     </dependencies>
    42 
    43     <build>
    44         <plugins>
    45             <plugin>
    46                 <groupId>org.apache.maven.plugins</groupId>
    47                 <artifactId>maven-compiler-plugin</artifactId>
    48                 <version>2.5.1</version>
    49                 <inherited>true</inherited>
    50                 <configuration>
    51                     <source>1.7</source>
    52                     <target>1.7</target>
    53                 </configuration>
    54             </plugin>
    55             <plugin>
    56                 <groupId>org.codehaus.mojo</groupId>
    57                 <artifactId>exec-maven-plugin</artifactId>
    58                 <version>1.2.1</version>
    59                 <executions>
    60                     <execution>
    61                         <goals>
    62                             <goal>java</goal>
    63                         </goals>
    64                     </execution>
    65                 </executions>
    66                 <configuration>
    67                     <mainClass>my.restful.Main</mainClass>
    68                 </configuration>
    69             </plugin>
    70         </plugins>
    71     </build>
    72 
    73     <properties>
    74         <jersey.version>2.22.1</jersey.version>
    75         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    76     </properties>
    77 </project>

    
    
  • 相关阅读:
    【Javascript】javascript学习 二十二 JavaScript 对象简介
    【Javascript】javascript学习 二十六 JavaScript Boolean(逻辑)对象
    【Javascript】javascript学习 二十九 JavaScript HTML DOM 对象
    【Javascript】javascript学习 二十八 JavaScript RegExp 对象
    【Javascript】javascript学习 二十一 JavaScript 指导方针
    【Javascript】javascript学习 二十三 JavaScript 字符串(String)对象
    【Javascript】javascript学习 三十 JavaScript 浏览器检测
    【Javascript】javascript学习 二十五 JavaScript Array(数组)对象
    【Javascript】javascript学习 二十四 JavaScript Date(日期)对象
    【Javascript】javascript学习 二十七 JavaScript Math(算数)对象
  • 原文地址:https://www.cnblogs.com/luffystory/p/7208597.html
Copyright © 2020-2023  润新知