ヘッダーをスキップ
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース3.2
B53794-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

URL構文の理解

ページごとに表示されるURLは、Oracle Application Expressの場所、Oracle Application Expressのアドレス、アプリケーションID、ページ番号およびセッションIDを指定します。

アプリケーションIDは各アプリケーションを識別する一意の番号です。同様に、ページ番号は各ページを一意に識別します。アプリケーションおよびページには、英数字の別名がある場合もあります。アプリケーションの別名はワークスペース内で一意であり、ページの別名は各アプリケーション内で一意です。アプリケーションを実行する場合、Application Expressエンジンはユーザーのセッション・ステートに対するキーとして機能するセッション番号を生成します。

この項に含まれる内容は次のとおりです。

ページに表示されるURLの理解

ページごとに表示されるURLは、Oracle Application Expressの場所を指定します。また、Oracle Application Expressのアドレス、アプリケーションID、ページ番号およびセッションIDを指定します。次に例を示します。

http://apex.somewhere.com/pls/apex/f?p=4350:1:220883407765693447

この例の内容は次のとおりです。

  • apex.somewhere.comは、サーバーのURLです。

  • plsは、mod_plsqlカートリッジを使用するためのインジケータです。

  • apexは、データベース・アクセス記述子(DAD)名です。DADにはHTTP Serverからデータベース・サーバーへの接続方法が記述されているため、HTTPリクエストを実行できます。デフォルト値はapexです。

  • f?p=は、Oracle Application Expressによって使用される接頭辞です。

  • 4350は、コールされているアプリケーションです。

  • 1は、表示されるアプリケーション内のページです。

  • 220883407765693447は、セッション番号です。

f?p構文を使用したページのリンク

アプリケーションのページ間にリンクを作成するには、次の構文を使用します。

f?p=App:Page:Session:Request:Debug:ClearCache:itemNames:itemValues:PrinterFriendly

表3-2に、f?p構文の使用時に指定できる引数を示します。

表3-2 f?p構文の引数

構文 説明

App

アプリケーションIDまたは英数字の別名を指定します。

Page

ページ番号または英数字の別名を指定します。

Session

セッションIDを指定します。セッションIDを参照して、セッション番号を渡すことで同じセッション・ステートを保持している他のページへのハイパーテキスト・リンクを作成できます。セッションIDを参照するには、次の構文を使用します。

  • 短縮置換文字列: &SESSION

  • PL/SQL: V('SESSION')

  • バインド変数: :APP_SESSION

Request

REQUESTの値を設定します。REQUESTの値は、各アプリケーション・ボタンによって、そのボタンの名前に設定されます。これによって、ユーザーがボタンをクリックしたときに、受入れプロセスでそのボタンの名前が参照されるようになります。REQUESTを参照するには、次の構文を使用します。

  • 置換文字列: &REQUEST

  • PL/SQL: V('REQUEST')

  • バインド変数: :REQUEST

Debug

アプリーション処理の詳細を表示します。DEBUGフラグの有効値はYESまたはNOです。このフラグをYESに設定すると、アプリケーション・プロセスの詳細を表示できます。DEBUGフラグを参照するには、次の構文を使用します。

  • 短縮置換文字列: &DEBUG

  • PL/SQL: V('DEBUG')

  • バインド変数: :DEBUG

関連項目: 「アプリケーションのデバッグ」

ClearCache

キャッシュをクリアします。これによりアイテムの値がNULLに設定されます。

キャッシュされたアイテムを単一のページでクリアするには、数値ページ番号を指定します。キャッシュされたアイテムを複数のページでクリアするには、ページ番号のカンマ区切りのリストを使用します。ページのキャッシュをクリアすると、ページのステートフル・プロセスもリセットされます。個別の値またはカンマ区切りの値には、リセットするコレクション名を追加することや、リクエストされたページにおけるリージョンのページ区切りをリセットするためにキーワードRPを追加することができます。キーワードAPPは、すべてのページのキャッシュおよびカレント・アプリケーションにおけるすべてのアプリケーション・レベルのアイテムをクリアし、現行のユーザーのソート・プリファレンスを削除します。キーワードSESSIONAPPキーワードと同じ結果になりますが、カレント・セッションで使用されたすべてのアプリケーションに関連付けられたアイテムをクリアします。

関連項目: 「セッション・ステートのクリア」

itemNames

URLでセッション・ステートを設定するために使用される、カンマで区切られたアイテム名のリストです。

itemValues

URLでセッション・ステートを設定するために使用されるアイテム値のリストです。アイテム値にコロンを含めることはできませんが、カンマをバックスラッシュで囲んで指定することは可能です。アイテム値にカンマを渡すには、文字をバックスラッシュで囲んでください。次に例を示します。

\123,45\

PrinterFriendly

ページを「印刷用」モードでレンダリングするかどうかを決定します。PrinterFriendlyが「はい」に設定されている場合は、ページが「印刷用」モードでレンダリングされます。PrinterFriendlyの値は、リージョンなどの要素をページから削除して印刷される出力を最適化するための条件のレンダリングに使用されます。印刷用プリファレンスを参照するには、次の構文を使用します。

V('PRINTER_FRIENDLY')

参照時は、Application Expressエンジンはタブやナビゲーション・バーを表示しません。すべてのアイテムは、フォーム要素ではなくテキストで表示されます。


f?p構文の動作を理解することは重要ですが、この構文をユーザー自身が構築する必要がある場合はほとんどありません。アプリケーション・ビルダーには、これらの参照を自動的に作成する多くのウィザードが含まれています。次のセクションでは、f?p構文を使用してページをリンクする多くの具体的な場合について説明します。

アプリケーションおよびページの別名を使用したページのコール

