Struts ポートレットとプロジェクトの作成

Struts ポートレット・プロジェクトは、いくつかの相違点はありますが、 標準ポートレットおよび Struts プロジェクトと共通の特性を共有します。Struts ポートレット・プロジェクト構造および関連リソースは、WebSphere® Portal が提供する Struts Portlet Framework (SPF) サポートによって規定され、Rational® Developer に組み込まれています。

Struts ポートレット・プロジェクトは、「新規ポートレット・プロジェクト」ウィザードを使用して作成されます。 デフォルトの Struts タイプ・ポートレット、およびオプションとして Web ダイアグラム・ファイルが、プロジェクトの作成プロセスで追加されます。 このウィザードにより、Struts ポートレット構成ファイル、 および web.xml ファイル、portal.xml ファイルに対する必要なアップデートが自動的に生成され、 すべての SPF タグ・ライブラリーと JAR ファイルが、要求されているディレクトリー構造内のプロジェクトに追加されます。

Struts Portlet Framework によって定義される次のタイプのリソースが、プロジェクト内に組み込まれます。
リソース・タイプ ファイル ターゲット・ディレクトリー 注記
TLD
IBM® API ポートレット
SPFLegacyBlank.war 内のすべての *.tld ファイル
JSR 168 API ポートレット
SPFStandardBlank.war 内のすべての *.tld ファイル
WEB-INF  
JAR
IBM API ポートレット
SPFLegacyBlank.war 内のすべての *.jar ファイル (Blank.jar を除く)
JSR 168 API ポートレット
SPFStandard.war 内のすべての *.jar ファイル (Blank.jar を除く)
WEB-INF/lib  
構成ファイル
  • struts-config.xml
  • struts-config-mode.xml (異なるモード/マークアップの場合)
WEB-INF

Request Processor のクラスを定義する <controller> エレメントは、Struts 構成ファイル内に自動的に生成されます。

デプロイメント記述子
  • portlet.xml
  • web.xml
WEB-INF

IBM (レガシー) API ポートレット

