SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事(AD)

JAX-RS/CDIのサポートでマイクロサービスの開発も容易に ~ Java EE 7正式対応で大幅強化された「WebSphere Application Server Liberty Core」

  • このエントリーをはてなブックマークに追加

ダウンロード sample.zip (87.5 KB)

5 ZipcodeServiceを使った住所の検索

 一通りの実装が完了したら、プロジェクトをサーバー上で実行しよう。プロジェクトマネージャーから[実行]-[サーバーで実行]を選び、使用するサーバーとして「Liberty Profile」を指定する(図5.1)。

図5.1
図5.1

 起動が完了したら、Webブラウザからリクエスト用のURLにアクセスしてみる。本稿の例では、すべての住所データを取得したい場合のURLは「http://localhost:9080/ZipcodeService/ws/address/all」であり、アクセスすると図5.2のようなJSONデータが返ってくるはずだ。

図5.2
図5.2

 郵便番号を指定して検索する場合には、URLは「http://localhost:9080/ZipcodeService/ws/address/search?zip=郵便番号」となる。検索条件として「5220002」を指定した場合には、図5.3のようなJSONデータが返される。

図5.3
図5.3

 続いて、JSON形式でのリクエストを試してみよう。今回は、リクエストを発行するクライアント側のHTML/JavaScriptとして次のようなコードを用意した。リクエストはAjaxによって発行し、レスポンスデータはテーブルで表示する。JavaScriptフレームワークはjQueryDataTablesを利用している。DataTablesは、検索やソートなどの機能を持ったテーブルを簡単に構築することができるjQueryプラグインである。

リスト5.4
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>住所検索</title>
    <link rel="stylesheet" type="text/css" href="css/jquery.dataTables.min.css">
    <script type="text/javascript" src="./js/jquery-2.1.4.min.js"></script>
    <script type="text/javascript" src="./js/jquery.dataTables.min.js"></script>
    
    <script type="text/javascript">
      
        $(document).ready(function() {
           $('#dataTable').DataTable();
        });
  
        $(function () {
            $('#searchButton').click(function() {
                // テーブルの初期化
                $('#dataTable').DataTable().destroy();
                
                // リクエスト先のURL
                var target = "http://localhost:9080/ZipcodeService/ws/address/jsonsearch";
                // リクエストパラメータ用のJSONデータ
                var paramData = { "zip" : $('#zipInput').val() };
            
                // リクエストを発行してデータを取得し、テーブルを構成する
                $('#dataTable').DataTable( {
                    "columns": [
                           { "data": "id", "sDefaultContent": "" },
                           { "data": "zip", "sDefaultContent": "" },
                           { "data": "address", "sDefaultContent": "" }
                    ],
                    "ajax": {
                        "url": target,
                        "type": "POST",
                        "contentType": "application/json",
                        "data": function () {
                            return JSON.stringify( paramData );
                        }
                       },
                       "sAjaxDataProp": ""
                });
            });
        });
        
  </script>
</head>

<body>

    <h1 class='ui-widget-header'>住所検索</h1>

    <div style="margin:20px">
         郵便番号: <input id="zipInput" type="text" size="20px" />
        <button id="searchButton" type="submit">検索</button>
    </div>
    
    <div style="margin:20px">
        <table id="dataTable" class="display">
              <thead align="left">
                <tr>
                    <th width="10%">ID</th>
                    <th width="20%">郵便番号</th>
                    <th>住所</th>
                  </tr>
            </thead>
            <tbody>
            </tbody>
        </table>
    </div>

</body>
</html>

 DataTablesでは、ajaxオプションを指定することで、jQueryと同様にAjax通信によってリクエストを発行し、その結果をテーブルのデータとしてセットすることができる。この例では、フォームに入力された文字列をzipパラメータの値とするようなJSONデータを作成し、それを使って「http://localhost:9080/ZipcodeService/ws/address/jsonsearch」に対してリクエストを発行している。

 例えば郵便番号に「5220002」を入力して検索した場合、図5.5のような結果になった。

図5.5
図5.5

 このときのリクエストおよびレスポンスのJSONデータは次のようなものになっていた。

リスト5.6
{ "zip" : "5220002" }
リスト5.7
[
    { "address" : "滋賀県彦根市松原",
      "id" : "0075683",
      "zip" : "5220002" },
    { "address" : "滋賀県彦根市松原町",
      "id" : "0075684",
      "zip" : "5220002"}
]

次のページ
6 JAX-RS 2.0のクライアントAPIの利用

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

杉山 貴章(スギヤマ タカアキ)

有限会社オングスにて、Javaを中心としたソフトウェア開発や、プログラミング関連書籍の執筆、IT系の解説記事やニュース記事の執筆などを手がけている。そのかたわら、専門学校の非常勤講師としてプログラミングやソフトウェア開発の基礎などを教えている。著書に『Javaアルゴリズム+データ構造完全制覇』『Ja...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8834 2015/08/05 10:39

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング