亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用 Struts portlet 實現頁面導航

2019-11-18 12:55:44
字體:
來源:轉載
供稿:網友

  引言
  Struts 是一個很受歡迎的開放源代碼平臺基礎,它是為了使復雜的 Web 應用程序的創建和維護更加輕易而設計的。Struts 框架支持模型-視圖-控制器(Model-View-Controller,MVC)模型,并且提出了許多重要的應用程序設計和實現需要注重的事項。為了能夠在門戶應用程序中實現頁面導航,WebSphere® Portal V5 提供了一些標記,在開發典型 portlet 和 Struts portlet 時可將這些標記用于 javaServer Pages(jsp)。本文重點討論 Struts 框架創建多模塊的能力,并通過一個樣本 Struts portlet 應用程序為您介紹如何采用 JSP 實現頁面導航方法。
  
  我們將關注以下兩種互補的方法:
  
  如何使用在 WebSphere Portal 中可用的某一 JSP 標記來從 JSP 實現頁面導航
  我們將會看到一個樣本應用程序,包括開發環境和門戶資源的屏幕快照,以及頁面導航方法的代碼樣本。
  如何使用 Struts portlet 框架中內置的多模塊支持來組織 Web 導航方案
  我們將會看到一些代碼樣本,它們闡述了如何使用頁面導航特征來執行在門戶環境中轉換的多個 Struts 模塊。
  
  本文假定您已基本了解 Struts 應用程序,包括如何在 WebSphere Studio application Developer 中創建 Struts 應用程序、如何將 Struts 作為 portlet 進行部署,同時也了解 WebSphere Portal 中的門戶資源。(要獲得這些方面的更多信息,請參見參考資料。)
  
  在開發和部署我們的樣本應用程序時用到了以下產品:
  
  WebSphere Portal V5.x
  WebSphere Application Server v5.x
  支持 Struts Version 1.1 的 WebSphere Studio Application Developer v5.0.1 (下面稱為 Application Developer)。
  
  本文所講解的用于實現頁面導航的開發任務可同時用于標準 portlet 和 Struts portlet。
  
  應用程序概述
  在樣本應用程序中,我們將會使用位于三個不同頁面的三個 portlet。當用戶選擇其中某一 portlet 中的鏈接時,該用戶會被定向到另一個頁面,其中駐留著另一個 portlet。在整個文章中我們開發和提到的示例都會利用多 Struts 模塊將 WebSphere Portal 頁面導航標記并入門戶環境中每個模塊本身的 JSP 文件中。圖 1 概括性地展示了樣本應用程序將如何工作;為了把重點放在理解這些方法上,我們特意簡化了樣本應用程序。在本文的后面我們將會提供給用程序的細節。
  
  
圖 1. 樣本應用程序的高級視圖

  
 使用 Struts portlet 實現頁面導航(圖一)

  構建導航結構
  WebSphere Portal 提供了自己的 JSP 標記來供 portlet JSP 使用。其中的一個標記,<WPS:URLGeneration attribute="value"/>,是用于創建到門戶任何地方的頁面鏈接的。我們使用該標記中一個屬性,contentNode="idname",來創建到不同頁面的 URL,以便構建導航結構。該屬性利用一個惟一的標識符(內容節點的名稱)來指定可以從中找到該 portlet 的頁面。(關于這一標記的更多信息請參見參考資料。)
  
  在 WebSphere Portal 中選擇 Administration => Portal Settings => Custom Unique Names。我們使用 Custom Unique Names 治理 portlet 來獲取為 contentNode 屬性指定的門戶資源的惟一標識符。治理員可以使用 Custom Unique Names portlet 來查看惟一標識符并為門戶資源分配(讓人易讀的)自定義名稱。圖 2 顯示了這些已配置的樣本頁面的惟一標識符和自定義名稱:
  
  Struts_Test
  Struts_Receiver
  Struts_Receiver_2
  
  
圖 2. Custom Unique Names portlet

  
 使用 Struts portlet 實現頁面導航(圖二)

  在這個示例中,WebSphere Portal 分配給這些頁面的惟一標識符分別為 6_0_LT、6_0_P1 和 6_0_ip。(您的值可能會有所不同。)在駐留 WebSphere Portal 的另一臺機器上也創建了同樣的門戶資源 Struts_Test、Struts_Receiver 和 Struts_Receiver_2 portlet 頁面。為了閱讀和工作的方便,我們也為這些樣本頁面配置自定義名稱,并在 JSP 文件中使用這些自定義名稱(而不是惟一標記符)。
  
  在 <wps:URLGeneration attribute="value"/> portlet JSP 標記主體中,可以使用 <% wpsURL %> 腳本變量將 URL 直接寫入輸出流。在這個示例中,我們使用以下 JSP 代碼來創建從某一 JSP 頁面到 Struts Receiver 頁面的鏈接:
  
  <wps:urlGeneration contentNode="Struts_Receiver_Page">
     <A HREF="<%wpsURL.write(out);%>"style="text-decoration:none" >
     Any text</a>
  </wps:urlGeneration>
  
  <wps:URLGeneration attribute="value"/> portlet JSP 標記屬于 engine.tld 標記庫,這一標記庫是由門戶服務器引擎使用的。為了讓該門戶 JSP 標記可用于我們的 JSP 中,我們在 JSP 頁面的最開始位置添加標記庫指示 taglib。如以下代碼所示,通過前綴 wps,我們樣本中所有的 engine.tld 標記現在就都可用了:
  
  <%@ taglib uri="/WEB-INF/tld/engine.tld" prefix="wps" %>
  
  樣本頁面和 portlet 配置
  該樣本應用程序的頁面導航條包括三個 portlet(這里提供的長名稱有助于強調頁面導航流程):
  
  Overview Struts Portlet:
  顯示了兩個用于將用戶請示定向到包含電話號碼或地址信息的頁面上的鏈接,它位于 Struts_Test 頁面(自定義名稱:Struts_Test_Page),如圖 3 所示:
  