アプリケーションおよびページの別名は、有効なOracle識別子で構成する必要があります。空白を含めることはできず、また大/小文字は区別されません。次の例では、アプリケーション内から、アプリケーションおよびページの別名を使用してページをコールします。アプリケーションmyappのページhomeが実行され、現行のセッションIDが使用されます。

f?p=myapp:home:&APP_SESSION.

アプリケーションの別名は、ワークスペース内で一意である必要があります。異なるワークスペースのアプリケーションに同じアプリケーション別名がある場合は、&c引数を使用してワークスペース名を指定します。次に例を示します。

f?p=common_alias:home:&APP_SESSION.&c=WORKSPACE_A

ボタンのURLからのページのコール

ボタンの作成時に、ユーザーがそのボタンをクリックするとリダイレクトされるURLを指定できます。この例では、アプリケーション6000のページ6001が実行され、現行のセッションIDが使用されます。

f?p=6000:6001:&APP_SESSION.

これは、ボタンを使用するための唯一の方法です。この方法は、ページの送信を省略し、そのページ上のハイパーリンクとして機能します。他にも、まずページを送信する方法があります。その方法では、ボタンをクリックすると、処理するページが送信され、フォームが送信された後、セッション・ステートが保存されます。

セッションIDにゼロを使用したブックマークの容易化

アプリケーション内のページが公開されていて認証の必要がない場合、セッションIDとしてゼロを使用することで、アプリケーション・ユーザーは容易にページをブックマークできます。

認証の必要がないアプリケーション・ページは、セッションIDがゼロ(単一の数字0)であるf?q URLを使用してアクセスできます。ブラウザにURLを入力するか、またはセッションIDに0を含むリンクをクリックしてページをリクエストすると、Application Expressエンジンは新しいセッションIDを割り当て、新しいセッションIDを含むセッションCookieをブラウザに送信します。アプリケーションのパブリック・ページを介してナビゲートすると、パブリック・ページへの生成済リンクすべてにセッションID0が含まれており、パブリック・ページへのブランチすべてに、表示されているセッションIDに0を使用する新しいURLが含まれていることがわかります。ただし、Application Expressエンジンは、バックグラウンドでカレント・セッションIDとしてCookieのセッションIDを使用してセッション・ステートを指定します。

カレント・セッションIDを非表示にする場合にこの機能は有効です。セッションIDを非表示にすると、ブックマーク・リンクにセッションIDを含めなくてもページをブックマークできるようになります。さらに優れた点として、セッションIDにゼロを使用すると、実際のセッションIDを検索エンジンから見えないようにします。

アプリケーションのセッションIDとしてゼロを使用するには、ゼロ・セッションIDを含むリンクを少なくとも1つ生成する必要があります。このリンクを使用することでゼロ・セッションIDメカニズムが開始されます。1つの方法として、アプリケーションのホームページでゼロ・セッションIDを含む単一の静的リンクを提供する方法があります。たとえば、通常はページ2へのリンクにf?p=&APP_ID.:2:&APP_SESSIONをコード化するところで、f?p=&APP_ID.:2:0をコード化します。

APEX_UTIL.PREPARE_URLについて

Oracleには、f?p構文を使用してアプリケーション・ページにアンカーを生成する際に開発者がPL/SQLを使用するためのユーティリティの機能があります。アプリケーションのPL/SQLでゼロ・セッションIDが要求される可能性のあるf?pアンカーが作成されるたびに、APEX_UTIL.PREPARE_URLを使用します。詳細は、Oracle Application Express APIリファレンスの「PREPARE_URL」を参照してください。

ゼロ・セッションID機能の動作方法

ゼロ・セッションID機能では、HTMLにアンカーを持つページ(テンプレートやHTMLリージョンなど)がサポートされます。Application Expressエンジンがf?pアンカーに直面した場合に、ある基準を満たしていると、そのアンカーを認識してセッションIDをゼロに置き換えます。

Application Expressエンジンは、次のいずれかのパターンを検出した場合に、セッションIDコンポーネントをゼロに置き換えます。

  • &APP_ID.

  • 現行のアプリケーションの数値ID

  • 次のいずれかのパターン:

    • すべて大文字またはすべて小文字で表された、現行のアプリケーションの英数字別名にコロンが続き、その後に現行のアプリケーションの公開ページの数値IDが続く

    • すべて大文字またはすべて小文字で表された、現行のアプリケーションの公開ページの英数字別名にコロンが続き、その後に&APP_SESSION.または&SESSION.が続く

ゼロ・セッションIDに置換される候補となるHTMLのパターンには、次のものがあります。

  • ページ10が公開ページの場合:

    "f?p=&APP_ID.:10:&APP_SESSION. 
    
  • ページ10が公開ページの場合:

    "f?p=100:10:&APP_SESSION.
    
  • 公開ページの別名がhomeの場合:

    "f?p=&APP_ID.:home:&APP_SESSION. 
    
  • 公開ページの別名がHOMEの場合:

    "f?p=&APP_ID.:HOME:&APP_SESSION.
    
  • アプリケーションの別名がPEOPLEで、公開ページの別名がHOMEの場合:

    "f?p=PEOPLE:HOME:&APP_SESSION
    

これらの例では、アプリケーションがゼロ・セッションIDモードで実行され、ユーザーが公開ユーザーである場合に、パターン&APP_SESSION.(または&SESSION.(非表示))がゼロに置き換えられます。次のPL/SQL式がtrueの場合に、ユーザーは公開ユーザーであるとみなされます。

:app_user in ('nobody','HTMLDB_PUBLIC_USER','PUBLIC_USER','ANONYMOUS','APEX_PUBLIC_USER')"