OpenLaszloアドバンスド・テクニック(2) Page 2/3
Webアプリと連携するためのコーディング基礎
ネットエイト小野 圭二
2006/5/9
■LZXアプリケーションからサーバへのデータ送信方法
それではLZXアプリケーションからサーバサイドプログラムへPOST/GETでデータを送信する方法です。単純に、テキストデータを渡してみましょう。リスト4のサンプルは、<edittext>にデータを入力して<button>をクリックするとservertest.jspにデータが送信される例です。
<button>タグ内の<method>タグ内の変数「ed」は、<edittext>に入力されたデータを格納します。同様に「d」には使用するサーバサイドオブジェクトプログラムの名前を指定します。そしてオブジェクト「p」に送信するデータを設定するわけです。送信されるデータは「addValue( name, value, boolean )」により、「name=value」形式で格納され、「setQueryString()」で最終的なクエリが作られ、「doRequest()」でサーバへ送信されます。デフォルトではGETでの通信となります。POSTで通信する場合は、リスト5の文を追加します。
<dataset name="servertest" src="http:jsp/servertest.jsp"/> |
リスト4 サーバサイドプログラムへのデータ送信 servertest.jspは「http://127.0.0.1:8080/lps-3.2/it1/src/jsp/servertest.jsp」に格納している前提で解説しています。 |
d.setQueryString( p ); |
リスト5 POSTでの通信 |
サーバサイドプログラムのservertest.jspはリスト6とします。
<%@ page language="java" contentType="text/xml; charset=UTF-8" %> |
リスト6 サーバサイドのJSPプログラム |
リスト6のJSPプログラムは、LZXアプリケーションから送信されるデータ「ed」を取得してnull判定を行い、結果を出力します。
さて、このJSPの出力はどうなるのでしょうか。LZXアプリケーションはこの出力(戻り値)を<dataset>で受けます。つまり、「servertest」オブジェクトに格納されるのです。この戻り値を使って、LZXアプリケーションは処理結果の判定を行うことができます。また、もしもservertest.jspが検索プログラムのようなものであった場合、検索キーとしての「ed」に対する検索結果(複数データ)をサーバサイドプログラムは同様にXML形式でLZXアプリケーションに返し、同様に「servertest」オブジェクトに格納されます。
さらに、サーバサイドプログラムに対してタイムアウトを設定できます。デフォルトでは30秒に設定されているのですが、「OpenLaszlo Server 3.2\Server\lps-3.2\WEB-INF\lps\config\lps.properties」の65行目からにある設定から「#」を取り除き有効にすると、ここで設定した時間(msec設定)がデフォルトになります。また、<dataset>のtimeout属性を設定することで、<dataset>それぞれで異なるタイムアウトを持つこともできます。
■サーバからのデータの受け方
サーバから送られてくるデータは<dataset>で指定されるオブジェクトに格納されます。通信時のエラーやタイムアウト、または送信されてきたデータによる処理の分岐を行うには<datapointer>タグを使用します。例えばリスト7のような感じです。
<datapointer xpath="servertest:/*[1]"> |
リスト7 <datapointer>タグの使用例 |
例として、リスト6のXMLデータメッセージを受け取ったとして、以下の場合にそれぞれアラームメッセージを表示してみます(リスト8)。
- タイムアウト [イベント:ontimeout] → 「タイムアウト」と表示
- エラー発生 [イベント:onerror ] → 「エラー」と表示
- 期待値の場合 [イベント:ondata ] → 「成功」と表示
- 期待値以外の場合 [イベント:ondata ] → 「残念」と表示
<alert name="al"/> |
リスト8 アラームメッセージの条件分岐ロジック |
<alert>タグはアラートメッセージを表示するウィンドウです。<dataset>タグで指定された「servertest」オブジェクトにサーバサイドプログラムからの値が格納されますが、もしもクライアント/サーバ間の通信がタイムアウトした場合は、「ontimeout」イベントが発生します。同様に、通信エラーが発生した場合には「onerror」イベントが発生します。通信が正常に終了し「servertest」オブジェクトに何らかの値がセットされると「ondata」イベントが発生します。これらイベントをキャッチして各<method>タグにてそれぞれのメッセージを指定し、<alert>ウィンドウを表示する「alcall()」メソッドを呼び出してアラームメッセージを表示しています。
2/3 |
INDEX |
||
OpenLaszloアドバンスド・テクニック(2) Webアプリと連携するためのコーディング基礎 |
||
Page1 はじめに Openlaszloの配備方法 サーバ連携で取り扱うデータ形式 |
||
Page2 LZXアプリケーションからサーバへのデータ送信方法 サーバからのデータの受け方 |
||
Page3 データのバインド例 |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|