创建 Struts portlet 和项目

虽然 Struts portlet 项目与标准 portlet 和 Struts 项目有一些公共特征,但是仍存在一些您应该注意的差别。Struts portlet 项目结构和相关资源都取决于 WebSphere® Portal 提供的“Struts Portlet 框架”(SPF)支持并且包括在 Rational® Developer 中。

使用“新建 Portlet 项目”向导创建 Struts portlet 项目。将在创建项目过程中添加缺省 Struts-type 类型 portlet 和 Web 图文件(可选)。该向导将自动生成 Struts portlet 配置文件和 web.xml 文件的必要更新,并将所有 SPF 标记库和 JAR 文件添加至所需目录结构的项目中。

该项目中将包括 Struts Portlet 框架定义的下列资源类型:
资源类型 文件 目标目录
TLD SPFLegacyBlank.war 中的所有 *.tld 文件 WEB-INF  
JAR SPFLegacyBlank.war 中除 Blank.jar 之外的所有 *.jar 文件 WEB-INF/lib  
配置文件
  • struts-config.xml
  • struts-config-mode.xml(用于不同的方式/标记)
  • portlet.xml
WEB-INF

Struts 配置文件中将自动生成定义“请求处理器”类的 <controller> 元素。

部署描述符
  • portlet.xml
  • web.xml
WEB-INF

对标准 web.xml 文件进行了下列修改:

  • 添加了 servlet WpsStrutsPortlet。
  • Web-appservletservlet-mapping 标记包含具有字符串值的标识属性,该字符串值以唯一标识作为后缀来防止与其它 portlet 相冲突。
  • 使用基于前缀的映射来配置 WpsStrutsPortlet,在 servlet 的 struts-servlet-mapping 初始参数中定义基于扩展的 servlet 映射。当包括 Struts 链接时,应使用基于扩展的映射。如果您要将此 Struts portlet 项目作为独立应用程序运行,则将 servlet 映射条目从基于扩展的 servlet 映射(*.do)更改为基于前缀的映射(例如,诸如 /app/* 的 URL 模式)。
    注: 您不能将同一配置用于 Web 项目和 portlet 应用程序。
  • 对于参数 struts-servlet-mapping,基于扩展的映射是必需的并在 WpsStrutsPortlet 的初始参数中定义。
  • 使用 Struts portlet 标记库定义。
  • 在 portlet.xml 中包括 Portlet 方式配置信息。因为(对于 SPF)方式和标记将视为 Struts 模块,所以这些模块也定义为 WpsStrutsPortlet 的初始参数的一部分。
  • 提供 Struts 方式的欢迎文件列表支持。
  • 提供与 Struts portlet 相关的 init-param 值。

下列样本配置和部署描述符文件片段显示在 Struts portlet 项目中使用的代表标记:

struts-config.xml
将以下 controller 部分添加至所有 struts 配置文件:
<controller processorClass="com.ibm.wps.portlets.struts.WpsRequestProcessor">
</controller>
web.xml
这里显示了已添加至 web.xml 的样本 Struts portlet servlet。(特定于 Struts portlet 的值用粗体表示。):
<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 portlet servlet 的 servlet 映射示例。
<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 的示例:
<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 中定义的具体 portlet 的示例:
<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>
注: WebSphere Portal V5.1 不能使用 <config-param> 元素。
相关概念
Struts portlet 应用程序
Struts Portlet 框架
使用 portlet 部署描述符
基于 Struts 的 Web 应用程序 - 概述
用于应用程序开发的 Struts 工具
相关任务
创建 Struts portlet
创建 Struts portlet JSP 文件
创建结构严谨的使用 Struts 的 Web 应用程序
相关参考
Struts 1.1 与 SPF 标记库类之间的差别
使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.