Skip navigation.

ポータル URL の簡略化

  前 次 前と次、目次/インデックス/pdf を分けるコロン 目次  

ポータル URL の簡略化

ポータルやポータル デスクトップを作成する場合、ポータルのブックやページのデフォルト URL に含まれるパラメータや要素を削除して、より短い簡潔な URL を作成することができます。このトピックでは、ポータルの URL を簡略化する方法について説明します。

図 1 に、デフォルト URL のサンプルを示し、図 2 に、同じ URL の簡略化されたサンプルを示します。

図 1 デフォルト URL : http://intranet/sampleportal/appmanager/myportal/mydesktop?_nfpb=true&_pageLabel=MyPage


 

図 2 簡略化された URL : http://intranet/sampleportal/page/myportal/mydesktop/MyPage


 

ここでは以下について説明します。

注意 : このトピックでは、ブックやページがクリックされたときに生成される URL の簡略化について説明します。プレゼンテーション JSP 内のリンクに対して簡略化 URL を作成する方法を示すものではありません。

 


URL フォーマット

シングル ポータル ファイルとストリーミング ポータル デスクトップでは、ブックやページのデフォルト URL が異なります (『ポータル ユーザ インタフェースのフレームワーク ガイド』の「シングル ファイル モードとストリーミング モード」を参照してください)。

表 1 に、シングル ポータル ファイルとストリーミング ポータル デスクトップのデフォルト URL および簡略化された URL の例を示します。

表 1 デフォルト URL と簡略化された URL の例

デフォルト URL

簡略化された URL

シングル ポータル ファイル

http://intranet/ourportal/everyone.portal?_nfpb=true&_pageLabel=HomePage

http://intranet/ourportal/page/portal/everyone/
HomePage

ストリーミング ポータル デスクトップ

http://intranet/ourportal/appmanager/field/
everyone?_nfpb=true&_pageLabel=
HomePage

http://intranet/ourportal/page/field/
everyone/HomePage


 

 


URL の簡略化

以下の手順では、より簡単な URL の作成方法を示します。

手順 1. サーブレットを作成して URL マッピングを実行する

最終的には、生成された長い URL がポータル フレームワークで必要になります。URL の簡略化メカニズムを設定する場合は、短い URL をフレームワークで必要な長い URL にマップする方法を指示する必要があります。このマッピングは、サーブレットで設定します。

この手順では、page (page.jsp) というサーブレットを Web アプリケーションのルートに作成します。この page.jsp で、簡略化された URL と長いフレームワーク URL のマッピングを処理します。サーブレットまたは JSP には任意の名前を付けることができます。

  1. WebLogic Workshop でポータル アプリケーションを開きます。
  2. 簡略化された URL を使用するポータル Web プロジェクトに page.jsp を作成します。
  3. 作成した JSP ファイルが表示されたら、ソース ビューに切り替え、デフォルトのコードとコンテンツをすべて削除します。コード リスト 1 のコードを挿入します。
  4. ファイルを保存します。

コード リスト 1 page.jsp の新しいコード

<%
String [] thePath= request.getPathInfo().split("/");
if (thePath[1].equals("portal"))
{
request.getRequestDispatcher("/" + thePath[2]
+ ".portal?_nfpb=true&_pageLabel=" +
thePath[3]).forward(request, response);
}
else
{
request.getRequestDispatcher("/appmanager/"
+ thePath[1] + "/" + thePath[2] +
"?_nfpb=true&_pageLabel=" +
thePath[3]).forward(request, response);
}
%>

このコードでは、サーブレットで受信した URL を各フォワード スラッシュ (/) の位置で分割し、URL がシングル .portal ファイルであるか、ストリーミング ポータルであるかを検出し、簡略化された URL を再配置してフレームワークに必要な長い URL にします。

手順 2. サーブレットを登録およびマップする

サーブレットを作成したら、次の手順に従って、サーブレットが作成されたこをサーバに示す必要があります。

  1. WebLogic Workshop で、ポータル Web プロジェクトの WEB-INF/web.xml ファイルを開きます。
  2. ファイルの servlet セクションに、コード リスト 2 のエントリを追加します。page 以外のサーブレット名を使用した場合は、そのサーブレット名を入力してください。

コード リスト 2 サーブレット宣言エントリ

<servlet>
<servlet-name>page</servlet-name>
<jsp-file>page.jsp</jsp-file>
</servlet>

