国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

RESTEasy實(shí)例

changfeng1050 / 854人閱讀

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

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

趁今天有空,學(xué)習(xí)一下RESTEasy。看了兩篇博客后,自己寫了一個demo。

1. 新建一個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)建兩個服務(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 {
    /**
     * 初始化三個用戶數(shù)據(jù),存入map中,key為用戶id,value為用戶對象
     */
    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表示自動掃描服務(wù)。如果不配置,也可以手動指定resteasy.resources,見注釋掉的部分。

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

5. 除了可以在瀏覽器直接訪問之外,也可以用代碼調(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];
        //讀取請求返回值
        InputStream inStream=connection.getInputStream();
        inStream.read(bytes, 0, inStream.available());
        System.out.println(new String(bytes, "utf-8"));
        
        connection.disconnect();  
    }  
} 

控制臺輸出:

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/66213.html

相關(guān)文章

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

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

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

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

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

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

    william 評論0 收藏0
  • RESTful API中跨域問題

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

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

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

    AlphaWallet 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<