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の説明を追加する:
自己ローダの作成:
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
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
dependency>
dependency>
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