struts2命名空間的問題

2021-08-28 19:32:03 字數 800 閱讀 9251

如果請求的url是/bookservice/search/get,系統將先在/bookservice/search的命名空間下查詢名為get的action,如果在該命名空間內找到名為get的action,則由該action處理使用者請求;如果在該命名空間內沒有找到名為get的action,系統將直接進入預設的命名空間中查詢名為get的action,而不會在/bookservice的命名空間或者根命名空間/下查詢。

然而,我經過許多次測試,結果都沒有和這段話吻合。終於在struts2關於命名空間的詳細討論的部落格中找到了答案:

當我們訪問乙個action的url為/a/b/c/d/echo時,系統是分兩個步驟去找action的:

找包。一層一層往上找,先找是否存在命名空間為/a/b/c/d的包,若沒有,則再往上一層找是否存在命名空間為/a/b/c的的包,若沒有,依次查詢命名空間為/a/b的包、命名空間為/a的包、根命名空間的包、預設命名空間的包。找到包即返回,若找不到,就報錯。

第二步才是按照開頭引用的那段話那樣,在第一步找到的該包下查詢名為echo的action,如果沒有找到,就直接去預設命名空間的包中查詢名為get的action。

示例:struts.xml

<?xml version="1.0" encoding="utf-8"?>

/test1.jsp

/test2.jsp

/test3.jsp

/test4.jsp

各種請求的url結果頁面:

struts2 命名空間

struts 2的命名空間是乙個新的概念,用來處理多個模組。由下式給出乙個命名空間的每個模組。此外,它還可以用來避免位於不同的模組相同的操作名稱之間的衝突。看下面的一張圖來了解乙個url匹配struts 2的動作命名空間。讓我們通過乙個struts2的命名空間配置的例子來了解它是如何與url和資料夾...

struts2中命名空間問題

最近因為乙個專案演練的需要,需要學習j2ee這一體系。採用的是struts2,發現好不順利,第一天弄struts2就半天調不過去,最後發現是自己引入包之後沒有重新部署,直接重啟伺服器造成包根本沒有被引入到webroot目錄下web inf的lib目錄中,以後要注意引入包之後不但需要重啟伺服器tomc...

struts2 之命名空間

把 namespace 單獨拉出來講一方面是因為它實際上不是乙個 element 而只是乙個 attribute 前面已經說了,它是 package 的乙個attribute 另外一方面是因為這個屬性是我接觸 struts2 的時候第乙個研究的,印象很深,鑑於這兩個原因我決定單獨說一下它。在stru...