(57)【要約】【課題】  ユーザがＷｅｂブラウザに入力して送信したデータと、Ｗｅｂサーバが格納するデータとの不一致を防止すること。【解決手段】  表示画面に対応付けられたインスタンスに、Ｗｅｂブラウザからのリクエストによって変数の書き換えを行うことが可能かどうかを示すメンバ変数ｍｏｄｅを設ける。そして、メンバ変数ｍｏｄｅが書き換え可能な状態にある場合にのみ、リクエストに応じた変数の書き換えを行う。【選択図】  図８
2006092116.tif 000002
【特許請求の範囲】
【請求項１】
Ｗｅｂブラウザで表示させる画面に対応づけされ、前記画面をブラウザで表示させるためのデータ送信と、当該画面の操作によって前記Ｗｅｂブラウザから発せられるリクエストを処理するインスタンスを用いるＷｅｂサーバであって、
前記インスタンスが、
参照可能な変数保持手段に格納された所定の変数の書き換えが可能であるか否かを示す書き換え可否情報を保持する手段と、
前記Ｗｅｂブラウザから、前記所定の変数の書き換えリクエストを受信した場合、前記書き換え可否情報を参照し、前記書き換え可否情報が書き換え可能であることを示す場合にのみ前記所定の変数を書き換える書き換え手段とを有することを特徴とするＷｅｂサーバ。
【請求項２】
第１の画面に対応付けられたインスタンスが、前記Ｗｅｂブラウザから受信したリクエストによって、前記Ｗｅｂブラウザに第２の画面表示を行う必要がある場合、前記第２の画面に対応付けられ、前記所定の変数を書き換え可能であることを示す状態の書き換え可否情報を有するインスタンスを作成するとともに、前記第１の画面に対応付けられたインスタンスの前記書き換え可否情報を書き換え不可を表す状態に変更し、前記第２の画面に対応付けられたインスタンスの前記書き換え可否情報を書き換え可を表す状態に変更することを特徴とする請求項１記載のＷｅｂサーバ。
【請求項３】
前記第１の画面に対応付けられたインスタンスが、前記第２の画面に対応付けられたインスタンスを特定する情報を、次画面へ遷移するための情報として保持することを特徴とする請求項２記載のＷｅｂサーバ。
【請求項４】
前記第２の画面に対応付けられたインスタンスが、前記第１画面に対応付けられたインスタンスを特定する情報を、前画面へ遷移するための情報として保持することを特徴とする請求項３記載のＷｅｂサーバ。
【請求項５】
前記第２の画面に対応付けられたインスタンスが、前記Ｗｅｂブラウザから前記第１の画面表示リクエストを受信した場合、前記第２の画面に対応付けられたインスタンスが有する書き換え可否情報を書き換え不可を表す状態に、前記第１の画面に対応付けられたインスタンスが有する書き換え可否情報を書き換え可能を表す状態に変更することを特徴とする請求項４記載のＷｅｂサーバ。
【請求項６】
前記変数保持手段が、個々のインスタンスに設けられることを特徴とする請求項１乃至請求項５のいずれか１項に記載のＷｅｂサーバ。
【請求項７】
前記変数保持手段が、個々のインスタンスから参照可能な１つの手段として設けられることを特徴とする請求項１乃至請求項５のいずれか１項に記載のＷｅｂサーバ。
【請求項８】
前記インスタンスが、前記Ｗｅｂブラウザから前記所定の変数の書き換えリクエストを受信した際、前記書き換え可否情報が書き換え不可であることを示す状態であった場合、エラー画面に対応付けられたインスタンスを生成して前記Ｗｅｂブラウザにエラー画面を表示させることを特徴とする請求項１乃至請求項７のいずれか１項に記載のＷｅｂサーバ。
【請求項９】
前記インスタンスが、前記Ｗｅｂブラウザから前記所定の変数の書き換えリクエストを受信した際、前記書き換え可否情報が書き換え不可であることを示す状態であった場合、前記Ｗｅｂブラウザに対し静的なエラー画面へのリダイレクト情報を送信し、前記Ｗｅｂブラウザに静的なエラー画面を表示させることを特徴とする請求項１乃至請求項７のいずれか１項に記載のＷｅｂサーバ。
【請求項１０】
Ｗｅｂブラウザで表示させる画面に対応づけされ、前記画面をブラウザで表示させるためのデータ送信と、当該画面の操作によって前記Ｗｅｂブラウザから発せられるリクエストを処理するインスタンスを用いるＷｅｂサーバであって、
ある１つのインスタンスを特定する特定情報を記憶する記憶手段を有し、
前記インスタンスが、
所定の変数を格納する変数保持手段と、
前記Ｗｅｂブラウザから、前記所定の変数の書き換えリクエストを受信した場合、前記記憶手段を参照し、前記特定情報が自身を特定する場合にのみ前記所定の変数を書き換える書き換え手段とを有することを特徴とするＷｅｂサーバ。
【請求項１１】
第１の画面に対応付けられたインスタンスが、前記Ｗｅｂブラウザから受信したリクエストによって、前記Ｗｅｂブラウザに第２の画面表示を行う必要がある場合、前記第２の画面に対応付けられたインスタンスを作成するとともに、前記特定情報を前記第２の画面に対応付けられたインスタンスを特定する情報に変更することを特徴とする請求項１０記載のＷｅｂサーバ。
【請求項１２】
前記第１の画面に対応付けられたインスタンスが、前記第２の画面に対応付けられたインスタンスを特定する情報を、次画面へ遷移するための情報として保持することを特徴とする請求項１１記載のＷｅｂサーバ。
【請求項１３】
前記第２の画面に対応付けられたインスタンスが、前記第１画面に対応付けられたインスタンスを特定する情報を、前画面へ遷移するための情報として保持させることを特徴とする請求項１２記載のＷｅｂサーバ。
【請求項１４】
前記第２の画面に対応付けられたインスタンスが、前記Ｗｅｂブラウザから前記第１の画面表示リクエストを受信した場合、前記特定情報を前記第１の画面に対応付けられたインスタンスを特定する情報に変更することを特徴とする請求項１３記載のＷｅｂサーバ。
【請求項１５】
前記変数保持手段が、個々のインスタンスに設けられることを特徴とする請求項１０乃至請求項１４のいずれか１項に記載のＷｅｂサーバ。
【請求項１６】
前記変数保持手段が、個々のインスタンスから参照可能な１つの手段として設けられることを特徴とする請求項１０乃至請求項１４のいずれか１項に記載のＷｅｂサーバ。
【請求項１７】
前記インスタンスが、前記Ｗｅｂブラウザから前記所定の変数の書き換えリクエストを受信した際、前記特定情報が他のインスタンスを特定する情報であった場合、エラー画面に対応付けられたインスタンスを生成して前記Ｗｅｂブラウザにエラー画面を表示させることを特徴とする請求項１０乃至請求項１６のいずれか１項に記載のＷｅｂサーバ。
【請求項１８】
前記インスタンスが、前記Ｗｅｂブラウザから前記所定の変数の書き換えリクエストを受信した際、前記特定情報が他のインスタンスを特定する情報であった場合、前記Ｗｅｂブラウザに対し静的なエラー画面へのリダイレクト情報を送信し、前記Ｗｅｂブラウザに静的なエラー画面を表示させることを特徴とする請求項１０乃至請求項１６のいずれか１項に記載のＷｅｂサーバ。
【請求項１９】
前記インスタンスが、前記Ｗｅｂブラウザから前記所定の変数の書き換えリクエストを受信した際、前記特定情報が他のインスタンスを特定する情報であった場合、前記特定情報で特定されたインスタンスを使用して前記特定情報で指定されたインスタンスと対応付けられた画面に遷移することを特徴とする請求項１０乃至請求項１６のいずれか１項に記載のＷｅｂサーバ。
【請求項２０】
前記特定情報で特定されたインスタンスを使用して前記特定情報で指定されたインスタンスと対応付けられた画面に遷移する際に、前記特定情報で特定されたインスタンス以外に対しリクエストがなされた旨の表示を画面に付加することを特徴とする請求項１９に記載のＷｅｂサーバ。
【請求項２１】
Ｗｅｂブラウザで表示させる画面に対応づけされ、前記画面をブラウザで表示させるためのデータ送信と、当該画面の操作によって前記Ｗｅｂブラウザから発せられるリクエストを処理するインスタンスを用いるＷｅｂサーバの制御方法であって、
前記インスタンスが前記Ｗｅｂブラウザから、前記所定の変数の書き換えリクエストを受信した場合、参照可能な変数保持手段に格納された所定の変数の書き換えが可能であるか否かを示す書き換え可否情報を参照する工程と、
前記書き換え可否情報が書き換え可能であることを示す場合にのみ前記インスタンスが前記所定の変数を書き換える書き換え工程とを有することを特徴とするＷｅｂサーバの制御方法。
【請求項２２】
Ｗｅｂブラウザで表示させる画面に対応づけされ、前記画面をブラウザで表示させるためのデータ送信と、当該画面の操作によって前記Ｗｅｂブラウザから発せられるリクエストを処理するインスタンスを用いるＷｅｂサーバの制御方法であって、
前記インスタンスが、前記Ｗｅｂブラウザから、前記インスタンスが有する変数保持手段に格納される所定の変数の書き換えリクエストを受信した場合、ある１つのインスタンスを特定する特定情報を記憶する記憶手段を参照する工程と、
前記特定情報が自身を特定する場合にのみ前記インスタンスが前記所定の変数を書き換える書き換え工程とを有することを特徴とするＷｅｂサーバの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＷｅｂブラウザとデータを交換しながら所定の処理を行うＷｅｂサーバ及びその制御方法に関する。
【背景技術】
【０００２】
従来、インターネットを利用した商品の注文を受け付ける通信販売サービスがある。これらの通信販売サービスでは、業者側がＷｅｂサーバを設置し、顧客は特定のＷｅｂサーバとの接続を目的としていない汎用のＷｅｂブラウザアプリケーションを使用し、インターネットを通して、業者の設置したＷｅｂサーバにアクセスし、購入の申し込みや決済などを行うことで電子商取引が行われる。
【０００３】
なお、Ｗｅｂサーバは、その処理をアプリケーションサーバやデータベースサーバと分担して実現している場合もあるが、本明細書においては、これらのサーバなども含め、ＷｅｂブラウザとＨＴＴＰ(Hyper Text Transfer Protocol)に従いデータのやり取りを行い、所定のサービスの提供又は所定の処理を実現する装置又はシステム全体を、Ｗｅｂサーバと呼ぶ。
【０００４】
インターネットを利用した通信販売などの電子商取引は、Ｗｅｂサーバ側の処理と、Ｗｅｂブラウザでの処理、この間のＨＴＴＰに従ったデータのやり取りによって構成される（例えば、特許文献１参照）。
【０００５】
顧客が使用するＷｅｂブラウザアプリケーションは特定のＷｅｂサーバとの接続を目的としておらず、またＷｅｂサーバとは独立して動作するアプリケーションであるため、ＷｅｂサーバがＷｅｂブラウザ側の状態（例えばどのような画面が表示されているか）を知ることができる場合は限られる。
【０００６】
Ｗｅｂブラウザには、過去に表示したページを時系列に従って参照する際に用いられる「もどる」、「すすむ」という機能や、新規ウィンドウを作成すると今までフォーカスされていたウィンドウの表示がそのまま表示される機能が提供されている。これらの機能が使用されてもキャッシュされているデータを利用するだけで、Ｗｅｂサーバに新たなリクエストが発生しないことが多いので、Ｗｅｂブラウザで現在どのような画面が表示されているかをＷｅｂサーバで知ることはさらに難しくなっている。
【０００７】
また動作の異なる様々なＷｅｂブラウザが存在するため、状況はより複雑になる。例えば、「もどる」という機能を実行した際に、表示するページのＷｅｂサーバに新たなリクエストを発生しないＷｅｂブラウザと、発生するＷｅｂブラウザが存在する。またウィンドウのサイズを変えた時にさえ、新たなリクエストを発生するＷｅｂブラウザも存在する。
【０００８】
【特許文献１】特開平１０−１２４４５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
このように、多様なＷｅｂブラウザが混在する環境において、Ｗｅｂブラウザが有する独自機能が使用された時、ユーザがＷｅｂブラウザから送信したデータと、その結果としてＷｅｂサーバに格納されるデータとが一致しない（或いは、ユーザが意図した処理と、Ｗｅｂサーバでの処理結果とが一致しない）ことが起こりうる。
【００１０】
具体的な例を使用してＷｅｂサーバ側とＷｅｂブラウザ側の状態の不一致がおきる場合を説明する。
図１は、通信販売サービスを提供するＷｅｂサーバと、このＷｅｂサーバに接続したＷｅｂブラウザに表示される画面の変化を模式的に示した図である。
【００１１】
画面Ｂ１０１〜Ｂ１０４は、取引の進捗に従うＷｅｂサーバとＷｅｂブラウザとのやりとりによってＷｅｂブラウザで表示される画面の例を示しており、図２〜図４に拡大して示している。
【００１２】
顧客（ユーザ）が商品選択画面Ｂ１０１（図２）に表示される商品の購入ボタンＰ１０２を押下（マウスでクリックする、キーボードのEnterキーを押下する等により、ＧＵＩ中のボタンを押下することを意味する。以下の説明でも同様である）等して商品を選択すると、購入ボタンＰ１０２に割り当てられたＵＲＬにＷｅｂブラウザがリクエストを発する。
【００１３】
このＵＲＬに対応するＷｅｂサーバ上のインスタンスＤ１０１がユニークなセッションＩＤを発行し、インスタンスＤ１０２をＷｅｂサーバのメモリ上に作成する。この時インスタンスＤ１０２のメンバ変数ｓｅｓｓｉｏｎ＿ｉｄにインスタンスＤ１０１が発行したセッションＩＤを格納する。インスタンスＤ１０２はＷｅｂブラウザに購入者情報入力画面Ｂ１０２（図３）を送信する。
【００１４】
ユーザは氏名と住所を例えばキーボードからテキストフィールドＰ２０１およびＰ２０２に入力し、「ＯＫ」ボタンＰ２０４を押下すると、「ＯＫ」ボタンＰ２０４に割り当てられたＵＲＬに、テキストフィールドＰ２０１及びＰ２０２に入力された氏名と住所の情報を付加し、Ｗｅｂブラウザがリクエストを発する。
【００１５】
このＵＲＬにはインスタンスＤ１０２が対応付けられており、インスタンスＤ１０２は住所、氏名の情報を受け取り、図６のフローチャートに示すような、以下のような処理を行う。
【００１６】
インスタンスＤ１０２は、氏名をメンバ変数ｎａｍｅに、住所をメンバ変数ａｄｄｒｅｓｓに格納する（Ｓ１０１）。またインスタンスＤ１０３を作成し（Ｓ１０２）、新たに作成したインスタンスＤ１０３をインスタンスＤ１０２のメンバ変数ｎｅｘｔに格納する（Ｓ１０３）。そして、インスタンスＤ１０３のメンバ変数ｓｅｓｓｉｏｎ＿ｉｄ、ｎａｍｅ、ａｄｄｒｅｓｓにインスタンスＤ１０２と同じものを格納する（Ｓ１０６）。
【００１７】
さらにインスタンスＤ１０３のメンバ変数ｐｒｅｖにインスタンスＤ１０２を格納し（Ｓ１０７）、インスタンスＤ１０３はＷｅｂブラウザに入力情報の確認画面Ｂ１０３（図４）を送信する（Ｓ１０８）。
【００１８】
ユーザが確認画面Ｂ１０３に表示された氏名Ｐ３０１と住所Ｐ３０２を確認の上「確認」ボタンＰ３０４を押下すると、Ｗｅｂブラウザが「確認」ボタンＰ３０４に対応付けられているＵＲＬにリクエストを発する。このＵＲＬにはインスタンスＤ１０３が対応付けられており、インスタンスＤ１０３はＤＢ（データベース）に注文内容、注文主の氏名、住所を格納し、画面Ｂ１０１ａ（図２）へのリダイレクトを行うようにＷｅｂブラウザに指示する。
【００１９】
インスタンスＤ１０２およびＤ１０３においてメンバ変数ｎａｍｅ、ａｄｄｒｅｓｓやＤＢに値の格納を行う際にエラーが発生した時は、インスタンスＤ１０４を新規に作成し、Ｗｅｂブラウザにエラー表示画面Ｂ１０４（図５）を表示させる。画面中Ｐ４０１でエラーコード（err001）が表示されているが、ユーザ向けのわかりやすいメッセージを表示することもできる。エラーコードを動的に表示することをしないで、静的な（エラー内容にかかわらず同一の）エラーページを表示する場合もあるが、その際はインスタンスＤ１０４は存在せず、静的ページである画面Ｂ１０４への遷移はＷｅｂブラウザの機能を使用したリダイレクトによることになる。
【００２０】
また、確認画面Ｂ１０３（図４）に「もどる」ボタンＰ３０５を、ブラウザによる「もどる」機能とは別に設けた場合、Ｐ３０５に対応づけされているインスタンスＤ１０３にはメンバ変数ｐｒｅｖが存在するので、メンバ変数ｐｒｅｖに格納されているインスタンスＤ１０２を使用し、１つ前の入力画面Ｂ１０２をＷｅｂブラウザに表示させることができる。
【００２１】
また同様に、インスタンスＤ１０２にはメンバ変数ｎｅｘｔがあるので、再表示された入力画面Ｂ１０２の「ＯＫ」ボタンＰ２０４を押下した場合、メンバ変数ｎｅｘｔを使用してインスタンスＤ１０３を取得し、メンバ変数ｎａｍｅやａｄｄｒｅｓｓを設定して、画面Ｂ１０３を表示させることも可能である。こうすることで画面遷移のたびに新しいインスタンスを作成することなく、すばやい画面遷移が実現でき、またメモリの消費量も少なく抑えることができる。
【００２２】
なお、上述の一連の処理において、図７に示すように、インスタンスＤ１０２’とＤ１０３’で相互に参照更新できるインスタンスＤ２０５を用意し、メンバ変数ｎａｍｅ、ａｄｄｒｅｓｓをＤ２０５のメンバ変数とすれば、Ｄ１０３’を作成した後インスタンスＤ１０３’のメンバ変数ｎａｍｅ、ａｄｄｒｅｓｓにインスタンスＤ１０２’のメンバ変数ｎａｍｅ、ａｄｄｒｅｓｓの値を格納する図６のＳ１０６の処理は不要となる。
【００２３】
つまりインスタンスＤ１０２’を作成時に、インスタンスＤ２０５を作成し、インスタンスＤ１０２’のメンバ変数ｃｕｓｔｏｍｅｒにインスタンスＤ２０５を格納する。そしてユーザの氏名・住所を更新する際はメンバ変数ｃｕｓｔｏｍｅｒに格納されているインスタンスＤ２０５のメンバ変数ｎａｍｅ、ａｄｄｒｅｓｓに対し更新を行い、インスタンスＤ１０３’を作成する際はそのメンバ変数ｃｕｓｔｏｍｅｒにインスタンスＤ１０２のメンバ変数ｃｕｓｔｏｍｅｒに格納されるインスタンスと同じインスタンスを格納する。
【００２４】
上記が現在商品の購入を行う際に通常使用されているプロセスのもっとも簡略化された例である。この例では商品選択画面（Ｂ１０１、Ｂ１０１ａ）を静的ページとし、クレジットカード番号入力画面など決済に関する画面が含まれていないが、これは本発明が解決しようとして課題とは直接関係がないためである。実際には画面Ｂ１０１や画面Ｂ１０１ａが動的なページであることも多いが、そのような場合にも後述する問題は発生する。
【００２５】
また、実際にはこの例のように商品専用のインスタンスを作成するのではなく、商品を意味するメンバ変数や数量を格納するためメンバ変数を用意し、インスタンスＤ１０１から商品ＩＤなどを渡し、数量や配送先を入力する画面を別途用意するのが一般的であろう。
【００２６】
なおこの例ではまずインスタンスＤ１０１においてセッションＩＤを作成し、インスタンスＤ１０２およびＤ１０３のメンバ変数ｓｅｓｓｉｏｎ＿ｉｄに格納している。セッションＩＤをＵＲＬに含め、インスタンスＤ１０２およびＤ１０３とＵＲＬを対応付けることで、上で説明したように画面遷移によるメモリ消費を抑え、複数人が同時に同じ商品を購入することが可能となっている。このように一つのプロセスをセッションという形で維持するという手法は、現在一般的に使用されているものである。ログインを要するＷｅｂサーバにおいては通常、ログイン時にセッションＩＤを発行し、ログアウトまたはタイムアウトまでセッションを維持するのが通常であろう。
【００２７】
このように図１〜図７を用いて説明したプロセスは通常使用されているプロセスを簡略化した例であるが、このプロセスにおいて、Ｗｅｂブラウザ独自の機能が使用された時、ＷｅｂサーバにおいてはＷｅｂブラウザの状態を知ることはできず、ユーザがＷｅｂブラウザから行った操作と、その結果Ｗｅｂサーバに格納されるデータとが一致しないことが起こりうる。
【００２８】
以下、このような不一致が発生する場合について説明する。
上述したプロセスにおいて、Ｗｅｂブラウザに注文者入力画面Ｂ１０２が表示された状態にあり、また、注文者入力画面Ｂ１０２はＷｅｂブラウザのウィンドウＡ０１に表示されているものとする。ここで、注文者入力画面Ｂ１０２のＵＲＬを調べ、Ｗｅｂブラウザをもう一つ開き、同じＵＲＬを新規に開いたＷｅｂブラウザで表示する。この新規ウィンドウをＡ０２とする。
【００２９】
この結果、ウィンドウＡ０１とウィンドウＡ０２という、異なるウィンドウに、同一の注文者入力画面Ｂ１０２が表示される。２つのウィンドウＡ０１、Ａ０２で表示される画面Ｂ１０２はそれぞれが同じＵＲＬに対応付けられているので、同じ画面が表示されるわけである。なお、同じＵＲＬに２度以上リクエストが来た場合、エラー画面に遷移し、同じ画面を表示しないようにすることも可能である。しかし、前述したようにＷｅｂブラウザによっては表示中の画面の大きさを変えただけでも同じＵＲＬにリクエストを発生するため、このような同一ＵＲＬへの反復リクエストを防止する制御はあまり使用されていない。
【００３０】
ここで、まずウィンドウＡ０１に表示された注文者入力画面Ｂ１０２から氏名と住所を入力し、「ＯＫ」ボタンＰ２０４を押下すると、上述した図６のＳ１０１〜Ｓ１０８の処理が行われる。この結果、インスタンスＤ１０２およびインスタンスＤ１０３のメンバ変数ｎａｍｅとａｄｄｒｅｓｓには氏名、住所がそれぞれ格納され、ウィンドウＡ０１には入力確認画面Ｂ１０３が表示される。入力確認画面Ｂ１０３に表示される氏名と住所は、ウィンドウＡ０１に表示された入力画面Ｂ１０２で入力したものである。
【００３１】
次に、まだ注文者入力画面Ｂ１０２を表示中のウィンドウＡ０２から氏名と住所を入力し、画面Ｂ１０２の「ＯＫ」ボタンＰ２０４を押下する。ここで、ウィンドウＡ０１とウィンドウＡ０２はいずれも同じインスタンスＤ１０２およびＤ１０３に対応付けられているので、インスタンスＤ１０２およびインスタンスＤ１０３のメンバ変数ｎａｍｅとａｄｄｒｅｓｓに、ウィンドウＡ０２の画面から入力された氏名・住所が上書き格納される。そしてウィンドウＡ０２には画面Ｂ１０３が表示される。ここで表示される氏名と住所は、ウィンドウＡ０２の画面Ｂ１０２で入力したものである。
【００３２】
この状態で、ウィンドウＡ０１に表示されている入力確認画面Ｂ１０３の表示内容は更新されないので、依然としてウィンドウＡ０１から入力したデータ（ウィンドウＡ０２から入力されたデータにより上書きされる前のデータ）が表示されている。しかし、ユーザがこの表示を信頼して「確認」ボタンＰ３０４を押下しても、実際には、インスタンスＤ１０３のメンバ変数ｎａｍｅとａｄｄｒｅｓｓに上書きされた、ウィンドウＡ０２に表示された注文者入力画面Ｂ１０２で入力した氏名と住所が、ＤＢに格納されてしまう。
【００３３】
また、ウィンドウＡ０２に表示されている入力確認画面Ｂ１０３の「確認」ボタンＰ３０４を押下すると、同様に、画面Ｂ１０２で入力した氏名と住所がＤＢに格納される。このように、ユーザが例えばウィンドウＡ０１、Ａ０２それぞれから、別の氏名、住所を入力し、別個の注文を行う意図であったとしても、ＤＢには後で入力された注文主情報が格納され、同じ注文が二つ発生することになる。
【００３４】
このような不一致がおきるのは、ＷｅｂサーバがＷｅｂブラウザの状態を知ることができないためである。本発明はこのような課題を解決し、ユーザがＷｅｂブラウザに入力して送信したデータと、Ｗｅｂサーバが格納するデータとの不一致が発生しないようにすることを目的とする。
【課題を解決するための手段】
【００３５】
上述の目的は、Ｗｅｂブラウザで表示させる画面に対応づけされ、画面をブラウザで表示させるためのデータ送信と、当画面の操作によってＷｅｂブラウザから発せられるリクエストを処理するインスタンスを用いるＷｅｂサーバであって、インスタンスが、参照可能な変数保持手段に格納された所定の変数の書き換えが可能であるか否かを示す書き換え可否情報を保持する手段と、Ｗｅｂブラウザから、所定の変数の書き換えリクエストを受信した場合、書き換え可否情報を参照し、書き換え可否情報が書き換え可能であることを示す場合にのみ所定の変数を書き換える書き換え手段とを有することを特徴とするＷｅｂサーバによって達成される。
【００３６】
また、上述の目的は、Ｗｅｂブラウザで表示させる画面に対応づけされ、画面をブラウザで表示させるためのデータ送信と、当画面の操作によってＷｅｂブラウザから発せられるリクエストを処理するインスタンスを用いるＷｅｂサーバであって、ある１つのインスタンスを特定する特定情報を記憶する記憶手段を有し、インスタンスが、所定の変数を格納する変数保持手段と、Ｗｅｂブラウザから、所定の変数の書き換えリクエストを受信した場合、記憶手段を参照し、特定情報が自身を特定する場合にのみ所定の変数を書き換える書き換え手段とを有することを特徴とするＷｅｂサーバによっても達成される。
【００３７】
また、上述の目的は、Ｗｅｂブラウザで表示させる画面に対応づけされ、画面をブラウザで表示させるためのデータ送信と、当画面の操作によってＷｅｂブラウザから発せられるリクエストを処理するインスタンスを用いるＷｅｂサーバの制御方法であって、インスタンスがＷｅｂブラウザから、所定の変数の書き換えリクエストを受信した場合、参照可能な変数保持手段に格納された所定の変数の書き換えが可能であるか否かを示す書き換え可否情報を参照する工程と、書き換え可否情報が書き換え可能であることを示す場合にのみインスタンスが所定の変数を書き換える書き換え工程とを有することを特徴とするＷｅｂサーバの制御方法によっても達成される。
【００３８】
また、上述の目的は、Ｗｅｂブラウザで表示させる画面に対応づけされ、画面をブラウザで表示させるためのデータ送信と、当画面の操作によってＷｅｂブラウザから発せられるリクエストを処理するインスタンスを用いるＷｅｂサーバの制御方法であって、インスタンスが、Ｗｅｂブラウザから、インスタンスが有する変数保持手段に格納される所定の変数の書き換えリクエストを受信した場合、ある１つのインスタンスを特定する特定情報を記憶する記憶手段を参照する工程と、特定情報が自身を特定する場合にのみインスタンスが所定の変数を書き換える書き換え工程とを有することを特徴とするＷｅｂサーバの制御方法によっても達成される。
【発明の効果】
【００３９】
このような構成により、本発明によれば、ユーザがＷｅｂブラウザに入力して送信したデータと、Ｗｅｂサーバが格納するデータとの不一致を防止することが可能になる。
【発明を実施するための最良の形態】
【００４０】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。
＜第１の実施形態＞
図１２は本実施形態においてＷｅｂサーバ及び、Ｗｅｂブラウザアプリケーションを実行する情報処理装置として利用可能なコンピュータ装置の構成例を示すブロック図である。
【００４１】
図において、ディスプレイ１０１はアプリケーションプログラムによって処理中のデータの情報、各種メッセージメニューなどを表示し、ＣＲＴ（Cathode Ray Tube）、ＬＣＤ(Liquid Crystal Display)等から構成される。ビデオＲＡＭ（ＶＲＡＭ）ディスプレイコントローラとしてのＣＲＴＣ１０２は、ディスプレイ１０１への画面表示制御を行う。キーボード１０３及びポインティングデバイス１０４は、文字などを入力したり、ＧＵＩ（Graphical User Interface）におけるアイコンやボタンなどを指し示すためなどに用いられる。ＣＰＵ１０５はコンピュータ装置全体の制御を司る。
【００４２】
ＲＯＭ１０６（Read Only Memory）はＣＰＵ１０５が実行するプログラムやパラメータ等を記憶している。ＲＡＭ（Random Access Memory）１０７は各種プログラムをＣＰＵ１０５が実行する時のワークエリア、エラー処理時の一時退避エリア等として用いられる。
【００４３】
ハードディスクドライプ（ＨＤＤ）１０８、リムーバブルメディアドライプ（ＲＭＤ）１０９は、外部記憶装置として機能する。リムーバブルメディアドライブは、着脱可能な記録媒体の読み書き又は読み出しを行う装置であり、フレキシブルディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、メモリカードリーダはもとより、着脱式ＨＤＤなどであってもよい。
【００４４】
なお、本実施形態において説明するＷｅｂサーバの各種機能を実現するプログラムを始め、ＯＳや、Ｗｅｂブラウザ等のアプリケーションプログラム、データ、ライプラリなどは、その用途に応じてＲＯＭ１０６、ＨＤＤ１０８、ＲＭＤ１０９（の記録媒体）の１つ以上に記憶されている。
【００４５】
拡張スロット１１０は、例えばＰＣＩ(Peripheral Component Interconnect)バス規格に準拠した拡張カード装着用スロットであり、ビデオキャプチャボードや、サウンドボード、ＧＰＩＢボードなど、様々な拡張ボードを装着することが可能である。
【００４６】
ネットワークインタフェース１１１はコンピュータ装置をコンピュータネットワークに接続するためのインタフェースである。バス１１２はアドレスバス、データバスおよび制御バスからなり、上述した各ユニット間を接続する。また、ネットワークインタフェース１１１の他に、ＲＳ−２３２Ｃ、ＲＳ−４２２、ＵＳＢ(Universal Serial Bus)、ＩＥＥＥ１３９４等のシリアルインタフェースや、ＩＥＥＥ１２８４等のパラレルインタフェースを有し、モデムやプリンタ等の外部機器との接続を可能にしている。
【００４７】
このような汎用コンピュータ装置は、ＯＳや必要なドライバソフトウェア等を用いることによって、ネットワークインタフェース１１１を介して必要に応じて接続されるルータ（ダイアルアップルータを含む）や、シリアルインタフェースを介して接続されるモデムやＴＡ等を用いて、コンピュータネットワークや公衆電話網上の他の機器と通信可能である。
【００４８】
なお、前述したように、本実施形態におけるＷｅｂサーバは、アプリケーションサーバやデータベースサーバも含めた、クライアント端末上で稼働するＷｅｂブラウザとＨＴＴＰ等のプロトコルに従ってデータのやり取りを行う装置又はシステムであってよく、図１２に示したような１つの機器から構成されている必要はない。むしろ、複数のコンピュータを用い、それぞれにＨＴＴＰサーバ、アプリケーションサーバ、データベースサーバ、ファイルサーバの機能をもたせることにより、全体でＷｅｂサーバとしての機能を実現するのが一般的であり現実的である。
【００４９】
なお、本明細書において、Ｗｅｂサーバが生成するインスタンスとは、例えばＷｅｂサーバの機能を実現するアプリケーションの構成要素であり、オブジェクト指向言語を使用して本発明を実施した場合は、Ｊａｖａ（登録商標）、Ｃ＋＋、ＳｍａｌｌＴａｌｋなどのオブジェクト指向プログラミング言語におけるインスタンスと同義である。
【００５０】
なお、オブジェクト指向言語におけるクラスはメンバ変数とメンバ変数を取り扱うメソッドで構成され、コンストラクトすることによりメモリ上に領域を確保され、初めてメンバ変数への値の格納が可能となり、そのメンバ変数を扱うメソッドも使用可能となる。このようにクラスをコンストラクトすることによって得られるオブジェクトがインスタンスである。
【００５１】
上記のようなオブジェクト指向プログラミング言語でなくても、本発明の実施は可能ではあるが、オブジェクト指向プログラミング言語を使用することがもっとも一般的であり、またオブジェクト指向プログラミング言語では画面との対応の説明が容易なので、本明細書ではインスタンスという概念を使用して説明している。
【００５２】
オブジェクト指向プログラミング言語を使用しない場合でも、セッションが存在し、画面に対応するメモリ領域がＲＡＭ上などに存在すれば、本発明の実施は可能である。したがって、オブジェクト指向プログラミング言語の使用は、本発明の実施に必須な条件ではない。
【００５３】
よって、本明細書に記載の「インスタンス」は、本発明の実施にオブジェクト指向プログラミング言語が使用された時はオブジェクト指向プログラミング言語におけるインスタンスを意味するが、オブジェクト指向プログラミング言語以外の言語を使用した時は画面に対応するメモリ領域とそのメモリ領域にアクセスするサブルーチン群を意味する。より具体的にいうと、実施形態においてＷｅｂサーバが生成するインスタンスは、Ｗｅｂブラウザに所定の画面を表示させるためのデータ送信手段、当該画面の操作（表示画面中に配されたボタン押下、リンククリック又は同等の操作。ブラウザのＧＵＩに対する操作ではない）によってＷｅｂブラウザから発せられるリクエストを受信しリクエストに応じた処理を行う手段として機能する。
【００５４】
図８は、図１〜図７を用いて説明したプロセスに、本発明を適用した状態を模式的に示す図である。なお、ここでは、相異点を理解しやすくするために上述のプロセスを利用しているが、本発明はより複雑かつ現実的なプロセスにおいても適用可能であることはいうまでもない。
なお、図１と図８の違いは、インスタンスＤ１０２およびＤ１０３に、メンバ変数ｍｏｄｅを加えたＤ１０２”とＤ１０３”とした点である。
【００５５】
ユーザがＷｅｂブラウザに表示された商品選択画面Ｂ１０１（図２）において、ある商品の購入ボタンＰ１０２を、キーボード１０３やポインティングデバイス１０４を用いて押下する。これに応答して、購入ボタンＰ１０２に割り当てられたＵＲＬにＷｅｂブラウザがリクエストを発する。このＵＲＬに対応づけられたＷｅｂサーバのインスタンスＤ１０１がユニークなセッションＩＤを発行するとともに、インスタンスＤ１０２”をメモリ（例えばＲＡＭ１０７）上に作成する。そして、インスタンスＤ１０２”のメンバ変数ｍｏｄｅにｔｒｕｅを、メンバ変数ｓｅｓｓｉｏｎ＿ｉｄにインスタンスＤ１０１が発行したセッションＩＤを格納する。
【００５６】
インスタンスＤ１０２”はＷｅｂブラウザに注文者入力画面Ｂ１０２を表示するためのＨＴＭＬデータ等を送信し、Ｗｅｂブラウザは受信データをレンダリングして注文者入力画面Ｂ１０２を表示する。なお、以下ＷｅｂサーバのインスタンスがＷｅｂブラウザに画面を表示させるという記述は、インスタンスから画面表示用のデータを送信し、Ｗｅｂブラウザがそのデータを解釈、レンダリングして表示するという動作を意味する。
【００５７】
ユーザがキーボード１０３を用いて注文者入力画面Ｂ１０２のテキストフィールドＰ２０１およびＰ２０２に氏名と住所を入力し「ＯＫ」ボタンＰ２０４を押下すると、Ｗｅｂブラウザは、「ＯＫ」ボタンＰ２０４に割り当てられたＵＲＬに氏名と住所の情報を付加し、Ｗｅｂサーバへリクエストを発する。このＵＲＬにはインスタンスＤ１０２”が対応付けられている。
【００５８】
このリクエストを受信したＷｅｂサーバのインスタンスＤ１０２”の処理を、図９に示すフローチャートを用いて説明する。
インスタンスＤ１０２”は、先ず自らのメンバ変数ｍｏｄｅがｔｒｕｅかどうかをチェックし（Ｓ２２０）、ｔｒｕｅであればＷｅｂブラウザから送られてきた氏名をメンバ変数ｎａｍｅに、住所をメンバ変数ａｄｄｒｅｓｓに格納する（Ｓ２０１）。そして、メンバ変数ｎｅｘｔがｎｕｌｌかどうかチェックする（Ｓ２３０）。
【００５９】
この時点ではメンバ関数ｎｅｘｔに何も格納されておらずｎｕｌｌであるので、インスタンスＤ１０３”を作成し（Ｓ２０２）、新たに作成したインスタンスＤ１０３”をインスタンスＤ１０２”のメンバ変数ｎｅｘｔに格納する（Ｓ２０３）。そしてインスタンスＤ１０２”のメンバ変数ｍｏｄｅにｆａｌｓｅを格納し（Ｓ２０４）、インスタンスＤ１０３”のメンバ変数ｍｏｄｅにｔｒｕｅを格納する（Ｓ２０５）。
【００６０】
次に、インスタンスＤ１０３”のメンバ変数ｓｅｓｓｉｏｎ＿ｉｄ、ｎａｍｅ、ａｄｄｒｅｓｓに、インスタンスＤ１０２”の対応するメンバ変数と同じ値を格納する（Ｓ２０６）。さらにインスタンスＤ１０３”のメンバ変数ｐｒｅｖにインスタンスＤ１０２”を格納し（Ｓ２０７）、インスタンスＤ１０３”に制御を移す（インスタンスＤ１０３”がＷｅｂブラウザに入力確認画面Ｂ１０３（図４）を表示させる）（Ｓ２０８）。
【００６１】
ユーザが入力確認画面Ｂ１０３に表示された氏名Ｐ３０１と住所Ｐ３０２を確認の上「確認」ボタンＰ３０４を押下すると、Ｗｅｂブラウザが「確認」ボタンＰ３０４に対応付けられているＵＲＬにリクエストを発する。このＵＲＬにはインスタンスＤ１０３”が対応付けられており、インスタンスＤ１０３”はリクエストを受信すると、自分のメンバ変数ｍｏｄｅがｔｒｕｅかどうかをチェックする。
【００６２】
メンバ変数ｍｏｄｅがｔｒｕｅであれば、ＤＢに注文内容（商品コード、数量など）、氏名、住所を格納し、メンバ変数ｍｏｄｅにｆａｌｓｅを格納し、商品選択画面Ｂ１０１ａ（図２）へのリダイレクトを行うようにＷｅｂブラウザに指示する。なお本実施形態ではもっとも単純な商品注文の例を挙げているので、Ｂ１０１においてＰ１０２を押下することによって注文内容は一意に決定しており、インスタンスＤ１０３”もこの注文内容に特化されたものと仮定している。
【００６３】
インスタンスＤ１０２”、Ｄ１０３”に商品内容（商品コード、数量など）を格納するメンバ変数を加え、Ｄ１０２”のメンバ変数に対してはＤ１０１から、Ｄ１０３”のメンバ変数に対してはＤ１０２”から設定することによって、複数の商品を扱うことは可能である。本明細書では発明の説明をわかりやすくするために単純な商品注文を実施形態として説明しているだけであり、より複雑な、現実的な注文形態においても本発明を適用可能であることは言うまでもない。
【００６４】
一方、メンバ変数ｍｏｄｅがｆａｌｓｅの場合は、インスタンスＤ１０４を新規作成し、インスタンスＤ１０４のメンバ変数ｅｒｒ＿ｃｏｄｅに値（エラーコード）を格納し、インスタンスＤ１０４がＷｅｂブラウザにエラー画面Ｂ１０４（図５）を表示させる。
【００６５】
図９のステップＳ２２０において、注文者入力画面Ｂ１０２の「ＯＫ」ボタンＰ２０４押下に応答してＷｅｂブラウザが発したリクエストを受信した際に、インスタンスＤ１０２”のメンバ変数ｍｏｄｅがｆａｌｓｅだった場合には、インスタンスＤ１０４を新規作成し（Ｓ２２１）、インスタンスＤ１０４のメンバ変数ｅｒｒ＿ｃｏｄｅに値（エラーコード）を格納し（Ｓ２２２）、インスタンスＤ１０４がＷｅｂブラウザにエラー画面Ｂ１０４を表示させる（Ｓ２２３）。
【００６６】
Ｗｅｂブラウザからメンバ変数へ格納すべき値を受信した際に、メンバ変数ｍｏｄｅがｆａｌｓｅである場合以外のエラー（例えばメンバ変数ｎａｍｅ、ａｄｄｒｅｓｓやＤＢに値の格納を行う際のエラー）がインスタンスＤ１０２”およびＤ１０３”において発生した時も、インスタンスＤ１０４を新規に作成し、インスタンスＤ１０４のメンバ変数ｅｒｒ＿ｃｏｄｅに値を格納し、インスタンスＤ１０４がＷｅｂブラウザにエラー画面Ｂ１０４を表示させる。
【００６７】
エラー画面Ｂ１０４にはエラーコードＰ４０１が表示されているが、ユーザ向けのわかりやすいメッセージを表示する例が一般的であろう。エラーコードを動的に表示することをしないで、静的なエラーページを表示する場合もあるが、その際はインスタンスＤ１０４の生成を行わず、静的ページであるエラー画面への遷移はＷｅｂブラウザの機能を使用したリダイレクトによることになる。
【００６８】
また入力確認画面Ｂ１０３（図４）に「もどる」ボタンＰ３０５を、前述したブラウザ以外の機能として設けた場合、ボタンＰ３０５が押下されると、ボタンＰ３０５に割り当てられたＵＲＬにＷｅｂブラウザからＷｅｂサーバにリクエストが発せられる。
【００６９】
このＵＲＬに対応付けられたインスタンスＤ１０３”は、自らのメンバ変数ｐｒｅｖに格納されているインスタンスＤ１０２”を使用し、インスタンスＤ１０２”に制御を移し、インスタンスＤ１０２”からＷｅｂブラウザに注文者入力画面Ｂ０１０２を表示させることができる。
【００７０】
「もどる」ボタンＰ３０５を使用して入力確認画面Ｂ１０３から注文者入力画面Ｂ１０２へ画面遷移する際のインスタンスＤ１０３”の処理を図１０のフローチャートを用いて説明する。
【００７１】
インスタンスＤ１０３”は、メンバ変数ｍｏｄｅがｔｒｕｅであるかチェックし（Ｓ３２０）、ｔｒｕｅであればメンバ変数ｐｒｅｖに格納されているインスタンスＤ１０２”を取得する（Ｓ３０１）。そして、インスタンスＤ１０３”のメンバ変数ｍｏｄｅにｆａｌｓｅを格納し（Ｓ３０２）、インスタンスＤ１０２”のメンバ変数ｍｏｄｅにｔｒｕｅを格納し（Ｓ３０３）、インスタンスＤ１０２”に制御を移す（インスタンスＤ１０２”がＷｅｂブラウザに画面Ｂ１０２を表示させる）（Ｓ３０４）。
【００７２】
一方、ステップＳ３２０においてインスタンスＤ１０３”のメンバ変数ｍｏｄｅがｆａｌｓｅであれば、まずインスタンスＤ１０４を新規作成し（Ｓ３２１）、インスタンスＤ１０４のメンバ変数ｅｒｒ＿ｃｏｄｅに値を格納し（Ｓ３２２）、インスタンスＤ１０４に制御を移す（インスタンスＤ１０４がＷｅｂブラウザに画面Ｂ１０４を表示させる）（Ｓ３２３）。
【００７３】
このようにして一旦入力確認画面Ｂ１０３が表示された後、再度表示された注文者入力画面Ｂ１０２においてユーザが「ＯＫ」ボタンＰ２０４を押下した場合、インスタンスＤ１０２”のメンバ変数ｎｅｘｔにはインスタンスＤ１０３”が格納されているため、入力確認画面Ｂ１０３を表示することも可能である。
【００７４】
この時のインスタンスＤ１０２”の処理について、再度図９を用いて説明する。一旦入力確認画面Ｂ１０３が表示された後、再度表示された注文者入力画面Ｂ１０２においてユーザが氏名と住所をテキストフィールドＰ２０１およびＰ２０２に入力し、「ＯＫ」ボタンＰ２０４を押下すると、「ＯＫ」ボタンＰ２０４に割り当てられたＵＲＬに氏名と住所の情報を付加しＷｅｂブラウザがリクエストを発する。
【００７５】
このＵＲＬに対応付けられたインスタンスＤ１０２”は、自らのメンバ変数ｍｏｄｅがｔｒｕｅかどうかチェックし（Ｓ２２０）、ｔｒｕｅであれば受信した氏名をメンバ変数ｎａｍｅに、住所をメンバ変数ａｄｄｒｅｓｓにそれぞれ格納する（Ｓ２０１）。なお後述するようなデータの不一致がおきていない場合、メンバ変数ｍｏｄｅはｔｒｕｅである。
【００７６】
ステップＳ２３０において、メンバ変数ｎｅｘｔがｎｕｌｌかどうかチェックする。この時点においてはメンバ変数ｎｅｘｔにはインスタンスＤ１０３”が格納されているため、インスタンスＤ１０３”をメンバ変数ｎｅｘｔより取得する（Ｓ２３１）。そしてインスタンスＤ１０２”のメンバ変数ｍｏｄｅにｆａｌｓｅを格納し（Ｓ２０４）、インスタンスＤ１０３”のメンバ変数ｍｏｄｅにｔｒｕｅを格納する（Ｓ２０５）。以後、上述したとおりに処理を行い、ステップＳ２０８で制御をインスタンスＤ１０３”に移す（インスタンスＤ１０３”がＷｅｂブラウザに画面Ｂ１０３を表示させる）（Ｓ２０８）。
【００７７】
本実施形態によれば、図１で説明したプロセスで発生するような、Ｗｅｂサーバが格納するデータと、Ｗｅｂブラウザが保有するデータの不一致（ユーザがＷｅｂブラウザに入力して送信したデータと、Ｗｅｂサーバが格納するデータとの不一致）は発生しない。
【００７８】
そのことを、図１のプロセスにおいてこのような不一致が発生する例として説明したＷｅｂブラウザの２つのウィンドウからの入力操作を用いて説明する。
上述のウィンドウＡ０１とウィンドウＡ０２の時と同様にして、ＷｅｂブラウザのウィンドウＡ１１とウィンドウＡ１２に、注文者入力画面Ｂ１０２を表示させる。
そして、まずウィンドウＡ１１に表示されている注文者入力画面Ｂ１０２に、氏名と住所を入力し、「ＯＫ」ボタンＰ２０４を押下する。
【００７９】
この状態では、「ＯＫ」ボタンＰ２０４のＵＲＬに対応付けられたインスタンスＤ１０２”のメンバ変数ｍｏｄｅはｔｒｕｅであるため、インスタンスＤ１０２”は上述した図９のＳ２２０、Ｓ２０１、Ｓ２３０、Ｓ２０２〜Ｓ２０８の各ステップ（またはＳ２２０、Ｓ２０１、Ｓ２３０、Ｓ２３１、Ｓ２０４〜Ｓ２０８の各ステップ）を実行する。すなわち、インスタンスＤ１０２”のメンバ変数ｍｏｄｅをｆａｌｓｅにし、インスタンスＤ１０２”およびインスタンスＤ１０３”のメンバ変数ｎａｍｅとａｄｄｒｅｓｓに、ウィンドウＡ１１の表示画面から入力された氏名、住所を格納し、インスタンスＤ１０３”がＷｅｂブラウザのウィンドウＡ１１に入力確認画面Ｂ１０３を表示させる。この画面に表示される氏名と住所は、ウィンドウＡ１１に表示された注文者入力画面Ｂ１０２で入力したものである。
【００８０】
次に、ウィンドウＡ１２に表示された注文者入力画面Ｂ１０２に氏名と住所を入力し、「ＯＫ」ボタンＰ２０４を押下する。しかし、ウィンドウＡ１１からの入力時のリクエストを処理した際、Ｓ２０４でインスタンスＤ１０２”のメンバ変数ｍｏｄｅをｆａｕｓｅにしているため、ここではＳ２２０からＳ２２１へ移行し、インスタンスＤ１０４がＷｅｂブラウザのウィンドウＡ１２にエラー画面Ｂ１０４を表示させる。
【００８１】
このため、例えばユーザがウィンドウＡ１１、Ａ１２それぞれで別の注文を行う意図で注文した場合には、ウィンドウＡ１２からの注文が受け付けられないことが例えば「新たな注文を行う場合には、もう一度商品選択画面に戻って注文をして下さい」等のメッセージと共に通知される。そのため、Ｗｅｂサーバに同じ注文が二つ発生するということはなく、またユーザも状況を把握することが可能となる。
【００８２】
このように、本実施形態によれば、Ｗｅｂブラウザの画面表示及びＷｅｂブラウザで入力されたデータ受信に供する各インスタンスに、受信したデータを格納するメンバ変数の更新が可能であるかどうかを示すメンバ変数ｍｏｄｅを設け、メンバ変数ｍｏｄｅが更新可能であることを示す状態でのみ受信データによるメンバ変数の更新を許可する。そのため、Ｗｅｂサーバが格納するデータと、Ｗｅｂブラウザが保有するデータの不一致（ユーザがＷｅｂブラウザに入力して送信したデータと、Ｗｅｂサーバが格納するデータとの不一致）の発生を防止することができる。
【００８３】
また、メンバ変数ｍｏｄｅが更新不可を示す状態でＷｅｂブラウザからメンバ変数に格納すべきデータを受信した場合には、ユーザにその旨を通知することにより、意図した操作が行われていないことをユーザに明確に把握させることができる。
【００８４】
＜第２の実施形態＞
第１の実施形態では、Ｗｅｂブラウザから受信したデータにより、画面表示に供する各インスタンスのメンバ変数を更新する構成であったが、図７のインスタンスＤ２０５のように、Ｗｅｂブラウザから受信したデータで更新するメンバ変数を有するインスタンスを共通化した構成であっても同様に対応可能である。
【００８５】
図７において、インスタンスＤ２０５はメンバ変数ｎａｍｅ，ａｄｄｒｅｓｓを有し、複数のインスタンス（Ｄ１０２’、Ｄ１０３’）から更新されるインスタンスである。このようなインスタンスを有する場合であっても、インスタンスＤ１０２’、Ｄ１０３’それぞれにメンバ変数ｍｏｄｅを加え、インスタンスＤ１０２’のメンバ変数ｍｏｄｅがｔｒｕｅの時のみインスタンスＤ１０２’からのインスタンスＤ２０５のメンバ変数ｎａｍｅ、ａｄｄｒｅｓｓの更新を許可し、メンバ変数ｍｏｄｅがｆａｌｓｅの時はインスタンスＤ１０２’からのインスタンスＤ２０５のメンバ変数ｎａｍｅ、ａｄｄｒｅｓｓの更新を許可しない。またインスタンスＤ１０３’のメンバ変数ｍｏｄｅがｔｒｕｅの時のみインスタンスＤ１０３’からのインスタンスＤ２０５のメンバ変数ｎａｍｅ、ａｄｄｒｅｓｓの更新を許可し、メンバ変数ｍｏｄｅがｆａｌｓｅの時はインスタンスＤ１０３’からのインスタンスＤ２０５のメンバ変数ｎａｍｅ、ａｄｄｒｅｓｓの更新を許可しない。このようにすることによって、第１の実施形態と同様の制御が可能となり、同様の効果を得ることができる。
【００８６】
＜第３の実施形態＞
さらに図１１のように、同一ｓｅｓｓｉｏｎ＿ｉｄをもつ、Ｗｅｂブラウザの画面表示に供する各インスタンスＤ４０２、Ｄ４０３から共通して参照可能なインスタンスＤ４０５（）を使用することで、第１及び第２の実施形態におけるメンバ変数ｍｏｄｅの役割を負わせることができる。なおＤ４０５の参照方法としては、インスタンスＤ４０２、Ｄ４０３にメンバ変数ｐｅｒｍｉｔｔｅｄを設け、メンバ変数ｐｅｒｍｉｔｔｅｄによってインスタンスＤ４０５を参照する場合や、インスタンスＤ４０５がメンバ変数ｓｅｓｓｉｏｎ＿ｉｄをもち、インスタンスＤ４０５のクラスのインスタンスのアレイ（このときｓｅｓｓｉｏｎ＿ｉｄはアレイの中においてユニークである必要がある）を特定のインスタンスから参照できるようにし、この特定のインスタンスを画面表示に供する各インスタンスＤ４０２、Ｄ４０３から参照できるようにした場合などがある。
【００８７】
前者の参照方法の場合はインスタンスＤ４０２のメンバ変数ｐｅｒｍｉｔｔｅｄで参照されるインスタンスＤ４０５のメンバ変数ｉｎｓｔａｎｃｅがインスタンスＤ４０２と等しければ、後者の参照方法の場合アレイ中にあるインスタンスＤ４０２と同一のｓｅｓｓｉｏｎ＿ｉｄをもつインスタンスＤ４０５のメンバ変数ｉｎｓｔａｎｃｅがインスタンスＤ４０２と等しければ、第１の実施形態においてインスタンスＤ１０２”のメンバ変数ｍｏｄｅがｔｒｕｅである場合と同じ制御を行い、それ以外のときは第１の実施形態においてインスタンスＤ１０２”のメンバ変数ｍｏｄｅがｆａｌｓｅであるのと同じ制御を行う。
【００８８】
また、前者の参照方法の場合はインスタンスＤ４０３のメンバ変数ｐｅｒｍｉｔｔｅｄで参照されるインスタンスＤ４０５のメンバ変数ｉｎｓｔａｎｃｅがインスタンスＤ４０３と等しければ、後者の参照方法の場合アレイ中にあるインスタンスＤ４０３と同一のｓｅｓｓｉｏｎ＿ｉｄをもつインスタンスＤ４０５のメンバ変数ｉｎｓｔａｎｃｅがインスタンスＤ４０３と等しければ、第１の実施形態においてインスタンスＤ１０３”のメンバ変数ｍｏｄｅがｔｒｕｅであるのと同じ制御を行い、それ以外のときは第１の実施形態においてインスタンスＤ１０３”のメンバ変数ｍｏｄｅがｆａｌｓｅであるのと同じ制御を行う。このようにすることによって、第１の実施形態と同様の制御が可能となり、同様の効果を得ることができる。
【００８９】
また図１１のようにすると、画面表示に供する各インスタンスＤ４０２、Ｄ４０３から現在Ｗｅｂブラウザ上に画面を表示すべき（Ｗｅｂブラウザから受信したデータによりメンバ変数の書き込み（更新）が許可された）インスタンスを参照可能なので、そのインスタンスに対応する画面をＷｅｂブラウザに表示することも可能である。
【００９０】
例えば、インスタンスＤ４０５のメンバ変数ｉｎｓｔａｎｃｅがインスタンスＤ４０３である時、例えば注文者入力画面Ｂ１０２のＯＫボタンが押下されてインスタンスＤ４０２に対応するＵＲＬに対しＷｅｂブラウザからリクエストが発せられたとする。この際、インスタンスＤ４０２は、インスタンスＤ４０５のメンバ変数ｉｎｓｔａｎｃｅからインスタンスＤ４０３を取得し、インスタンスＤ４０３に制御を移しＷｅｂブラウザに画面Ｂ１０３を表示させることができる。更にこの時、インスタンスＤ４０２は書き込み許可されていないインスタンスであるので、ユーザに対して注文者入力画面Ｂ１０２から入力したデータは無効である旨の警告を画面Ｂ１０３に付け加えるよう、インスタンスＤ４０３に対し指示することも可能である。
【００９１】
なお図１１のインスタンスＤ４０２およびＤ４０３のメンバ変数ｎａｍｅ、ａｄｄｒｅｓｓを図７と同様に別インスタンスに保有させている場合も、同様の制御が可能であり、同様の効果をうることができる。
【００９２】
＜他の実施形態＞
尚、前述した実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線／無線通信を用いて当該プログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムを実行することによって同等の機能が達成される場合も本発明に含む。
【００９３】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。
【００９４】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００９５】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記録媒体、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ等の光／光磁気記憶媒体、不揮発性の半導体メモリなどがある。
【００９６】
有線／無線通信を用いたプログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイル等、クライアントコンピュータ上で本発明を形成するコンピュータプログラムとなりうるデータファイル（プログラムデータファイル）を記憶し、接続のあったクライアントコンピュータにプログラムデータファイルをダウンロードする方法などが挙げられる。この場合、プログラムデータファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに配置することも可能である。
【００９７】
つまり、本発明の機能処理をコンピュータで実現するためのプログラムデータファイルを複数のユーザに対してダウンロードさせるサーバ装置も本発明に含む。
【００９８】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件を満たしたユーザに対して暗号化を解く鍵情報を、例えばインターネットを介してホームページからダウンロードさせることによって供給し、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００９９】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【０１００】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【図面の簡単な説明】
【０１０１】
【図１】従来のＷｅｂブラウザ−Ｗｅｂサーバ間の簡略化されたプロセスを模式的に示す図である。
【図２】Ｗｅｂブラウザに表示される商品選択画面の例を示す図である。
【図３】Ｗｅｂブラウザに表示される注文者情報入力画面の例を示す図である。
【図４】Ｗｅｂブラウザに表示される注文者情報確認画面の例を示す図である。
【図５】Ｗｅｂブラウザに表示されるエラー画面の例を示す図である。
【図６】図１のインスタンスＤ１０２の処理を説明するフローチャートである。
【図７】図１のプロセスの別の形態の例を示す図である。
【図８】本発明の第１の実施形態に係るＷｅｂブラウザ−Ｗｅｂサーバ間の簡略化されたプロセスを模式的に示す図である。
【図９】第１の実施形態におけるインスタンスＤ１０２”の処理を説明するフローチャートである。
【図１０】第１の実施形態におけるインスタンスＤ１０３”の処理を説明するフローチャートである。
【図１１】本発明の第３の実施形態に係るＷｅｂブラウザ−Ｗｅｂサーバ間の簡略化されたプロセスを模式的に示す図である。
【図１２】本発明の実施形態においてＷｅｂサーバ及び、Ｗｅｂブラウザアプリケーションを実行する情報処理装置として利用可能なコンピュータ装置の構成例を示すブロック図である。
【図１】
2006092116.tif 000003
【図２】
2006092116.tif 000004
【図３】
2006092116.tif 000005
【図４】
2006092116.tif 000006
【図５】
2006092116.tif 000007
【図６】
2006092116.tif 000008
【図７】
2006092116.tif 000009
【図８】
2006092116.tif 000010
【図９】
2006092116.tif 000011
【図１０】
2006092116.tif 000012
【図１１】
2006092116.tif 000013
【図１２】
2006092116.tif 000014