struts2中命名空間問題

2021-08-25 15:27:05 字數 1126 閱讀 3245

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

今天又遇到乙個問題,在學習struts2的命名空間時一直報錯訪問不到,現在終於理解了,把自己遇到的問題總結一下:

1.在配置struts.xml檔案的package節的namespace屬性時,必須新增「/」,今天就因為沒有加這個,半天找不到,必須以斜線開頭。

2.預設名字空間。如果你在配置package節的時候沒有namespace屬性,那就是使用預設的命名空間,預設名字空間在我的理解就是,你可以直接訪問你的action,不管你的testaction前面有多少層包,你都可以通過http://localhost:8080/webdemo/test.action訪問(webdemo為**名稱)。這裡有乙個很有趣的現象就是,訪問預設名字空間的內容的url可以是任意的,比如訪問上述的test.action,你可以在webdemo和test.action之間加入任何東西,如:http://localhost:8080/webdemo/abc/egeag/sagjiea/test.action。原因在於他會在「/abc/egeag/sagjiea」這個名字空間下尋找test.action,如果沒有找到,他會在所有預設的名字空間的包中尋找,也就是說他會在所有的沒有namespace屬性的package當中尋找,因而無論你加什麼限定,他都會找到!!!感覺很神奇。

3.加入名字空間之後的訪問時需要加上名字空間的限定名,如果package內的namespace的屬性是"/test"那麼訪問需要這樣來寫http://localhost:8080/webdemo/test/test.action。

4.對於控制台列印出的資訊需要好好檢查一下,今天就因為沒有注意出錯資訊,訪問半天訪問不到,最後發現報錯的地方是沒有找到struts2-default父包,原來是我在extends屬性寫的是struts2-default不是struts-default,粗心之極,剛接觸就鬧出這麼多麻煩。

5.我的理解是名字空間就是乙個解決位址衝突的方法,你可以通過namespace方式來解決這個衝突。

個人筆記,有錯誤希望指出。

struts2 命名空間

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

struts2命名空間的問題

如果請求的url是 bookservice search get,系統將先在 bookservice search的命名空間下查詢名為get的action,如果在該命名空間內找到名為get的action,則由該action處理使用者請求 如果在該命名空間內沒有找到名為get的action,系統將直接...

struts2 之命名空間

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