-1

url:
http ://www.xxx.com/getUser?userid=1&username=john&usersex=1

Javaクラス:

Class User{
     private long userId;
     private String userName;
     private int userSex;

     // get and set methods
     ...
     //constructos
     User(long userId, String userName, int userSex){
          this.userId = userId;
          this.userName = userName;
          this.userSex = userSex;
     }
}

このURLをUserオブジェクトに変換する方法は?このURLの場合、User user = new User(1、 "john"、1)を取得したいのですが、Javaフレームワークはありますか?

4

7 に答える 7

1

番号。そのために部分文字列を使用し、オブジェクトに設定します

于 2012-08-21T06:52:01.280 に答える
0

それは非常に単純で、フレームワークは必要ありません。下記参照:

パブリック クラス TestClass {

    public static void main (String[] args) throws Exception {
        URL url = new URL("http://www.xxx.com/getUser?userid=1&username=john%20doe&usersex=1");
        String q = url.getQuery();
            User user = new User();
        for (String token : q.split("&")) {
            if (token.startsWith("userid")) {
                int index = token.indexOf('=');
                if (index >= 0 && index <token.length()-1) {
                    user.setUserId(Long.parseLong(token.substring(index+1)));
                }
            }
            if (token.startsWith("username")) {
                int index = token.indexOf('=');
                if (index >= 0 && index <token.length()-1) {
                    user.setUserName(java.net.URLDecoder.decode(token.substring(index+1)));
                }
            }
            if (token.startsWith("usersex")) {
                int index = token.indexOf('=');
                if (index >= 0 && index <token.length()-1) {
                    user.setUserSex(Integer.parseInt(token.substring(index+1)));
                }
            }
        }
            System.out.println(user.toString());
    }

}

class User {
     private long userId;
     private String userName;
     private int userSex;

     //constructos
     User(long userId, String userName, int userSex){
          this.userId = userId;
          this.userName = userName;
          this.userSex = userSex;
     }    

    User() {
          this.userId = -1;
          this.userName = "undefined";
          this.userSex = -1;
    }

    @Override
    public String toString() {
        return String.format("id: %d; name: %s, sex: %d", userId, userName, userSex);
    }

    /**
     * @return the userId
     */
    public long getUserId() {
        return userId;
    }

    /**
     * @param userId the userId to set
     */
    public void setUserId(long userId) {
        this.userId = userId;
    }

    /**
     * @return the userName
     */
    public String getUserName() {
        return userName;
    }

    /**
     * @param userName the userName to set
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

    /**
     * @return the userSex
     */
    public int getUserSex() {
        return userSex;
    }

    /**
     * @param userSex the userSex to set
     */
    public void setUserSex(int userSex) {
        this.userSex = userSex;
    }
}
于 2012-08-21T07:36:43.723 に答える
0

これにはJavaフレームワークはないと思います。ソリューションは非常に単純なので、自分で実装できます。

于 2012-08-21T06:56:17.567 に答える
0

Apache HttpComponents を使用してみてください。URL を読み取って、次のような個々のコンポーネントに解析するお手伝いをします。

  • 呼び出されたページ
  • 名前付き値のペアとしての値を持つ引数のリスト

リンク: Apache HttpComponents

与えられたさまざまな例を使用して、目的に合わせて調整できます。

于 2012-08-21T07:09:42.447 に答える
0

Apache Commons BeanUtils を見てください。

于 2012-08-21T06:57:17.877 に答える
0
  • Struts各 HTML フォームに Java バッキング Bean がある場合の ように、任意の MVC フレームワークを使用できます。
  • MVC が重いと感じる場合は、 を使用して独自のロジックを記述できます Java Reflections API
于 2012-08-21T06:59:35.527 に答える
0

RestEasy を使用してみませんか?
私は以前にそれを使用したことはありませんが、いくつかの例に基づいて、非常に単純なようです。可能な実装を参照してください。

@GET
@Path("getUser") //example: "/getUser?userid=1&username=john&usersex=1"
@Produces("application/json")
public User getUser(@QueryParam("userid") final long userId, @QueryParam("username") final String userName, @QueryParam("usersex") final int userSex) {
    User user = new User(userId, userName, userSex);
    // do what's required

    return user;
}

問題は、ここで返されると予想される出力形式もです。JSON 応答のサンプルを提供しました。

于 2012-08-21T07:18:19.467 に答える