1 首先用namespace进行映射(成功转入1-1,失败转入1-2)
a) 先在struts.xml中找完全匹配的package
b) 没有完全匹配的话,找缺省的package(没有配置namespace的package)
c) 没有配置缺省的package的情况下,则匹配失败-->警告: No configuration found for the specified action
1-1) namespace映射成功的话,再根据action进行映射
a) 完全匹配的话,映射成功
b) 否则,映射失败------------------>>>画面出现404错误
namespace映射成功的情况下,映射关系如下所示:(2对2映射)
JSP的form struts.xml
namespace---->>> package的namespace
action---->>>action的name
1-2) namespace映射失败的话,则用form中的action同package中的namespace+action的name进行
1对2匹配
a) 完全匹配的话,映射成功
b) 否则,映射失败------------------->>>画面出现404错误
namespace映射失败的情况下,映射关系如下所示:(1对2映射)
JSP的form struts.xml
action ---->>> package的namespace
action ---->>>action的name
配置例1:namespace完全匹配,不会出现警告信息
struts.xml:
namespace不配置的话,相当于缺省namespace
<struts>
<package name="struts2" namespace="/" extends="struts-default">
<action name="login" class="com.test.action.LoginAction">
<result name="success">/success.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
login.jsp:
<s:form action="login" namespace="/">
</s:form>
配置例2:匹配到缺省namespace,不会出现警告信息
struts.xml:
namespace不配置的话,相当于缺省namespace
<struts>
<package name="struts2"? extends="struts-default">
<action name="login" class="com.test.action.LoginAction">
<result name="success">/success.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
login.jsp:
<s:form action="login" namespace="/">
</s:form>
或者
<s:form action="login">
</s:form>
配置例3:namespace匹配失败,出现警告信息
但是能够映射上,因为通过form的action可以1对2匹配成功
struts.xml:
namespace不配置的话,相当于缺省namespace
<struts>
<package name="struts2" namespace="/mypack" extends="struts-default">
<action name="login" class="com.test.action.LoginAction">
<result name="success">/success.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
login.jsp:
<s:form action="/mypack/login">
</s:form>
配置例4:namespace匹配失败,出现警告信息
并且,因为action的1对2匹配也失败了,所以form提交后,画面会返回404错误
struts.xml:
namespace不配置的话,相当于缺省namespace
<struts>
<package name="struts2" namespace="/mypack" extends="struts-default">
<action name="login" class="com.test.action.LoginAction">
<result name="success">/success.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
login.jsp:
<s:form action="login">
</s:form>