解決如下:
將:<package name="struts2" extends="struts-default" >
<action name="login" class="com.lyw.action.LoginAction">
<result name="success">/result.jsp</result>
</action>
</package>
添加 namespace="/"就好了
<package name="struts2" extends="struts-default" namespace="/" >
<action name="login" class="com.lyw.action.LoginAction">
<result name="success">/result.jsp</result>
</action>
</package>
在struts1中是沒有命名空間這個概念的,通過命名空間我們可以將所有的action配置划分為一個個邏輯單元,每個單元都有它自己的標識前綴。命名控件可以避免action命名的沖突。每個命名空間下有可以有一個叫做”help”的action,並且有着各自不同的實現,當然在同一個命名空間下最好是不要出現兩個名字一樣的action。當命名空間的前綴出現在瀏覽器的URI中時,標簽會意識到命名空間,因此我們不必將命名空間嵌套在表單和鏈接中。
默認的命名空間是空字符串””,也就是不設置namespace屬性時候的命名空間。我們在匹配一個action的時候,先到它指定的命名空間中去找,如果沒有再到這個默認的命名空間中去找。Struts2還支持根命名空間(“/”),當一個request直接請求context path下面的資源時,struts2會首先到跟命名空間下去尋找匹配的action,例如請求是http://server/myapp/bar.action,那么我們首先會去”/”命名空間下去尋找這個action.
轉載自博客園。
