IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

了解 WebSphere 门户网站如何显示门户页面: 第 I 部分:描述 Default.jsp、Head.jsp 和 ToolBarInclude.jsp

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Sukumar Konduru, 顾问软件工程师, 达拉斯,IBM Developer Technical Support Center

2003 年 7 月 01 日

您可能想知道如何将您门户网站上的徽标换成您公司的徽标。或者您想在门户网站上添加一个左侧导航窗格,或更改其背景颜色。通过了解 WebSphere Portal 用于显示门户页面的 JSP 流程以及这些 JSP 的内容,您可以创建或修改主题或皮肤,使您的门户网站看上去象您公司的 Web 站点。

© 2003 International Business Machines Corporation. Allrights reserved.

引言

您可能想知道如何将您门户网站上的徽标换成您公司的徽标。或者您想在门户网站上添加一个左侧导航窗格,或更改其背景颜色。通过了解 WebSphere Portal 用于显示门户页面的 JSP 流程以及这些 JSP 的内容,您可以创建或修改主题或皮肤,使您的门户网站看上去象您公司的 Web 站点。

IBM WebSphere Portal Enable for Multiplatforms V4.2 使用不同的 Java Server Page(JSP)、级联样式表(Cascading Style Sheet,CSS)和图像来显示门户页面。它使用位于 C:\WebSphere\PortalServer\app\wps.ear\wps.war 目录下 themesskinsscreens 目录中的 JSP 来构造门户页面。这些目录中的每一个都包含 htmlwmlchtml 子目录,WebSphere Portal 将它们用于服务不同客户机,例如桌面浏览器和移动设备。

本文是一系列文章的第一篇,这一系列将讲解 WebSphere Portal 如何为通过 Internet Explorer(IE)访问 WebSphere Portal 的客户机使用缺省主题和缺省皮肤显示门户页面。对于所有其他的主题和皮肤,处理过程也是类似的。

本系列文章说明了:

  • 用于显示门户页面的 JSP 流程

  • 如何使用 engine.tld  中定义的 JSP 标记

  • 如何使用级联样式表(CSS)元素 

  • 如何使用属性文件显示门户网站标题和其它属性 

本文描述了缺省主题定义的 Default.jspHead.jspToolBarInclude.jsp 的内容和流程。

Default.jsp

所有屏幕聚集都从 Default.jsp 开始。用于缺省主题的 Default.jsp 位于 wp_root\app\wps.ear\wps.war\themes\html 。这个 JSP 包含其它用于显示标题、工具栏的 JSP 以及用于往可用位置及页面植入内容的 JSP。在 Default.jsp 的末尾处, screenRender JSP 标记选择被请求的屏幕(例如 loginforgotpassword )。图 1 演示了 Default.jsp 的流程。

图 1:Default.jsp 的流程
Default.jsp 的流程

下面的讨论将带您了解 Default.jsp 的内容。当您阅读这些讨论时,您可能想要 查看 Default.jsp 的清单

  1. Default.jsp 文件包含一个 JSP 标记库 engine.tld ,该库使用下列 URI:
    <%@ taglib uri="/WEB-INF/tld/engine.tld" prefix="wps" %>
                

    这一标记库提供了植入位置名称、页面以及在所要求的主题和皮肤定位图像所需的 JSP 标记。您需要了解这一标记库以便定制您门户网站的外观和感觉。

  2. 为获取门户网站的基本 URL 以及文档 URL,在 Default.jsp 中使用了 constants JSP 标记。这一元素使得下列两个脚本变量可用于该页面。
     
    • wpsBaseURL:用于获取门户网站 URL,例如 http://sukumar.ibm.com/wps/ 。使用此变量可生成指向 wp_root\app\wps.ear\wps.war 目录中资源的链接。
    • wpsDocURL:用于生成指向门户网站帮助文件的链接。
  3. html 内容的头部分通过包含 Head.jsp 而生成,该 Head.jspDefault.jsp 在同一个目录下。本文下一部分将描述 Head.jsp
     
  4. 接下来, Default.jsp 包含 extension/PageBeginInclude.jsp 。这个 JSP 只包含用于 WebSphere Portal Enable 版的注释;其内容不在此处加以讨论。
     
  5. 对于所有版本, Default.jsp 都包含下列三个 JSP。
    • ToolBarInclude.jsp
    • PlaceBarInclude.jsp
    • PageBarInclude.jsp

      这些 JSP 与 Default.jsp 位于同一目录下。 ToolBarInclude.jsp 在本文中进行讨论。 PlaceBarInclude.jspPageBarInclude.jsp 文件将在下一篇文章中讨论。

  6. 在包含了这些 JSP 页之后,定义下面的链接。
    <a name="wpsMainContent"> </a>
                

    这个链接就定义在 screenRender JSP 标记前面。该链接是从 ToolbarInclude.jsp 引用,并包含一个隐藏的图像 dot.gif 。利用此链接,使用支持语音合成的浏览器(例如 Home Page Reader)收听页面内容的人,可以跳过导航链接直接收听页面上用户定制的 portlet 的内容。为满足可访问标准,需要此链接。

  7. 这时,WebSphere Portal 使用 screenRender 标记开始处理来自当前页面上用户定制的 portlet 的内容。该标记的执行将调用 skinsscreens 目录中的 JSP。这些 JSP 的流程和内容将在后继文章中讨论。

  8. Default.jsp 包含 extension/PageEndInclude.jsp 。这个 JSP 只包含用于 WebSphere Portal Enable 版的注释;其内容不在这里讨论。