このエントリは、page というサーブレットが存在することをサーバに対して示します。このサーブレットは、ポータル Web プロジェクトのルートにある page.jsp ファイルです。

  1. web.xml の servlet-mapping セクションに、コード リスト 3 のエントリを追加します。

コード リスト 3 サーブレット マッピング エントリ

<servlet-mapping>
<servlet-name>page</servlet-name>
<url-pattern>/page/*</url-pattern>
</servlet-mapping>

このエントリは、/page/* を含む URL をユーザがクリックしたときは必ず page サーブレットを使用するようにサーバに指示します。以下の手順では、このパターンを使用して URL を作成します。

  1. ファイルを保存します。

手順 3. ポータル フレームワークのブックおよびページのリンクを変更する

ユーザは、メニューにあるブックやページのリンクを使用してポータル内を移動します。ポータル フレームワークでは、メニュー スケルトン ファイルを使用してブックやページのリンクが動的に構築されます。この手順では、メニュー スケルトンを変更して新しい簡潔な URL を生成します。新しい URL は、ユーザがブックやページのリンクをクリックしたときにブラウザのアドレス フィールドに表示されます。

この手順は、デフォルト スケルトンのシングルレベル メニューとマルチレベル メニューでの簡略化 URL に対応します。

注意 : この手順で実装する URL の簡略化は、デフォルト スケルトン (少なくともデフォルトの submenu.jspsinglelevelmenu.jsp スケルトン ファイル) を使用するすべてのルック アンド フィールでサポートされます。ただし、独自の submenu.jspsinglelevelmenu.jsp ファイルを持つ新しいスケルトンをルック アンド フィールで使用する場合は、それらのスケルトンに対してもこの手順を繰り返す必要があります。スケルトンの詳細については、WebLogic Workshop ヘルプ システムの「スケルトンおよびスケルトン テーマを作成する」を参照してください。

singlelevelmenu.jsp スケルトン ファイルを変更する

singlelevelmenu.jsp スケルトン ファイルは、最上位のブックおよびページへのリンクを生成します。この手順では、デフォルト スケルトンの singlelevelmenu.jsp ファイルを変更します。

  1. WebLogic Workshop で、次のファイルを開きます。
  2. <portalWebProject>/framework/skeletons/default/singlelevelmenu.jsp.
  3. ファイル ヘッダのインポート クラスのリストに、次を追加します。
  4. com.bea.netuix.servlets.manager.AppContext
  5. ファイル内で、import 文のすぐ下にある次の行を探します。
  6. BookPresentationContext book = BookPresentationContext.getBookPresentationContext(request);

    その行の真上に、コード リスト 4 のコードを貼り付けます。

コード リスト 4 リクエスト URI を分割するコード

String shortpath = "";
String [] path = request.getRequestURI().split("[/.]");
if (AppContext.getAppContext(request).isDotPortal())
{
shortpath = request.getContextPath() + "/page/" + path[3] + "/" + path[2] +
"/";
}
else
{
shortpath = request.getContextPath() + "/page/" + path[3] + "/" + path[4] +
"/";
}

このコードでは、URI を各フォワード スラッシュとドット ([/.]) の位置で分割し、URL がシングル .portal ファイルであるかストリーミング ポータルであるかを検出し、URL を再配置して簡略化されたフォーマットを使用します。たとえば、sample.portal と呼ばれる .portal ファイルの場合、分割によって sampleportal という断片が作成され、新しい簡略化された URL では、これらの断片が portal/sample として再配置されます。簡略化された URL は、変数 shortpath に割り当てられます。

  1. ファイルの下方で、コード リスト 5 のコード ブロックを探します。

コード リスト 5 singlefilemenu.jsp のコード ブロック

else
{
if (inactiveImage == null)
{
%><li class="<%= menuItemClass %>"><a href="<render:pageUrl pageLabel="<%=
pageCtx.getDefinitionLabel() %>"/>
"><%= pageCtx.getTitle() %></a></li><%
}
else if (rolloverImage == null)
{
%><li class="<%= menuItemClass %>"><a href="<render:pageUrl pageLabel="<%=
pageCtx.getDefinitionLabel() %>"/>
"><img src="<%= inactiveImage %>"></a>
</li><%
}
else
{
%><li class="<%= menuItemClass %>"><a href="<render:pageUrl pageLabel=
"<%= pageCtx.getDefinitionLabel() %>"/>
"><img src="<%= inactiveImage
%>" longDesc="<%= rolloverImage %>"></a></li><%
}
}

このコードでは、ナビゲーション用の画像、ロールオーバ画像、またはテキストを使用するブックおよびページのリンクを生成します。

  1. コード リスト 5 で太字になっている href の値を、次のコードに置き換えます。
  2. <%= shortpath + childPageCtx.getDefinitionLabel() %>

    リンクには、定義した shortpath に加えて、URL を完成させるために必要なブックやページの定義ラベルが含まれます。

  3. ファイルを保存します。

submenu.jsp スケルトン ファイルを変更する

submenu.jsp スケルトン ファイルは、最上位のブックおよびページ リンクの下のブックおよびページへのリンクを生成します。この手順では、デフォルト スケルトンの submenu.jsp ファイルを変更します。submenu.jsp スケルトン ファイルの変更は、前の手順の singlelevelmenu.jsp の変更とほぼ同じです。

  1. WebLogic Workshop で、次のファイルを開きます。
  2. <portalWebProject>/framework/skeletons/default/submenu.jsp.
  3. ファイル ヘッダのインポート クラスのリストに、次を追加します。
  4. com.bea.netuix.servlets.manager.AppContext
  5. このファイルで、次の行を見つけます。
  6. if (!bookCtx.isHidden()

    その行の真上に、コード リスト 6 のコードを貼り付けます。

コード リスト 6 リクエスト URI を分割するコード

String shortpath = "";
String [] path = request.getRequestURI().split("[/.]");
if (AppContext.getAppContext(request).isDotPortal())
{
shortpath = request.getContextPath() + "/page/" + path[3] + "/" + path[2] +
"/";
}
else
{
shortpath = request.getContextPath() + "/page/" + path[3] + "/" + path[4] +
"/";
}
  1. ファイルの下方で、コード リスト 7 のコード ブロックを探します。

コード リスト 7 submenu.jsp のコード ブロック

<a class="<%= menuItemLinkClass %>" href="<%=PageURL.createPageURL(request, response, childPageCtx.getDefinitionLabel()).toString() %>"><%=childPageCtx.getTitle() %></a>
  1. コード リスト 7 で太字になっている href の値を、次のコードに置き換えます。
  2. <%= shortpath + childPageCtx.getDefinitionLabel() %>

    リンクには、定義した shortpath に加えて、URL を完成させるために必要なブックやページの定義ラベルが含まれます。

  3. ファイルを保存します。

ブックおよびページの定義ラベルを変更する

ポータル フレームワークでは、訪問者に表示されるブックやページのタイトルではなく、ブックやページの URL にあるブックやページの定義ラベルが使用されます。ブックやページの定義ラベルは、訪問者がブックやページをクリックしたときに、Web ブラウザのアドレス バーに表示されます。

たとえば、ユーザには「My Page」 (タイトル) というページが表示されますが、ユーザが [My Page] をクリックすると、アドレス バーの URL の末尾は「/page_2」 (定義ラベル) になります。URL の定義ラベルをブック名やページ名のテキストに変更して表示することができます。

注意 : 定義ラベルにスペースや特殊文字は使用できません。

定義ラベルを変更するには、次の手順に従います。

  1. WebLogic Workshop でポータル ファイルを開き、ブックまたはページを選択します。
  2. プロパティ エディタで (図 3)、[定義ラベル] を変更し、〔Enter〕または〔Tab〕を押します。
  3. ポータル ファイルを保存します。
  4. 図 3 ページのタイトルと定義ラベル


     

手順 4. URL をテストする

  1. WebLogic Workshop でポータル ファイルを開き、[プロパティ エディタ] の [ルック アンド フィール] の値が、デフォルト スケルトンを使用するルック アンド フィールに設定されていることを確認します。
  2. [ポータル現在のポータルを開く] を選択します。ポータルがブラウザ ウィンドウに表示されます。ブックやページ間を移動して、簡略化された URL を確認します。

WebLogic Administration Portal のポータル ファイルをテンプレートとして使用して、ストリーミング ポータル デスクトップを作成することもできます。デスクトップを作成したら、デスクトップを表示し、ブックやページ間を移動して簡略化された URL を確認してください。

詳細については、WebLogic Administration Portal ヘルプ システムの「デスクトップを作成する」を参照してください。

 

ページの先頭 前 次