日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Struts Gossip: 模組化程式

發(fā)布時間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts Gossip: 模組化程式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

來源:http://caterpillar.onlyfun.net/Gossip/Struts/ModuleUnit.htm

?

Struts中很多設(shè)定都是在struts-config.xml中加以設(shè)定,在大型網(wǎng)站的開發(fā)中,有很多小團(tuán)隊會負(fù)責(zé)不同的模組,如果每一個團(tuán)隊都要對struts-config.xml進(jìn)行設(shè)定,將會導(dǎo)致struts-config.xml的版本控制問題。

在Struts 1.1中,您可以為不同的模組分配不同的struts-config.xml設(shè)定檔,方法是在ActionServlet的config參數(shù)後加上後綴字,例如將使用者登入的工作切分為login模組,則可以這麼在web.xml中設(shè)定:

  • web.xml
...
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/conf/struts-config.xml
</param-value>
</init-param>
<init-param>
<param-name>config/login</param-name>
<param-value>
/WEB-INF/conf/struts-config-login.xml
</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
...


onfig/login指定了login模組所使用的設(shè)定檔struts-config-login.xml,現(xiàn)在 login模組的開發(fā)人員只要專心於自己的開發(fā)與設(shè)定檔,就如同之前的主題一般的設(shè)定,當(dāng)ActionServlet收到請求時,它是根據(jù)模組前綴來瞭解 該使用哪一個模組,例如:

http://localhost:8080/strutsapp/login/admin.do


像上面的URL,我們稱/strutsapp/login/admin.do是相對於domain的路徑,而/login/admin.do是相對於應(yīng)用程式context的路徑,而admin.do是相對於login模組。

當(dāng)ActionServlet接收請求,它判斷URL中相對於context的前綴,例如上例中的login,於是得知該使用login模組,而在每個模 組的struts-config-xxx.xml中的設(shè)定則是相對於模組路徑的,也就是說如果是struts-config- login.xml中的這樣設(shè)定:

  • struts-config-login.xml
....
<action
path="/admin"
type="onlyfun.caterpillar.AdminLoginAction"
name="adminForm">
<forward
name="adminPage"
path="/WEB-INF/pages/admin/admin.jsp"/>
....


則所有的path設(shè)定會自動被加上login前綴,例如必須使用以下的路徑才可以正確的請求到AdminLoginAction:

http://localhost:8080/strutsapp/login/admin.do


在模組中的 Action 在查找forward時,都是以所在的模組查找對應(yīng)的struts-config-xxx.xml,例如上例的AdminLoginAction運(yùn)行中查 找forward時,則會查找struts-config-login.xml中的forward,也就是說,模組中forward對象的查找預(yù)設(shè)都是相 對於模組路徑,而不是相對於context路徑。

那麼如何從目前的模組轉(zhuǎn)換到另一個模組?

當(dāng)您的應(yīng)用程式分作多個模組時,在使用者點(diǎn)選某個鏈結(jié)時,您有兩個方法可以在模組之間切換,第一個方法是使用相對於context的路徑來進(jìn)行 forward 查找,您可以在當(dāng)前的模組所使用的struts-config-xxx.xml中設(shè)定,例如在struts-config-login.xml中加入:

? ? ....
??? <global-forwards>
??????? <forward
??????????? name="switchModuleToSystem"
??????????? contextRelative="true"
??????????? path="/system/index.do"
??????????? redirect="true"/>
??? </global-forwards>
??? ....

?
這是在全區(qū)可查找的forward中的設(shè)定,在<action>標(biāo)籤中也可以像上面一樣使用<forward>標(biāo)籤,,例如:

??? ....
??? <action ... >
??????? <forward
??????????? name="switchModuleToProfile"
??????????? contextRelative="true"
??????????? path="/profile/personalInfo.do"
??????????? redirect="true"/>
??? </action>
??? ....

?

另一切換模組的方法就是使用SwitchAction,它需要在請求中帶兩個參數(shù),一個是prefix,用來指定模組前綴名稱,一個是page,用來指定相對於模組的資源路徑,例如可以這麼設(shè)定:

??? ....
??? <action-mappings>
??????? <action
??????????? path="/switchModule"
??????????? type="org.apache.struts.actions.SwitchAction "/>
??? </action-mappings>
??? ....

?

之後可以使用這樣的路徑與參數(shù)來請求profile模組的personalInfo.do:
http://yourapp/switchModlue.do?prefix=/profile&page=/personalInfo.do

總結(jié)

以上是生活随笔為你收集整理的Struts Gossip: 模組化程式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。