Head.jsp

Head.jsp 生成标题并嵌入指向样式表文件的链接。它还定义了支持 BIDI(双向)文本所需的变量。这个 JSP 的内容将在这里描述。当您阅读这些讨论时,您可能想要 查看 Head.jsp 的清单。 

  • text JSP 标记使您可以读取由 bundle 属性指定的文件中的 key 属性定义的属性。下列代码从位于 C:\WebSphere\AppServer\lib\app\nls 目录的 engine_en.properties 文件读取 title 属性,以便浏览器访问时以英语作为首选语言。要更改门户页面的 title ,请修改 engine_en.properties 文件。
        <title><wps:text key="title" bundle="nls.engine"/></title>
                

  • urlFindinTheme JSP 标记生成指向门户网站所使用的主题中资源的 URL 链接。下列代码生成指向由 file 属性指定的样式表的链接。
        <link href='<wps:urlFindInTheme file="Styles.css"/>' rel="styleSheet"
              type="text/css">
        <link href='<wps:urlFindInTheme file="HelpStyles.css"/>' rel="styleSheet"
              type="text/css">
                

    对于通过 IE 访问的英语使用环境,用于门户网站样式及帮助样式的文件都位于 wp_root\app\wps.ear\wps.war\themes\html\ie\en

每次修改过包含的 JSP,请务必保存 Default.jsp 。否则,门户网站将显示来自先前编译过的 JSP 中的内容。

ToolBarInclude.jsp

ToolBarInclude.jsp 显示公司徽标、欢迎消息以及为用户提供的链接 工具栏。门户网站上显示什么样的链接工具栏取决于用户上下文。例如,登录的用户看到 Edit LayoutEdit my profileLog Off之类的链接;而注销的用户看到 I forgot my passwordLog inSign up之类的链接。图 2 显示某用户登录之后的门户网站。  


图 2:用户已经以 wpsadmin 的身份登录到门户网站
登录屏幕

图 3 显示用户注销之后的门户网站。


图 3. 用户注销之后的门户网站
注销屏幕

ToolbarInclude.jsp 文件显示两个表格行。第一行包含两列。第一列在左侧显示 logo.gif ,第二列在右侧显示链接工具栏。对于 BIDI 语言这两列的显示情况与此相反。 

第二行被用作工具栏和 PlaceBarInclude.jsp 显示的位置名称之间的分隔符。它显示使用 Styles.css 中指定的 wpsToolbar CSS 元素的背景颜色的条纹。该 JSP 的内容在此描述。当您阅读这些讨论时,您可能想要 查看 ToolBarInclude.jsp 的清单。 

指定公司徽标

公司徽标使用下列代码显示。

  <img align="absmiddle"
    alt='<wps:text key="title" bundle="nls.engine">Portal Title</wps:text>'
    title='<wps:text key="title" bundle="nls.engine"/>'
    src='<wps:urlFindInTheme file="logo.gif"/>'>
    

对于缺省主题, logo.gif 文件位于 wp_root\app\wps.ear\wps.war\themes\html 目录下。通过替换 logo.gif 或将您公司的徽标复制到缺省主题的目录中并修改上述代码中的 file 属性,您就可以更改公司的徽标。 alt 属性的文本从 engine_en.properties 文件读取。

链接到

wpsMainContent

