Jersey 2.17+Tomcat+Maven restfulサービスインスタンスの構築

6798 ワード

jersey 1.Xのバージョンはsun社が提供した独立したjarパッケージで、2.Xバージョンではjerseyがglassfishの下に置かれています.同時にJavaはjerseyのwebserviceもサポートし、webserviceの注釈をサポートするパッケージはjavax.ws.rs.*パッケージにあります.
Jersey常用注釈解釈:                                                                             
 
Annotation
さぎょう
説明
@GET
クエリーリクエスト
データベースに相当するクエリー・データ・アクション
@POST
要求の挿入
データベースの挿入に相当するデータ操作
@PUT
更新リクエスト
データベースの更新に相当するデータ操作
@DELETE
リクエストの削除
データの削除に相当するデータ操作
@Path
uriパス
リソースのアクセスパスを定義し、clientはこのパスを介してリソースにアクセスします.例:@Path("user")
@Produces
戻りMIME形式の指定
リソースはそのデータ形式で返されます.取得できる値はMediaType.APPLICATIONです.XXX.例:@Produces(MediaType.APPLICATION_XML)
@Consumes
指定されたMIME形式を受け入れる
このリソースにアクセスできるのは、このパラメータ設定に合致するリクエストのみです.例えば@Consumes(「アプリケーション/x-www-form-urlencoded」)
@PathParam
uriパスパラメータ
メソッドのパラメータに書き込み、リクエストパスパラメータを取得します.例:@PathParam("username") String userName
@QueryParam
uriパス要求パラメータ
メソッドのパラメータに書き、リクエストパスに付属するパラメータを取得します.例:@QueryParam("desc") String desc
@DefaultValue
@QueryParamパラメータのデフォルト値の設定
@QueryParamが値を受信していない場合は、デフォルト値を使用します.例:@DefaultValue("description")@QueryParam("desc")String desc
@FormParam
form伝達パラメータ
formから渡されるパラメータを受け入れます.例:@FormParam("name") String userName
@BeanParam
パラメータをBena形式で渡す
クライアントが渡すbeanタイプのパラメータを受け入れ、このbeanはclientの属性名とbeanの属性名が一致しない問題を解決するために属性上で@FormParamを構成することができます.例:@BeanParam User user
@Context
システム環境情報の取得
@Contextでは、UriInfo、サーブレットコンフィグ、サーブレットContext、HttpサーブレットRequest、HttpサーブレットResponse、HttpHeadersなどの情報が得られます.
@XmlRootElement
beanをxmlに変換
beanがxmlまたはjsonの形式で返される場合は、この注記が必要です.例:@XmlRootElement public class User{…}
@XmlElements
 
 
@XmlElement
 
 
1.まずMaven webappプロジェクトを構築します.これは簡単です.
2.pom.xmlにjersey 2.17の依存を追加する:
[html]  view plain
 copy
 
  
   org.glassfish.jersey.containersgroupId>  
   jersey-container-servletartifactId>  
   2.17version>  
dependency>  
  
   org.glassfish.jersey.coregroupId>  
   jersey-clientartifactId>  
   2.17version>  
dependency>  
  
   org.glassfish.jersey.mediagroupId>  
   jersey-media-json-jacksonartifactId>   
   2.17version>  
dependency>  
3.web.xmlにjersey servletの説明を追加する:

JerseyServlet
org.glassfish.jersey.servlet.ServletContainer


javax.ws.rs.Application
com.cisdi.jersey.api.ApplicationAPI






1


JerseyServlet
/api/*
には、2つのリソースをロードする方法があります.1つは、自分のリソースローダを使用してリソースをロードすることであり、自分のリソースローダの位置を与える必要があります.もう1つは、デフォルトのリソースローダを使用してロードし、リソースが存在するpackageを与える必要があります.個人的には1つ目は、自分のリソースローダを書いてロードしたいリソースをロードすることです.このように制御性が強く、次にこのリソースローダがどのように作成されているかを紹介します.
自己ローダの作成:
public class ApplicationAPI extends ResourceConfig {
public ApplicationAPI() {
//   resources
register(HelloResource.class);
register(UserResource.class);
 
//        
register(JacksonJsonProvider.class);
 
//     
register(LoggingFilter.class);
 
}
}
このクラスは、様々なリソースをロードし、clientに暴露します.前述したように、独自のリソース・ローダを使用する制御性が高いのは、ビジネス・リソースのロードに加えて、日やその他のツール・リソースのロードなどが可能であることです.あるいはpackageの下のリソースが露出したくないので、ロードしないでください.
view pla
4.コードの作成:
RestfulDemo.java:(リソース)
[java]  view plain
 copy
 
@Path("/demo")    
public class RestfulDemo {  
        @GET    
        @Produces(MediaType.TEXT_PLAIN)    
        public String sayHello() {    
            return "Hello World!" ;    
        }    
         
            
        @GET    
        @Path("/{param}")      
        @Produces("text/plain;charset=UTF-8")    
        public String sayHelloToUTF8(@PathParam("param") String username) {    
            return "Hello " + username;    
        }    
          
        @GET    
        @Path("/get")      
        @Produces(MediaType.APPLICATION_JSON)    
        public User sayHelloToJson(@QueryParam("username") String username) {    
            User user= new User();  
            user.setId(1);  
            user.setName(username);  
            return user;    
        }    
          
          
        @POST  
        @Path("/update")      
        @Consumes(MediaType.APPLICATION_JSON)  
        @Produces(MediaType.APPLICATION_JSON)    
        public User updateUser(User user) {    
            user.setId(2);  
            user.setName("update name:"+user.getName());  
            return user;    
        }  
}  
User.java:
[java]  view plain
 copy
 
public class User  implements Serializable {  
    private static final long serialVersionUID = 1L;  
    private int id;  
    private String name;  
    public int getId() {  
        return id;  
    }  
    public void setId(int id) {  
        this.id = id;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
  
}  
4.webappをwarパッケージにしてtomcatに公開します.
アクセスhttp://localhost:8080/rest/demo、ページにhello worldが表示されます.
アクセスhttp://localhost:8080/rest/demo/zhangsan 、ページにhello zhangsan
アクセスhttp://localhost:8080/rest/demo/get?username=zhangsan 、ページはUserオブジェクトのjson形式を返します
アクセスhttp://localhost:8080/rest/demo/update、postはuserオブジェクトのjsonフォーマットをコミットし、userオブジェクトを更新するjsonフォーマットを返します.
5.注意:
JDKは1.7以上お使いください
Tomcatは7.0以上の参考を使用してください.http://dyygusi.iteye.com/blog/2148029?utm_source=tuicool&utm_medium=referral