Shao Fan

          關于JAVA與軟件工程
          posts - 31, comments - 71, trackbacks - 0, articles - 4
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Cannot find action mapping??

          Posted on 2006-03-01 10:44 shaofan 閱讀(2058) 評論(5)  編輯  收藏 所屬分類: Java

                  今天試著把大蝦寫的系統(tǒng)登錄模塊加到我們現(xiàn)有的模塊里來,他寫的時候因為有些試驗的成分,所以沒有按照我們項目的配置來寫,也沒有按照我們的模塊來劃分配置,加過來以后重新配置了模塊信息,結果居然無法正常運行。顯示錯誤:“cannot retrieve action mapping  。廢了九牛二虎之力,都無法解決。web.xml、struts-config、模塊配置,一切看起來都無比的正常,但就是運行不了。真搞不清楚是哪里出了問題。還以為搞不定,晚上要加班了,誰知道,踏破鐵鞋無覓處,柳暗花明又一村,在google上搜索關鍵字"action mapping 找不到",第一個鏈接居然就是問題的答案!(還從來沒有只點一次就可以找到問題答案的經(jīng)驗,所以興奮無比^O^)

                  總的來說,問題的原因就在于,struts是在第一次收到對action的請求(注意:不包括jsp的請求)時,提取這個請求的url的路徑信息,把相應模塊的mapping信息設置到請求中去。如果在進入一個模塊時,第一次訪問的是一個jsp頁面,而在這個jsp頁面中提交到該模塊的一個action,就會出現(xiàn)找不到action mapping的情況。這就是因為,在進到這個模塊時,訪問的是jsp,這個模塊的任何一個action都沒有被訪問到,所以struts的ActionServlet還沒有來得及把這個模塊的mapping設置到請求中,自然找不到該模塊的action。

                  因此,這就引出一個約定,就是系統(tǒng)中盡量避免對Jsp的直接訪問,如果要訪問也要通過action來forward。雖然看起來麻煩一點,但是安全性、健壯性都會有所提高。

                  關于以上提到的模塊mapping的設置原理,具體的文章在這里(不長),值得收藏:

                  原文鏈接:http://202.100.72.44/news/itschool/pro/pro44134.htm


          評論

          # re: Cannot find action mapping??  回復  更多評論   

          2006-05-24 08:47 by swads
          具體怎么解決啊?

          # re: Cannot find action mapping??  回復  更多評論   

          2006-05-24 17:50 by shaofan
          @swads
          解決方法就是,第一次訪問一個模塊時,要通過.do而不是JSP來訪問,以使它的模塊配置被加載進來。

          # re: Cannot find action mapping??  回復  更多評論   

          2006-07-23 09:30 by Hanson Hsu
          但是我通過.do去訪問還是存在這個問題。可能是structs的BUG吧

          # re: Cannot find action mapping??  回復  更多評論   

          2006-12-26 10:38 by OK
          測過,用.do 訪問可行,謝謝樓主

          # re: Cannot find action mapping??  回復  更多評論   

          2008-05-15 11:36 by Mikey
          在你處理的Action文件中加入一個方法
          public ActionForward index(ActionMapping mapping, ActionForm form,
          HttpServletRequest request, HttpServletResponse response)
          throws ServletException {
          return mapping.findForward("welcome");
          }
          然后在sturts-config.xml或多模塊配置文件中的action設置中加入一個forward屬性到你的第一個頁面
          主站蜘蛛池模板: 夏河县| 泾阳县| 电白县| 加查县| 鄂托克旗| 贵溪市| 南城县| 寻乌县| 濮阳市| 漳平市| 望奎县| 吉木萨尔县| 汤原县| 牙克石市| 台州市| 九龙城区| 许昌市| 奈曼旗| 涡阳县| 镇坪县| 大安市| 米易县| 天峻县| 专栏| 连州市| 区。| 津南区| 政和县| 嘉善县| 分宜县| 保亭| 永年县| 永吉县| 香河县| 广平县| 特克斯县| 平凉市| 和田县| 望城县| 龙江县| 凤山县|