下列代码嵌入一个链接以满足可访问性标准。

  <a href="#wpsMainContent">
    <img width="1" height="1" border="0" src='<%= wpsBaseURL %>/images/dot.gif'
    alt='<wps:text key="link.skiptocontent" bundle="nls.engine"/>'
    title='<wps:text key="link.skiptocontent" bundle="nls.engine"/>'>
  </a>
    

这一链接允许残障用户跳过工具栏链接直接访问门户网站的内容。此链接使用一个非常小的图像 dot.gif ,使用桌面浏览器看不到该图像,除非用户在 logo.gif 后面缓慢的移动光标。此链接定义于前面说明的 Default.jsp 中。

定义

firstButton 变量

下列代码阐明了 firstButton JSP 脚本编制变量。

   <% boolean firstButton = true; %>
    

在门户网站右上方,所有链接和欢迎消息都用定界符 |进行分隔。初始化时置 firstButton 变量为 true ,这意味着 WebSphere Portal 不在链接之前放置 |。在生成第一个链接之后,它将该值设置为 false 并在后面所有链接之前放置 | 。图 2 和 3 显示工具栏链接之间的定界符 |

执行

if JSP 标记

后两个子段的代码片段放置在 if JSP 标记的主体(body)之内。

   <wps:if loggedIn="yes" screen="Home,LoggedIn">
   <%-- Code fragment from "Displaying welcome message" subsection --%>
   <%-- Code fragment from "Links for quick customizer" subsection --%>
   </wps:if>
    

只有当用户登录进去而屏幕是 HomeLoggedIn 时才执行这一 if JSP 标记的主体。

显示欢迎消息

下面的代码片段从带有 Welcome {0}! 值的 nls\engine_en.properties 文件中读取 welcome 属性的值。

   <wps:text key="welcome" bundle="nls.engine">
     <wps:textParam>
        <wps:user attribute="givenName"/>
     </wps:textParam>
     <wps:textParam>
        <wps:user attribute="familyName"/>
     </wps:textParam>
   </wps:text>
    

当用户以 wpsadmin 身份登录到门户网站之后,图 2 显示 Welcome Wps!,因为 Wpswpsadmin 注册用的名字。在上面的代码中,用第一个 textParam JSP 标记的值替换了 {0} 这个值。

由于 welcome 属性的值并不包含 {1} ,第二个 textParam 标记的值被忽略。同样的,为显示 textParam JSP 标记生成的用户姓氏,把 welcome 属性的值更改为 welcome {0} {1}! 。修改过属性文件之后,您需要重新启动门户服务器。 user 标记允许您使用 givenName、familyNameuserid 属性并返回相应值。

快速定制器链接

WebSphere Portal 4.2 引入了一个新的 JSP 标记 urlselect ,使您可以为指定的属性 placeNamepageName 创建链接。此标记使链接在标记主体内可用作 wpsSelectURL 脚本变量。 urlselect 标记用于生成指向 Edit LayoutNew Page的链接。

下面的代码定义了 Edit Layout工具栏链接。

   <wps:urlSelect placeName="Work with Pages" pageName="Edit My Pages"
     type="editlayout">
     <% if (firstButton) { firstButton = false; }
       else { %>& |& <% } %>
    <a class="wpsToolBarLink" href='<%= wpsSelectURL %>'><wps:text
         key="link.editlayout" bundle="nls.engine"/></a>
   </wps:urlSelect>
    

下面的代码定义了 New Page工具栏链接。

    <wps:urlSelect placeName="Work with Pages" pageName="Edit My Pages"
         type="editlayout">
    <% if (firstButton) { firstButton = false; } else { %>& |& <% } %>
    <a class="wpsToolBarLink" href='<%= wpsSelectURL %>'><wps:text
         key="link.editlayout" bundle="nls.engine"/></a>
    </wps:urlSelect>
    

您可以使用 urlSelect JSP 标记添加其它页面链接。

I forgot my password 链接

如果用户登录失败,则使用 url 标记生成指向 I forgot my password的链接。当用户单击此链接时,将显示位于 screens 目录中 forgotpassword.jsp 的内容。下列代码说明了如何创建指向 I forgot my password的链接。

    <%-- forgot password button --%>
    <wps:if loggedIn="no" notScreen="ForgotPassword">
    <% if (firstButton) { firstButton = false; } else { %>& |& <% } %>
    <a class="wpsToolBarLink" href='<wps:url screen="ForgotPassword" home="public"/>'>
    <wps:text key="link.password" bundle="nls.engine"/></a>
    </wps:if>
    

Edit my profile 链接

