成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

RESTEasy實(shí)例

changfeng1050 / 911人閱讀

摘要:是的開(kāi)源項(xiàng)目之一,是一個(gè)框架。趁今天有空,學(xué)習(xí)一下。看了兩篇博客后,自己寫(xiě)了一個(gè)。如果不配置,也可以手動(dòng)指定,見(jiàn)注釋掉的部分。

RESTEasy是JBoss的開(kāi)源項(xiàng)目之一,是一個(gè)RESTful Web Services框架。

趁今天有空,學(xué)習(xí)一下RESTEasy??戳藘善┛秃?,自己寫(xiě)了一個(gè)demo。

1. 新建一個(gè)maven的web項(xiàng)目。

依賴如下:


4.0.0
com.fengyuan
RESTEasyDemo
war
0.0.1-SNAPSHOT
RESTEasyDemo Maven Webapp
http://maven.apache.org


    
        junit
        junit
        4.4
        test
    
    
        org.projectlombok
        lombok
        1.14.4
    
    
        org.jboss.resteasy
        resteasy-jaxrs
        2.2.3.GA
    
    
        org.jboss.resteasy
        resteasy-jackson-provider
        2.2.3.GA
    



    
        
            org.apache.maven.plugins
            maven-compiler-plugin
            
                1.7
                1.7
                UTF-8
            
        
    


2. 接著創(chuàng)建兩個(gè)服務(wù),messageservice和userservice:

UserService.java:

package com.fengyuan.restapi;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import com.fengyuan.domain.User;

@Path("userservice") // 服務(wù)路徑
public class UserService {
    /**
     * 初始化三個(gè)用戶數(shù)據(jù),存入map中,key為用戶id,value為用戶對(duì)象
     */
    static Map userMap = new HashMap<>();
    static {
        User user1 = new User("Lee", 24, "138***");
        userMap.put(1, user1);
        User user2 = new User("Cathy", 25, "188***");
        userMap.put(2, user2);
        User user3 = new User("Aaron", 26, "186***");
        userMap.put(3, user3);
    }

    /**
     * 獲取指定id的用戶
     * 
     * @param id
     * @return
     */
    @GET
    @Path("user/{id}") // 具體服務(wù)的路徑, id是入?yún)?    @Produces("application/json") // 返回的格式
    public User getById(@PathParam("id") Integer id) {
        return (User) userMap.get(id);
    }

    /**
     * 以json格式返回所有用戶
     * 
     * @return
     */
    @GET
    @Path("users")
    @Produces("application/json")
    public List getUsers() {
        List userList = new ArrayList();
        for (Entry user : userMap.entrySet()) {
            userList.add(user.getValue());
        }
        return userList;
    }
}

MessageService.java:

package com.fengyuan.restapi;
import javax.ws.rs.GET;
import javax.ws.rs.Path;  
import javax.ws.rs.PathParam;  
import javax.ws.rs.core.Response;  
   
@Path("/messageservice")  
public class MessageService {  
   public MessageService(){} 
    @GET 
    @Path("/{param}")  
    public Response printMessage(@PathParam("param") String msg) {  
        String result = "Hello : " + msg;  
   
        return Response.status(200).entity(result).build();  
    }  
} 

User.java:

package com.fengyuan.domain;

import lombok.AllArgsConstructor;
import lombok.Data;

public @Data @AllArgsConstructor class User {
    private String name;
    private int age;
    private String tel;
}