圖 3. Struts_Test 頁面中的 Overview Struts Portlet

  
 使用 Struts portlet 實現頁面導航(圖三)

  Receive Phone Numbers Request Struts Portlet:
  顯示用戶的電話號碼,位于 Struts_Receiver_2 頁面(自定義名稱:Struts_Receiver_2_Page),如圖 4 所示:
  
圖 4. Struts_Receiver_2 頁面中的 Receive Phone Numbers Request Struts Portlet

  
 使用 Struts portlet 實現頁面導航(圖四)

  Receive Address Request Struts Portlet:
  顯示用戶地址信息,位于頁面(自定義名稱:Struts_Receiver_Page),如圖 5 所示:
  
圖 5. Struts_Receiver 頁面中的 Receive Address Request Struts Portlet

  
 使用 Struts portlet 實現頁面導航(圖五)

  請記住,到目前為止所描述的全部任務均可用于常規 portlet 或 Struts portlet 開發。接下來我們將使用多 Struts 模塊中的門戶 JSP 標記來實現頁面導航。
  
  在 Struts 中使用多模塊支持
  Struts Version 1.1 可以讓我們將單個 Struts 應用程序拆分為多個模塊,每個模塊都有自己的操作、JSP 頁面和 Struts 配置文件(圖 6)。在 Struts 應用程序中實現多 Struts 模塊需要以下幾個步驟:
  
  創建獨立的 Struts 配置文件以及每個應用程序模塊的 Struts 操作和 JSPs。
  配置 Web 部署描述符(web.xml)。
  從一個模塊轉換到另一個模塊。
  
  雖然 Struts 應用程序很輕易應用,但要想在門戶環境中運行 Struts 應用程序的話,您還需要執行其他的步驟。(參見參考資料)。
  
  