带有 PrepareSelfCare 命令值的 url 标记生成指向 Edit my profile的链接。单击此链接,将显示位于 screens 目录下的 UserProfileForm.jsp 。下列代码演示了用于显示该链接的代码。

    <%-- selfcare button --%>
    <wps:if loggedIn="yes" notScreen="SelfcareUserForm,SelfcareUserConf">
    <% if (firstButton) { firstButton = false; } else { %>& |& <% } %>
    <a class="wpsToolBarLink" href='<wps:url command="PrepareSelfcare"
        reqid="no"/>'>
    <wps:text key="link.selfcare" bundle="nls.engine"/></a>
    </wps:if>
    

Sign up 链接

带有 PrepareEnrollment 属性的 url 标记使您可以生成指向 Sign up的链接,以便用户能够自行登记。单击此链接,将显示位于 screens 目录的 UserProfileForm.jsp 。下列代码展示了用于显示 Sign up链接的代码。

    <wps:if loggedIn="no">
    <%
    String dt = com.ibm.wps.puma.UserManager.instance().getDirectoryType();
    if (dt==null)
    {
        dt = "";
    }
    if (!dt.equals("SSPM"))
    {
    %>
    <% if (firstButton) { firstButton = false; } else { %>& |& <% } %>
    <a class="wpsToolBarLink" href='<wps:url command="PrepareEnrollment"
        home="public" reqid="no"/>'>
    <wps:text key="link.enrollment" bundle="nls.engine"/></a>
    

如果您想禁止用户自行登记到门户网站,您可以从 ToolBarInclude.jsp 中除去前面的代码。 Help 链接

Help链接通过 wpsDocURL JSP 变量生成。通过包含 Default.jsp部分说明的 constants JSP 标记,就可以访问此变量。

    <%-- help button --%>
    <% if (firstButton) { firstButton = false; } else { %>& |& <% } %>
    <a class="wpsToolBarLink" href="<%= wpsDocURL %>/InfoCenter/help/index.html"
         target="PortalHelpWindow"
    onClick="javascript: window.open('<%= wpsDocURL %>/InfoCenter/help/index.html',
         'PortalHelpWindow',
    'resizable=yes,scrollbars=yes,menubar=no,toolbar=yes,status=no,width=800,
         height=600,screenX=10,screenY=10,top=10,left=10').focus(); return false;">
    <wps:text key="link.help" bundle="nls.engine"/></a>
        

Log in link

带有 home=publicscreen=Login 属性的 url 标记生成 Log in链接。单击此链接,将显示位于 screens 目录的 login.jsp 。您需要修改 login.jsp 以更改登录屏幕。此 login.jsp 使用带有 command=LoginUser 属性的 url 标记来生成指向凭证提交的 URL。下列代码说明如何生成这一链接。

    <wps:if loggedIn="no" notScreen="Login">
    <% if (firstButton) { firstButton = false; } else { %>& |& <% } %>
    <a class="wpsToolBarLink" href='<wps:url home="public" screen="Login"
    ssl="false"/>'><wps:text key="link.login" bundle="nls.engine"/></a>
    </wps:if>
    

Log off 链接

command 属性的值为 LogoutUserurl 标记生成 Log off链接。下列代码说明如何生成这个链接。  

    <wps:if loggedIn="yes">
    <% if (firstButton) { firstButton = false; } else { %>& |& <% } %>
    <a class="wpsToolBarLink" href='<wps:url command="LogoutUser"/>'>
    <wps:text key="link.logout" bundle="nls.engine"/></a>
    </wps:if>
    

第二行

下列代码显示一条颜色,作为工具栏和地址栏之间的分隔符。颜色定义为 Styles.css 中的 wpsToolBarSeparator 元素。您可以修改此 CSS 元素的 background-color 属性。

    <td class="wpsToolBarSeparator" height="10" colspan="2"><img width="1"
    height="1" border="0" src='<%= wpsBaseURL %>/images/dot.gif' alt="">
    

结束语

本文说明了 WebSphere Portal 显示门户网页的流程。描述了位于缺省主题目录中的 Default.jspHead.jspToolBarInclude.jsp 的内容。所有这些 JSP 页都使用在 engine.tld 文件中定义的标记。了解这些 JSP 标记并知道如何在门户 JSP 页中使用它们将有助于您创建新主题以及修改现有主题。

相关信息



关于作者

Sukumar Konduru是位于达拉斯的 IBM Developer Technical Support Center 的顾问软件工程师。他拥有休斯敦大学的计算机科学硕士学位。您可以通过 konduru@us.ibm.com与 Sukumar Konduru 联系。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?







回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款