3. 配置web.xml:


  Restful Web Application
  
    resteasy.scan
    true
  
  
  
    resteasy.servlet.mapping.prefix
    /rest
  
  
    org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
  
  
    resteasy-servlet
    org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
  
  
    resteasy-servlet
    /rest/*
  

配置resteasy.scan為true表示自動(dòng)掃描服務(wù)。如果不配置,也可以手動(dòng)指定resteasy.resources,見(jiàn)注釋掉的部分。

4. 啟動(dòng)tomcat,在瀏覽器輸入服務(wù)的url:

5. 除了可以在瀏覽器直接訪問(wèn)之外,也可以用代碼調(diào)用:
package com.fengyuan.test;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import junit.framework.TestCase;  
  
public class TestUserAPI extends TestCase {  
    public static final String USER_API =   
        "http://127.0.0.1:8080/resteasy-demo/rest/userservice/users";  
  
    public void testCreateUserAndGetUser() throws IOException {  
        URL url =   
            new URL(USER_API);  
        HttpURLConnection connection =   
            (HttpURLConnection) url.openConnection();  
        connection.setRequestMethod("GET");  
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
        connection.setConnectTimeout(1000);  
  
        byte[] bytes = new byte[1024];
        //讀取請(qǐng)求返回值
        InputStream inStream=connection.getInputStream();
        inStream.read(bytes, 0, inStream.available());
        System.out.println(new String(bytes, "utf-8"));
        
        connection.disconnect();  
    }  
} 

控制臺(tái)輸出:

[{"name":"Lee","tel":"138***","age":24},{"name":"Cathy","tel":"188***","age":25},{"name":"Aaron","tel":"186***","age":26}]

當(dāng)然,這里只是簡(jiǎn)單了測(cè)試了GET類型的服務(wù),還有POST等類型的服務(wù)等有空了再補(bǔ)充。

另外,我在寫(xiě)這個(gè)demo項(xiàng)目的時(shí)候,發(fā)現(xiàn)如果使用了2.1.多版本的resteasy-jackson-provider和resteasy-jaxrs包,并且在web.xml中配置了resteasy.scan為true的話,會(huì)出一些問(wèn)題,這邊提醒一下,讓看這篇博文的同學(xué)不用再踩進(jìn)這個(gè)坑~。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/66213.html

相關(guān)文章

  • dubbxo開(kāi)發(fā)中遇到的錯(cuò)誤總結(jié)

    摘要:如果是其它方式引發(fā)的錯(cuò)誤,此處的解決方法不可用。最與該錯(cuò)誤重要便是前兩個(gè)。仔細(xì)檢查發(fā)現(xiàn),在接口中將參數(shù)轉(zhuǎn)化為一個(gè)對(duì)象,但沒(méi)有指出該對(duì)象就是錯(cuò)誤代碼根據(jù)查詢條件查詢登錄注冊(cè)訪問(wèn)統(tǒng)計(jì)數(shù)據(jù)解決辦法接口中添加相應(yīng)的注解。 1. object is not an instance of declaring class 錯(cuò)誤日日志 2016-06-01 10:55:59,612 [RMI TCP...

    jk_v1 評(píng)論0 收藏0
  • mybatis參數(shù)格式化異常:NumberFormatException: For input st

    摘要:此類問(wèn)題,在配置中,做的比較好,所以,官方也不是很放心其注解,建議使用。錯(cuò)誤的引起,是和引起的,原因給的是字符串,卻拿一個(gè)數(shù)字比較,會(huì)做一些轉(zhuǎn)化,結(jié)果在數(shù)字格式化時(shí)發(fā)生異常。 使用mybatis注解開(kāi)發(fā)的時(shí)候,總會(huì)遇到很多問(wèn)題,但是mybatis的注解并不是那么的美好,一些問(wèn)題或者錯(cuò)誤根本不能給出準(zhǔn)確的定位,有時(shí)候,甚至?xí)o出Unknow Source的錯(cuò)誤,獲取就是一個(gè)關(guān)閉標(biāo)簽沒(méi)有關(guān)...

    aaron 評(píng)論0 收藏0
  • hudson+gradle+git+maven(非必選)持續(xù)集成 (二)

    摘要:第二集非必選持續(xù)集成編譯打包部署到線上環(huán)境集成前言在持續(xù)集成第一集中講解了關(guān)于如果編譯,打包,發(fā)布包到私服。在下面一集中,也就是第二集中,開(kāi)始講解如何持續(xù)集成可運(yùn)行的服務(wù)包到測(cè)試和正式環(huán)境。 第二集 hudson+gradle+git+maven(非必選)持續(xù)集成編譯,打包,部署到線上環(huán)境集成 前言 在持續(xù)集成第一集中,講解了關(guān)于如果編譯,打包,發(fā)布jar包到maven私服。在下面一集...

    william 評(píng)論0 收藏0
  • RESTful API中跨域問(wèn)題

    摘要:這個(gè)過(guò)程是瀏覽器會(huì)發(fā)一次請(qǐng)求,詢問(wèn)服務(wù)器是否允許代碼如下完了以后,客戶端就可以順利請(qǐng)求服務(wù)器接口了。 此文講解在RESTful API中跨域問(wèn)題在項(xiàng)目中如何處理的! CORS 是 Cross Origin Resource Sharing 的縮寫(xiě), 定義了瀏覽器和服務(wù)器間共享內(nèi)容的新方式,通過(guò)它瀏覽器和服務(wù)器可以安全地進(jìn)行跨域訪問(wèn),它是 JSONP 的現(xiàn)代繼任 者。服務(wù)器上的 COR...

    荊兆峰 評(píng)論0 收藏0
  • dubbo個(gè)人理解于應(yīng)用章(二)

    摘要:當(dāng)提供程序線程池耗盡時(shí),不能發(fā)送到使用者端。一些錯(cuò)誤修正動(dòng)態(tài)配置不能刪除,支持參數(shù),監(jiān)控統(tǒng)計(jì)問(wèn)題等新功能支持手冊(cè)線程池耗盡時(shí)自動(dòng)堆棧轉(zhuǎn)儲(chǔ)。在注冊(cè)表無(wú)法連接時(shí)被阻止。正常關(guān)機(jī),在注冊(cè)表取消注冊(cè)和線程池關(guān)閉之間增加額外的等待時(shí)間。 dubbo分析showImg(https://segmentfault.com/img/bVbam2f?w=1726&h=686); dubbo為什么要對(duì)接sp...

    AlphaWallet 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<