Dreamweaver 以降では、ユーザーインターフェイスが簡素化されています。 そのため、この記事で説明されているオプションの一部が Dreamweaver 以降には存在しない場合があります。 詳しくは、こちらの記事を参照してください。
動的コンテンツのソースについて
動的コンテンツソースは、web ページで使用する動的コンテンツを取得して表示できる情報の保存場所です。動的コンテンツのソースには、データベースに保存された情報だけでなく、HTML フォームで送信された値、サーバーオブジェクトに含まれる値、その他のコンテンツソースも含まれます。
Dreamweaver では、データベースに簡単に接続して、動的コンテンツを抽出するレコードセットを作成できます。レコードセットは、データベースクエリーの結果です。 要求された特定の情報を抽出し、指定されたページ内でその情報を表示できます。レコードセットは、データベースに含まれる情報と表示したいコンテンツに基づいて定義します。
テクノロジーベンダーによって、レコードセットを指す用語が異なる場合があります。ASP と ColdFusion では、レコードセットはクエリとして定義されます。ユーザー入力やサーバー変数などの他のデータソースを使用している場合、Dreamweaver で定義されたデータソースの名前は、データソース名自体と同じです。
動的Webサイトには、動的コンテンツを取得して表示するためのデータソースが必要です。Dreamweaver では、データベース、リクエスト変数、URL 変数、サーバー変数、フォーム変数、ストアドプロシージャ、その他の動的コンテンツソースを使用できます。データソースによって、リクエストを満たすための新しいコンテンツを取得するか、ユーザーのニーズに合わせてページを変更することができます。
Dreamweaver で定義したコンテンツソースは、バインディングパネルのコンテンツソースリストに追加されます。その後、現在選択されているページにコンテンツソースを挿入できます。
レコードセットについて
Webページは、データベースに保存されたデータに直接アクセスできません。代わりに、レコードセットとやり取りします。レコードセットは、データベースクエリを使用してデータベースから抽出された情報(レコード)のサブセットです。クエリは、データベースから特定の情報を検索して抽出するように設計された検索ステートメントです。
動的 web ページのコンテンツソースとしてデータベースを使用する場合は、まず取得したデータを保存するレコードセットを作成する必要があります。レコードセットは、コンテンツを保存するデータベースとページを生成するアプリケーションサーバーの仲介役としての役割を果たします。レコードセットは、データを高速取得するために、アプリケーションサーバーのメモリに一時的に保存されます。サーバーは、レコードセットが不要になったときにそれを破棄します。
クエリは、特定の列のみ、特定のレコードのみ、またはその両方の組み合わせを含むレコードセットを生成できます。レコードセットには、データベーステーブルのすべてのレコードと列を含めることもできます。ただし、アプリケーションでデータベース内のすべてのデータを使用する必要がある場合はほとんどないため、レコードセットをできるだけ小さくするよう努める必要があります。webサーバーはレコードセットを一時的にメモリに保持するため、小さなレコードセットを使用すると、メモリ使用量が少なくなり、サーバーのパフォーマンスが向上する可能性があります。
データベースクエリは Structured Query Language(SQL、「シークエル」と発音)で記述されます。これは、データベースからデータを取得、追加、削除できるシンプルな言語です。Dreamweaver に含まれる SQL ビルダーを使用すると、SQL を理解しなくても簡単なクエリを作成できます。ただし、複雑な SQL クエリを作成する場合は、この言語の基本的な知識があれば、より高度なクエリを作成でき、動的ページの設計においてより大きな柔軟性が得られます。
Dreamweaver で使用するレコードセットを定義する前に、データベースへの接続を作成し、データがまだ存在しない場合は、データベースにデータを入力する必要があります。サイトのデータベース接続をまだ定義していない場合は、開発しているサーバーテクノロジーのデータベース接続の章を参照し、データベース接続の作成に関する手順に従ってください。
URL パラメーターとフォームパラメーターについて
URL パラメーターは、ユーザーが入力した取得済み情報を保存します。URL パラメーターを定義するには、GET メソッドを使用してデータを送信するフォームまたはハイパーテキストリンクを作成します。情報は、リクエストされたページの URL に追加され、サーバーに送信されます。URL 変数を使用する場合、クエリ文字列には、フォームフィールドに関連付けられた 1 つ以上の名前と値のペアが含まれます。これらの名前と値のペアは URL に追加されます。
フォームパラメーターは、web ページの HTTP リクエストに含まれる取得済み情報を保存します。POST メソッドを使用するフォームを作成する場合、フォームによって送信されたデータがサーバーに渡されます。開始する前に、フォームパラメーターがサーバーに渡されるようにしてください。
セッション変数について
セッション変数を使用すると、ユーザーの訪問(またはセッション)の期間中維持される情報を保存および表示できます。サーバーは、各ユーザーに対して異なるセッションオブジェクトを作成し、設定された期間、またはオブジェクトが明示的に終了されるまで、それを維持します。
セッション変数はユーザーのセッション中持続し、ユーザーが web サイト内でページ間を移動してもそのまま残るため、ユーザー設定の保存に最適です。セッション変数は、ページの HTML コードに値を挿入したり、ローカル変数に値を割り当てたり、条件式を評価するための値を提供したりするためにも使用できます。
ページのセッション変数を定義する前に、ソースコードでセッション変数を作成する必要があります。web アプリケーションのソースコードでセッション変数を作成した後、Dreamweaver を使用してその値を取得し、web ページで使用できます。
セッション変数のしくみ
セッション変数は情報(通常はユーザーが送信したフォームまたはURL パラメーター)を保存し、ユーザーの訪問期間中、web アプリケーションのすべてのページで利用できるようにします。例えば、ユーザーが電子メール、株価、天気予報、日刊ニュースへのアクセスを提供する web ポータルにログオンすると、web アプリケーションはログイン情報を、サイト全体のページでユーザーを識別するセッション変数に保存します。これにより、ユーザーはサイト内を移動しながら、選択したタイプのコンテンツのみを表示できます。セッション変数は、アカウントが一定期間非アクティブのままの場合にユーザーのセッションを終了することで、安全メカニズムを提供することもできます。これにより、ユーザーが web サイトからログオフするのを忘れた場合でも、サーバーのメモリと処理リソースが解放されます。
セッション変数に情報が格納されているのは、ユーザーのセッションが終了するまでです。 セッションは、ユーザーがアプリケーション内のページを開いたときに開始され、一定期間アプリケーション内の別のページを開かなかった場合、またはユーザーが明示的にセッションを終了した場合(通常は「ログオフ」リンクをクリックすることにより)に終了します。セッションが存在する間、それは個々のユーザーに固有であり、すべてのユーザーが別々のセッションを持ちます。
セッション変数を使用して、web アプリケーション内のすべてのページからアクセスできる情報を保存します。この情報は、ユーザーの名前、好みのフォントサイズ、またはユーザーが正常にログインしたかどうかを示すフラグなど、多様なものです。セッション変数のもう一つの一般的な使用方法は、オンラインクイズでこれまでに正答した問題数や、オンラインカタログでユーザーがこれまでに選択した商品など、実行中の集計を維持することです。
セッション変数は、ユーザーのブラウザーが cookie を受け入れるよう設定されている場合にのみ機能します。サーバーは、セッションが最初に開始されたときにユーザーを一意に識別するセッション ID 番号を作成し、その ID 番号を含む cookie をユーザーのブラウザーに送信します。ユーザーがサーバーの別のページを要求すると、サーバーはブラウザーの cookie を読み取ってユーザーを識別し、サーバーのメモリに保存されているユーザーのセッション変数を取得します。
セッション変数での情報の収集、保存、取得
セッション変数を作成する前に、まず保存したい情報を取得し、それをサーバーに送信して保存する必要があります。HTML フォームや URL パラメーターを含むハイパーテキストリンクを使用して、情報を収集してサーバーに送信できます。また、ユーザーのコンピューターに保存されている cookie、ページリクエストと共にユーザーのブラウザーが送信する HTTP ヘッダー、またはデータベースから情報を取得することもできます。
セッション変数に URL パラメーターを保存する典型的な例は、リンクを使用して作成されたハードコードされた URL パラメーターを使用して商品情報をサーバーに送り返し、セッション変数に保存する商品カタログです。ユーザーが「買い物かごに追加」リンクをクリックすると、ユーザーが買い物を続けている間に商品 ID がセッション変数に保存されます。ユーザーがチェックアウトページに進むと、セッション変数に保存された商品 ID が取得されます。
フォームベースのサーベイは、フォームパラメーターをセッション変数に保存するページの典型的な例です。フォームは選択された情報をサーバーに送り返し、そこでアプリケーションページがサーベイを採点し、サーベイ母集団から収集された応答を集計するアプリケーションに渡すために、応答をセッション変数に保存します。または、情報は後で使用するためにデータベースに保存される場合があります。
情報がサーバーに送信された後、URL またはフォームパラメーターで指定されたページに、サーバーモデルに適切なコードを追加することで、セッション変数に情報を保存します。宛先ページと呼ばれるこのページは、HTML フォームの action 属性または開始ページのハイパーテキストリンクの href 属性のいずれかで指定されます。
セッション変数に値を保存した後、Dreamweaverを使用してセッション変数から値を取得し、webアプリケーションで使用することができます。Dreamweaver でセッション変数を定義した後、その値をページに挿入できます。
それぞれの HTML のシンタックスは以下のとおりです。
<form action="destination.html" method="get" name="myform"> </form>
<param name="href"value="destination.html">
使用されるサーバーテクノロジーと情報を取得するために使用する方法の両方が、セッション変数に情報を保存するために使用されるコードを決定します。各サーバーテクノロジーの基本的な構文は次のとおりです。
ColdFusion
<CFSET session.variable_name = value>
ASP
<% Session("variable_name") = value %>
value 式は、通常 Request.Form("lastname") などのサーバー式です。 例えば、product という URL パラメーター(または GET メソッドの HTML フォームと product というテキストフィールド)を使用して情報を収集する場合、以下のステートメントが prodID というセッション変数に情報を格納します:
ColdFusion
<CFSET session.prodID = url.product>
ASP
<% Session("prodID") = Request.QueryString("product") %>
post メソッドの HTML フォームと txtProduct というテキストフィールドを使用して情報を収集する場合は、以下のステートメントがセッション変数に情報を格納します:
ColdFusion
<CFSET session.prodID = form.txtProduct>
ASP
<% Session("prodID") = Request.Form("txtProduct") %>
セッション変数に格納される情報の例
高齢者の大規模なオーディエンスを持つサイトで作業しています。Dreamweaver で、ユーザーがサイトのテキストのサイズをカスタマイズできる 2 つのリンクをスタートアップスクリーンに追加します。ユーザーは、読みやすい大きなテキスト用に一つのリンクをクリックし、通常サイズのテキスト用に別のリンクをクリックします。
各リンクには fontsize という URL パラメーターがあり、次の Adobe ColdFusion® の例に示すように、ユーザーのテキスト設定をサーバーに送信します:
<a href="resort.cfm?fontsize=large">Larger Text</a><br>
<a href="resort.cfm?fontsize=small">Normal Text</a>
ユーザーのテキスト設定をセッション変数に格納し、それを使用してユーザーがリクエストする各ページでフォントサイズを設定します。
宛先ページの先頭付近で、以下のコードを入力して、ユーザーのフォントサイズ設定を格納する font_pref というセッションを作成します。
ColdFusion
<CFSET session.font_pref = url.fontsize>
ASP
<% Session("font_pref") = Request.QueryString("fontsize") %>
ユーザーがハイパーテキストリンクをクリックすると、ページは URL パラメーターでユーザーのテキスト設定を宛先ページに送信します。宛先ページのコードは、URL パラメーターを font_pref セッション変数に格納します。ユーザーのセッション期間中、アプリケーションのすべてのページがこの値を取得し、選択されたフォントサイズを表示します。
ASP と ColdFusion のアプリケーション変数
ASP と ColdFusion では、アプリケーション変数を使用して、アプリケーションの全期間中維持され、ユーザー間で共有される情報を格納および表示することができます。アプリケーションの全期間は、最初のユーザーがアプリケーションのページをリクエストしてから web サーバーが停止するまで続きます。(アプリケーションとは、仮想ディレクトリとそのサブディレクトリ内のすべてのファイルとして定義されます。)
アプリケーション変数はアプリケーションの全期間持続し、ユーザーからユーザーへと保持されるため、現在の時刻や日付など、すべてのユーザーに対して存在する必要がある情報を格納するのに最適です。アプリケーション変数の値は、アプリケーションのコード内で定義されます。
ASP サーバー変数
動的コンテンツの引用元として、次のASPサーバー変数を定義できます:Request.Cookie、Request.QueryString、Request.Form、Request.ServerVariables、およびRequest.ClientCertificates。
ColdFusion サーバー変数
ColdFusion では、以下のサーバー変数を定義できます。
クライアント変数
特定のクライアントにデータを関連付けます。 クライアント変数は、ユーザーがアプリケーション内でページからページへ、さらにはセッションからセッションへ移動する際に、アプリケーションの状態を維持します。「状態の維持」とは、アプリケーションがユーザーと、ユーザーの以前の選択や設定を記憶できるように、あるページ(またはセッション)から次のページへと情報を保持することを意味します。
Cookie 変数
ブラウザーによってサーバーに渡された Cookie にアクセスします。
CGI 変数
ColdFusion を実行しているサーバー、ページをリクエストしているブラウザー、および処理環境に関するその他の情報を提供します。
サーバー変数
すべてのクライアントとサーバー上のすべてのアプリケーションからアクセスできます。 サーバーが停止するまで持続します。
ローカル変数
ColdFusion ページ内でCFSETタグまたはCFPARAMタグを使用して作成されます。