我遇到該異常的解釋是我不強,用Struts不是很多,或者說根本不熟練,對一些知識了解得并不深,僅僅皮毛而已,所以這個異常困擾了我一天的時間。言歸正傳。
從字面上翻譯就是“不能找到映射action”,當出現這個異常的時候,肯定是在請求某個action,而根據給定的路徑卻沒找到,所以頁面啪嚓拋出一個異常,滿滿一頁。
此時你首先要檢查的是請求的路徑是否書寫正確,與struts-config.xml中配置的路徑仔細的核對,發現完全正確。真的完全吻合么?恐怕只有后面的“/XXAction”完全相同吧!所謂的完全正確是指由根目錄到struts配置的path完全一致,如“http://localhost:8080/web/data/login.do”,你的struts配置文件中配置的可能是path="/data/login",那么你如此訪問肯定是正確的,只怕你忘記了data這個渺小的目錄的存在,遺忘請補齊。這種情況的出現往往是做項目的時候,小組都分區分模塊,每個人都有自己定義的目錄,在web.xml中配置struts,如:
<servlet>
<servlet-name>strutsAction</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config/prms/data</param-name>
<param-value>/WEB-INF/prms/struts-config-data.xml</param-value>
</init-param>
</servlet>
那么在你訪問struts資源的時候千萬不要忘記上面配置的路徑。
下面說說我遇到這個異常的原因吧!我直接訪問服務器上的資源,即xx.jsp,如果路徑寫正確,這是沒問題的,但是頁面上卻拋出了這個異常,仔細的檢查發現,頁面form的action寫著“/login.do”,頁面所在路徑與“/login.do”組合后的路徑并不是action配置的路徑,所以根本就找不到action資源,只能拋出異常。
前輩們都建議不要直接訪問服務器固定資源,如果你偏要訪問那個jsp也行,使用Struts提供的ForwardAction即可,既不會出現上面的異常,又沒有直接訪問服務器資源,兩全其美。