<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java技術專區--Hilly

    http://blog.duyouyou.com
       :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理

    struts七點經驗-2(轉)

    Posted on 2006-07-20 17:25 duyouyou.com 閱讀(441) 評論(0)  編輯  收藏 所屬分類: web技術
    3. 使用應用模塊(Application Modules)

      Struts 1.1的一個新特性是應用模塊的概念。應用模塊允許將單個Struts應用劃分成幾個模塊,每個模塊有自己的Struts配置文件,JSP頁面,Action等等。這個新特性是為了解決大中型的開發隊伍抱怨最多的一個問題,即為了更好的支持并行開發允許多個配置文件而不是單個配置文件。

      注:在早期的beta版本中,該特性被稱為子應用(sub-applications),最近的改名目的是為了更多地反映它們在邏輯上的分工。

      顯然,當很多開發人員一起參加一個項目時,單個的Struts配置文件很容易引起資源沖突。應用模塊允許Struts按照功能要求進行劃分,許多情況已經證明這樣更貼近實際。例如,假設我們要開發一個典型的商店應用程序。可以將組成部分劃分成模塊比如catalog(商品目錄), customer(顧客), customer service(顧客服務), order(訂單)等。每個模塊可以分布到不同的目錄下,這樣各部分的資源很容易定位,有助于開發和部署。圖1 顯示了該應用的目錄結構。


    圖 1. 一個典型的商店應用程序的目錄結構

      注:如果你無需將項目劃分成多個模塊,Struts框架支持一個缺省的應用模塊。這就使得應用程序也可以在1.0版本下創建,具有可移植性,因為應用程序會自動作為缺省的應用模塊。

      為了使用多應用模塊功能,必須執行以下幾個準備步驟:

      · 為每個應用模塊創建獨立的Struts配置文件。

      · 配置Web 部署描述符 Web.xml文件。

      · 使用org.apache.struts.actions.SwitchAction 來實現程序在模塊之間的跳轉.

      創建獨立的Struts配置文件

      每個Struts應用模塊必須擁有自己的配置文件。允許創建自己的獨立于其他模塊的Action,ActionForm,異常處理甚至更多。

      繼續以上面的商店應用程序為例,我們可以創建以下的配置文件:一個文件名為struts-config-catalog.xml,包含catalog(商品目錄)、items(商品清單)、和其它與庫存相關的功能的配置信息;另一個文件名為struts- config-order.xml, 包含對order(訂單)和order tracking(訂單跟蹤)的設置。第三個配置文件是struts-config.xml,其中含有屬于缺省的應用模塊中的一般性的功能。

      配置Web部署描述符

      在Struts的早期版本中,我們在Web.xml中指定Struts配置文件的路徑。好在這點沒變,有助于向后兼容。但對于多個應用模塊,我們需要在Web部署描述符中增加新的配置文件的設定。

      對于缺省的應用(包括Struts的早期版本),Struts framework 在Web.xml文件中查找帶有config的元素,用于載入Action mapping 和其它的應用程序設定。作為例子,以下的XML片斷展現一個典型的元素:


      注:如果在現有的元素中找不到"config"關鍵字,Struts framework將缺省地使用/WEB/struts-config.xml

      為了支持多個應用模塊(Struts 1.1的新特性),必須增加附加的元素。與缺省的元素不同的是,附加的元素與每個應用模塊對應,必須以config/xxx的形式命名,其中字符串xxx代表該模塊唯一的名字。例如,在商店應用程序的例子中,元素可定義如下(注意粗體字部分):



      第一個 元素對應缺省的應用模塊。第二和第三個元素分別代表非缺省應用模塊catalog 和 order。

      當Struts載入應用程序時,它首先載入缺省應用模塊的配置文件。然后查找帶有字符串config/xxx 形式的附加的初始化參數。對每個附加的配置文件也進行解析并載入內存。這一步完成后,用戶就可以很隨意地用config/后面的字符串也就是名字來調用相應的應用模塊。

      多個應用模塊之間調用Action類

      在為每個應用模塊創建獨立的配置文件之后,我們就有可能需要調用不同的模塊中Action。為此必須使用Struts框架提供的SwitchAction類。Struts 會自動將應用模塊的名字添加到URL,就如Struts 自動添加應用程序的名字加到URL一樣。應用模塊是對框架的一個新的擴充,有助于進行并行的團隊開發。如果你的團隊很小那就沒必要用到這個特性,不必進行模塊化。當然,就算是只有一個模塊,系統還是一樣的運作。

      4. 把JSP放到WEB-INF后以保護JSP源代碼

      為了更好地保護你的JSP避免未經授權的訪問和窺視, 一個好辦法是將頁面文件存放在Web應用的WEB-INF目錄下。

      通常JSP開發人員會把他們的頁面文件存放在Web應用相應的子目錄下。一個典型的商店應用程序的目錄結構如圖2所示。跟catalog (商品目錄)相關的JSP被保存在catalog子目錄下。跟customer相關的JSP,跟訂單相關的JSP等都按照這種方法存放。


    圖 2.基于不同的功能 JSP 被放置在不同的目錄下

      這種方法的問題是這些頁面文件容易被偷看到源代碼,或被直接調用。某些場合下這可能不是個大問題,可是在特定情形中卻可能構成安全隱患。用戶可以繞過Struts的controller直接調用JSP同樣也是個問題。
    為了減少風險,可以把這些頁面文件移到WEB-INF 目錄下。基于Servlet的聲明,WEB-INF不作為Web應用的公共文檔樹的一部分。因此,WEB-INF 目錄下的資源不是為客戶直接服務的。我們仍然可以使用WEB-INF目錄下的JSP頁面來提供視圖給客戶,客戶卻不能直接請求訪問JSP。

      采用前面的例子,圖3顯示將JSP頁面移到WEB-INF 目錄下后的目錄結構


    圖 3. JSP存放在 WEB-INF 目錄下更為安全

      如果把這些JSP頁面文件移到WEB-INF 目錄下,在調用頁面的時候就必須把"WEB-INF"添加到URL中。例如,在一個Struts配置文件中為一個logoff action寫一個Action mapping。其中JSP的路徑必須以"WEB-INF"開頭。如下所示:請注意粗體部分.

      這個方法在任何情況下都不失為Struts實踐中的一個好方法。是唯一要注意的技巧是你必須把JSP和一個Struts action聯系起來。即使該Action只是一個很基本的很簡單JSP,也總是要調用一個Action,再由它調用JSP。

      最后要說明的是,并不是所有的容器都能支持這個特性。WebLogic早期的版本不能解釋Servlet聲明,因此無法提供支持,據報道在新版本中已經改進了。總之使用之前先檢查一下你的Servlet容器。

    Hold住
    主站蜘蛛池模板: 美女的胸又黄又www网站免费| 国产精品高清视亚洲一区二区 | 成年女人男人免费视频播放| 久久久久亚洲AV成人片| 久久永久免费人妻精品| 亚洲AV无码国产在丝袜线观看| a级毛片免费全部播放无码| 亚洲一区二区三区无码中文字幕| 一级有奶水毛片免费看| 亚洲精品无码成人片久久| 西西人体免费视频| 亚洲高清中文字幕综合网| 99爱在线精品免费观看| 亚洲日韩精品A∨片无码加勒比| 日韩免费视频网站| 色费女人18女人毛片免费视频| 亚洲人成国产精品无码| 精品视频一区二区三区免费| 亚洲精品自产拍在线观看动漫| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲AV成人无码天堂| 免费大黄网站在线观| 精品熟女少妇aⅴ免费久久| 亚洲AV无码专区在线播放中文| 69影院毛片免费观看视频在线 | va天堂va亚洲va影视中文字幕| 国内一级一级毛片a免费| 成人免费网站视频www| 亚洲第一AV网站| 免费a级毛片无码a∨蜜芽试看| 国产成人综合久久精品亚洲| 亚洲真人无码永久在线| 每天更新的免费av片在线观看| 亚洲国产成人精品无码区二本| 在线亚洲人成电影网站色www| 18禁成人网站免费观看| 羞羞视频网站免费入口| 久久丫精品国产亚洲av不卡| 日本xxwwxxww在线视频免费| 免费网站观看WWW在线观看| 亚洲 日韩 色 图网站|