圖 6. Struts 應用程序中的多模塊支持

  
 使用 Struts portlet 實現頁面導航(圖六)

  創建獨立的 Struts 模塊和文件
  對于我們的樣本應用程序,我們創建了四個 Struts 模塊,以及它們自己的 Struts 配置文件、行為和 JSPs。這些 Struts 模塊是:
  
  address
  phone-numbers
  overview
  default.
  
  我們也配置了 web.xml 和 portlet.xml 文件,并使用 default 模塊執行從一個模塊到另一個模塊的轉換。
  
  接下來,我們將會根據實現的需要講解我們的文件需要的改動。
  
  在 Struts 模塊中開發頁面導航
  我們在以下三個模塊中實現頁面導航:
  
  overview
  address
  phone-numbers.
  
  除了存在一些細微的差別以外,這些模塊中每一個的頁面導航開發任務幾乎都是相同的。因此,我們將講解實現 overview 模塊的頁面導航的任務,然后再描述一下其他模塊的實現任務與此的差別。此外,我們還會講解特定于 Struts 模塊的開發過程,該模塊是為 default 模塊而轉換的。在我們的實現中,default 模塊用于將控制權交給下一個適當的模塊;并不需要頁面導航。然而,由于它啟動其他模塊來執行模塊轉換并且是導航結構的一個主要部分,所以我們這里也將它包括在內。
  
  在 Application Developer 中,我們創建一個支持 Struts Version 1.1 的 Web 項目,然后為開發任務創建文件,如下面的表 1 所示。
  
  表 1. 開發構件列表
  
 使用 Struts portlet 實現頁面導航(圖七)

  以下是表 1 所示構件的簡要描述:
  
  JSP 文件:
  我們開發了五個 JSP 文件:
  用于 default 模塊的 index.jsp 和 failure.jsp 文件;
  用于 address 模塊的 address.jsp 文件;
  用于 phone-numbers 模塊的 phone-numbers.jsp 文件;
  用于 overview 模塊的 overview.jsp 文件。
  操作:
  我們在 com.test.strutstest.actions 包中創建四個 Struts 操作。它們的類為:
  DisplayAction
  DisplayAddressInfoAction
  DisplayPhoneInfoAction

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av免费观影| 日韩男女性生活视频| 久久视频在线直播| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品网红直播| 亚洲欧洲成视频免费观看| 精品国产自在精品国产浪潮| 亚洲第一二三四五区| 午夜精品久久久久久久99热| 日韩专区中文字幕| 一区二区三区天堂av| 欧美精品18videos性欧| 97免费视频在线播放| 国产一区二区三区中文| 国产成人激情视频| 久久亚洲综合国产精品99麻豆精品福利| 91精品中国老女人| 日韩欧美亚洲成人| 亚洲人成电影在线观看天堂色| 国产精品观看在线亚洲人成网| 中文字幕欧美国内| 国产在线观看91精品一区| 亚洲欧美自拍一区| 91精品视频大全| 欧美视频专区一二在线观看| 久久夜色精品国产| 成人午夜黄色影院| 中文字幕精品在线视频| 国产成人精品一区| 久久精品亚洲94久久精品| 国产一区二区三区在线免费观看| 一区二区三区天堂av| 在线观看国产精品91| 亚洲精品ady| 国产亚洲aⅴaaaaaa毛片| 日韩在线观看高清| 欧美成人免费全部观看天天性色| 欧美另类高清videos| 日本一区二区不卡| 国产福利精品在线| 精品国产91乱高清在线观看| 这里只有精品久久| 久久久久久久网站| 国产乱人伦真实精品视频| 91丨九色丨国产在线| 91精品国产91久久| 国产婷婷成人久久av免费高清| 欧美国产亚洲视频| 亚洲va欧美va在线观看| 亚洲午夜国产成人av电影男同| 神马久久久久久| 大量国产精品视频| 久青草国产97香蕉在线视频| 91成人国产在线观看| 欧美日韩亚洲91| 精品久久中文字幕| 日韩中文字幕不卡视频| 成人免费观看49www在线观看| 久久精品国产亚洲7777| 欧美激情视频网址| 日韩精品视频在线观看免费| 在线播放精品一区二区三区| 欧美电影免费播放| 高潮白浆女日韩av免费看| 欧美疯狂xxxx大交乱88av| 欧美大片在线免费观看| 欧美色视频日本高清在线观看| 久久6免费高清热精品| 北条麻妃在线一区二区| 日韩在线观看免费av| 亚洲国产日韩一区| 91在线高清视频| 亚洲精品中文字幕有码专区| 在线观看国产精品淫| 久久精品视频网站| 91免费福利视频| 久久成人综合视频| 欧美激情精品久久久久久免费印度| 欧美成人一区在线| 黑人巨大精品欧美一区二区| 久久97久久97精品免视看| 日韩精品高清视频| 中文字幕久热精品在线视频| 91美女片黄在线观看游戏| 欧美视频第一页| 国产97色在线|日韩| 欧美激情亚洲综合一区| 久久色在线播放| 综合136福利视频在线| 久久视频在线直播| 18一19gay欧美视频网站| 少妇高潮久久77777| 色狠狠av一区二区三区香蕉蜜桃| 97在线观看视频国产| 国语自产精品视频在免费| 国产区精品视频| 日韩中文字幕视频| 久久精品国产清自在天天线| 精品亚洲一区二区三区在线播放| 久久精品男人天堂| 欧美亚洲另类在线| 国产一区二区黑人欧美xxxx| 亚洲中国色老太| 91sao在线观看国产| 国产精品99久久久久久久久久久久| 最近日韩中文字幕中文| 亚洲黄色av网站| 欧美激情综合色综合啪啪五月| 欧美成年人在线观看| 啪一啪鲁一鲁2019在线视频| 日韩有码在线电影| 国产婷婷色综合av蜜臀av| 久久av资源网站| 夜夜躁日日躁狠狠久久88av| 国产91在线播放精品91| 久久久国产影院| 日本欧美国产在线| 在线一区二区日韩| 日韩精品中文字| 九九热精品视频在线播放| 最新国产精品拍自在线播放| 国产视频精品在线| 欧美性猛交xxxxx免费看| 国产亚洲福利一区| 91色视频在线导航| 色综合色综合久久综合频道88| 久久久久久97| 欧美专区国产专区| www.欧美三级电影.com| 国产一区二区三区在线免费观看| 欧美国产日韩免费| 成人免费视频xnxx.com| 欧美性一区二区三区| 欧美在线观看一区二区三区| 亚洲国产成人一区| 欧美黄色片在线观看| 国产精品久久久久久亚洲调教| 亚洲国产欧美自拍| 国产精品毛片a∨一区二区三区|国| 欧美国产视频日韩| 亚洲精选中文字幕| 欧美性xxxxxx| 欧美美最猛性xxxxxx| 国产精品91久久| 97人人模人人爽人人喊中文字| 精品久久久香蕉免费精品视频| 美女久久久久久久久久久| 亚洲成人激情小说| 亚洲色图第三页| 欧美视频在线看| 中文字幕一区二区三区电影| 91福利视频网| 日韩免费视频在线观看| 欧美日韩性生活视频| 日韩影视在线观看| 欧美大成色www永久网站婷| 在线成人一区二区| 国产在线视频不卡| 国产精品免费久久久久久| 亚洲欧洲av一区二区| 亚洲国产精品美女| 国产成人av网址| 一区二区三区日韩在线| 日韩美女免费线视频|