Ajaxフレームワーク ユーザーズガイド
目次 索引 前ページ次ページ

第3章 通信フレームワーク> 3.4 サーブレット連携機能(汎用通信方式)

3.4.5 ビジネスロジックの実行

ここでは、ビジネスロジックを実行して結果を受信するためのJavaScriptアプリケーションの作成方法について説明します。

■リクエストの作成

リクエストの作成は、以下の手順で行います。

  1. JavaScriptオブジェクトを作成してデータを格納します。
  2. 作成したJavaScriptオブジェクトを文字列に変換します。オブジェクトから文字列への変換には、RcfObjectConverter.encode関数を使用します。
  3. 変換した文字列をリクエストパラメタの値として使えるように、encodeURIComponent関数でエンコードします。
  4. エンコードした文字列を、ビジネスロジックの実行時に指定するリクエストパラメタに設定します。

■ビジネスロジックの実行

ビジネスロジックを実行するには、XMLHttpRequestクラスオブジェクトを生成し、onreadystatechangeプロパティなどの必要なプロパティを設定してリクエストを送信します。

リクエストの送信は、XMLHttpRequestオブジェクトクラスのsend関数を使用します。



Internet Explorer 6では、XMLHttpRequestクラスオブジェクトでなくActiveXObjectクラスオブジェクトを生成します。

var httpReq = new ActiveXObject("Msxml2.XMLHTTP");

■コールバック

onreadystatechangeプロパティに設定した関数で、レスポンスの受信完了を待ちます。

■レスポンスからのオブジェクト取得

レスポンスからのオブジェクトの取得は、以下の手順で行います。

  1. 受信したレスポンスのボディから文字列を取得します。この文字列は、ビジネスロジックから返却されたJSON形式の文字列です。
  2. 文字列がJSON形式として正しいかどうかをチェックします。
  3. 文字列をevalでオブジェクトに変換します。


evalでオブジェクトに変換する前に、不当なコードが文字列に含まれていないことをチェックしてください。
JSON形式とそのチェック方法については、RFC 4627を参照してください。

以下に、JavaScriptアプリケーションの記述例を示します。

/* イベント処理 */
function onClicked() {
    try {
        // リクエストの作成
        var obj = new Object();
        obj.key = ...;
        var str = RcfObjectConverter.encode(obj);
        str = encodeURIComponent(str);
        var param = 'obj=' + str + '&command=init';
        // XMLHttpRequestの生成
        var httpReq = new XMLHttpRequest();
        // コールバックの設定
        httpReq.onreadystatechange = function(res) {
            if ((httpReq.readyState == 4) && 
                (httpReq.status == 200)) {
                obj = receive(httpReq.responseText);
                // 受信したオブジェクトの処理
                ...;
            }
        }
        // ビジネスロジックの実行
        httpReq.open('post', url, true);
        httpReq.setRequestHeader('Content-Type', 
            'application/x-www-form-urlencoded; charset=UTF-8');
        httpReq.send(param);
    } catch (e) {
        // エラー処理
        ...;
    }
}
/* レスポンス受信 */
function receive(res) {
    // レスポンスからオブジェクト取得
    var obj = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
        res.replace(/"(\\.|[^"\\])*"/g, ''))) &&
        eval('(' + res + ')');
    if (!obj) {
        // エラー処理
        ...;
        return null;
    }
    return obj;
}

ビジネスロジックの実行で使用するJavaScript用の関数を以下に説明します。

■RcfObjectConverter.encode関

JavaScriptアプリケーションの送信データであるオブジェクトを文字列に変換する関数です。
オブジェクトは、Ajaxフレームワークが規定する独自形式で文字列に変換されますが、アプリケーションがこの形式を意識する必要はありません。変換した文字列は、ビジネスロジックの処理で、com.fujitsu.interstage.rcf.converter.RcfBeanConverterクラスのdecodeメソッドでJavaBeanに変換できます。

■RcfObjectConverter.encode関数の記述形式

以下に、RcfObjectConverter.encode関数の記述形式を示します。

RcfObjectConverter.encode(dataObj);

■RcfObjectConverter.encode関数が通知する例外

RcfObjectConverter.encode関数が通知する例外については、“通信フレームワーク(JavaScript)に関するメッセージ”を参照してください。


目次 索引 前ページ次ページ

Copyright 2009 FUJITSU LIMITED