標準の web.xml ファイルが以下のように変更されます。

  • サーブレット com.ibm.wps.portlets.struts.WpsStrutsPortlet が追加されます。
  • Web-appservlet、および servlet-mapping タグは、 他のポートレットと競合しないようにするために固有の ID をサフィックスとして付けた、ストリング値を持つ ID 属性を持ちます。
  • WpsStrutsPortlet は、プレフィックス・ベースのマッピングを使用して、 サーブレットの struts-servlet-mapping 初期設定パラメーターで定義されている拡張子ベースのサーブレット・マッピングを付けて構成されます。 拡張子ベースのマッピングは、Struts リンクの組み込み時に使用します。 この Struts ポートレット・プロジェクトを独立タイプ・アプリケーションとして実行する場合には、 拡張子ベースのサーブレット・マッピング (*.do) からプレフィックス・ベースのマッピング (例: /app/* などの URL パターン) にサーブレット・マッピング・エントリーを変更します。
    注: Web プロジェクトとポートレット・アプリケーションには、 同一の構成を使用できません。
  • 拡張子ベースのマッピングは、必須で、WpsStrutsPortlet の初期パラメーターで定義されています (パラメーター struts-servlet-mapping)。
  • Struts ポートレット・タグ・ライブラリーの定義が使用されます。
  • ポートレット・モード構成情報は、portlet.xml に組み込まれています。(SPF の場合) モードおよびマークアップは Struts モジュールとして扱われるため、これらのモジュールは、WpsStrutsPortlet の初期パラメーターの一部としても定義されます。
  • Struts モードのためのようこそファイル・リストのサポートが提供されています。
  • Struts ポートレット関連の init-param 値が提供されています。
     

JSR 168 (標準) API ポートレット

次の 項目が、portlet.xml ファイルに組み込まれています。

  • ポートレット com.ibm.portal.struts.portlet.StrutsPortlet が追加されます。これは サーブレット・エントリーではないことに注意してください。portlet.xml 内でのみ 定義されます。
  • ポートレットは、他のポートレットとの競合を防ぐために、定義内に含まれている タグで一意的に識別されます。
  • 拡張子ベースのマッピング (*.do など) が必須です。 これは、StrutsPortlet の初期パラメーター struts-servlet-mapping で定義されています。
  • ポートレット・モード構成情報は、portlet.xml に組み込まれています。(SPF の場合) モードおよびマークアップは Struts モジュールとして扱われるため、これらのモジュールは、StrutsPortlet の初期パラメーターの一部としても定義されます。
  • Struts ポートレット関連の init-param 値が提供されています。
  • サポートされる Struts モードの初期ページは、このポートレットの ポートレット設定の一部として、portlet.xml で定義されています。たとえば、次のとおりです。
    <portlet-preferences>
      <preference>
        <name>com.ibm.struts.portal.page.view.html</name>     <value>index.jsp</value>
      </preference>
      <preference>
        <name>com.ibm.struts.portal.page.edit.html</name>     <value>html/edit/index.jsp</value>
      </preference>
    </portlet-preferences>

JSR 168 SPF に適した Struts ポートレット・タグ・ライブラリーの定義 および Struts モードでサポートされるウェルカム・ファイルのリストが、web.xml ファイルに 組み込まれています。

IBM (レガシー) API ポートレットの規則

次のサンプルの構成とデプロイメント記述子ファイルの断片は、Struts ポートレット・プロジェクト内で使用される代表的なタグ付けを示しています。

struts-config.xml
すべての Struts 構成ファイルに次のコントローラー・セクションが追加されます。
<controller processorClass="com.ibm.wps.portlets.struts.WpsRequestProcessor">
</controller>
web.xml
これは、web.xml に追加されたサンプルの Struts ポートレット・サーブレットを示します。(太字は Struts ポートレット固有の値。):
<servlet id="Struts_Unique_Servlet_Name">
     <servlet-name>Struts</servlet-name>
     <display-name>Struts Portlet</display-name>
     <servlet-class>com.ibm.wps.portlets.struts.WpsStrutsPortlet</servlet-class>

   <!-- Struts configuration -->
     <init-param>
       <param-name>config</param-name>
       <param-value>/WEB-INF/struts-config.xml</param-value>
     </init-param>
     <init-param>
       <param-name>struts-servlet-mapping</param-name>
       <param-value>*.do</param-value>
     </init-param> 
	 <!-- end of Struts configuration -->
</servlet>
注: 前述の config パラメーターは、Struts 構成ファイルおよびモジュールを定義する標準的な方法です。 struts-servlet-mapping パラメーターは、Struts ポートレットが Struts アクションとして扱う必要があるパスを認識できるように、Struts アクション・ マッピングとして使用するものを定義するための方法です。 これは、Apache Struts サーブレットを構成する場合の「servlet-mapping」値と 同じ方法で使用されます。param-value には、拡張子ベースの マッピングを使用することを強くお勧めします。
以下は、Struts ポートレット・サーブレットのサーブレット・マッピングの例です。 このポートレットもサーブレットであるため、Struts ポートレットを 参照するように定義されています。
<servlet-mapping id="Struts_Unique_ServletMapping">
      <servlet-name>Struts</servlet-name>
      <url-pattern>/Struts/*</url-pattern>
</servlet-mapping>
これは、web.xml に追加できる追加のタグ・ライブラリーの例です。
<taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
portlet.xml
これは、portlet.xml に定義されたアブストラクト・ポートレットの例です。
<portlet-app uid="A_Unique_ID:1" major-version="1" minor-version="0">
	<portlet-app-name>Struts Portlet Application</portlet-app-name>
	<portlet id="Portlet_1" 
href="WEB-INF/web.xml#Struts_Unique_Servlet_Name"
major-version="1" minor-version="0">
		<portlet-name>Struts Portlet</portlet-name>
		<cache>
			<expires>0</expires>
			<shared>NO</shared>
		</cache>
		<allows>
			<maximized/>
			<minimized/>
		</allows>
            <supports>
               <markup name="html">
                  <view/>
               </markup>
            </supports>
	</portlet>
</portlet-app>
これは、portlet.xml に定義されたコンクリート・ポートレットの例です。
<concrete-portlet-app uid="A_Unique_ID:1.1">
	<portlet-app-name>Struts Blank Application</portlet-app-name>
	<concrete-portlet href="#Portlet_1">
		<portlet-name>Struts Portlet</portlet-name>
		<default-locale>en</default-locale>
		<language locale="en">
			<title>Struts Portlet</title>
			<title-short>Struts Portlet</title-short>
			<description>Struts Portlet</description>
			<keywords>WPS, Struts</keywords>
		</language>
        <config-param>
           <param-name>FilterChain</param-name>
           <param-value>StrutsTranscoding</param-value>
        </config-param>
        <!-- any additional Struts related config-param values added here -->
	</concrete-portlet>
</concrete-portlet-app>
注: FilterChain <config-param> パラメーターは、WebSphere Portal v5.1 では使用できません。

JSR 168 (標準) API ポートレットの規則

次のサンプルの構成とデプロイメント記述子ファイルの断片は、Struts ポートレット・プロジェクト内で使用される代表的なタグ付けを示しています。

struts-config.xml
すべての Struts 構成ファイルに次のコントローラー・セクションが追加されます。
<controller processorClass="com.ibm.portal.struts.portlet.WpRequestProcessor">
</controller>
web.xml
これは、web.xml に追加される追加のタグ・ライブラリーの例です。
<taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
portlet.xml
これは、portlet.xml に追加されたサンプルの Struts ポートレットを示します。
<portlet>
     <portlet-name>StrutsPortletProject</portlet-name>
     <display-name>StrutsPortletProject portlet</display-name>
		<portlet-class>
			  com.ibm.portal.struts.portlet.StrutsPortlet
    </portlet-class>

   <!-- Struts configuration -->
     <init-param>
       <param-name>config</param-name>
       <param-value>/WEB-INF/struts-config.xml</param-value>
     </init-param>
     <init-param>
       <param-name>struts-servlet-mapping</param-name>
       <param-value>*.do</param-value>
     </init-param> 
	 <!-- end of Struts configuration -->

     <!-- Here is an example of edit mode initialization: -->
     <init-param>
       <param-name>config/html/edit</param-name>
       <param-value>/WEB-INF/struts-html-edit.xml</param-value>
     </init-param>

     <!-- The following snippets are generated by the portlet API. -->
     <expiration-cache>0</expiration-cache>
     <supports>
       <mime-type>text/html</mime-type>
       <portlet-mode>view</portlet-mode>
       <portlet-mode>edit</portlet-mode>
     </supports>
     <supported-locale>en</supported-locale>
     <resource-bundle> strutsportletjsr168.nl.StrutsPorltetJSR168PortletResource	</resource-bundle>
       <portlet-info>
           <title>StrutsPortletJSR168 portlet</title>
       </portlet-info>

   <portlet-preferences> 

   <!-- example of setting the first page of the html view mode --> 
     <preference> 
       <name>com.ibm.struts.portal.page.view.html</name> 
       <value>index.jsp</value> 
     </preference> 

   <!-- example of setting the first page of the html edit mode -->
     <preference> 
       <name>com.ibm.struts.portal.page.edit.html</name>
       <value>html/edit/index.jsp</value>
     </preference>

   </portlet-preferences>

</portlet>
注: 前述の config パラメーターは、Struts 構成ファイルおよびモジュールを定義する標準的な方法です。
関連概念
Struts ポートレット・アプリケーション
Struts Portlet Framework
ポートレット・デプロイメント記述子の処理
Struts ベースの Web アプリケーション - 概要
アプリケーション開発用の Struts ツール
関連タスク
Struts ポートレットの作成
Struts ポートレット JSP ファイルの作成
Struts を使用した適切な設計の Web アプリケーションの作成
関連資料
Struts 1.1 タグ・ライブラリー・クラスと SPF タグ・ライブラリー・クラスの相違点

(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005