struts2:form和Action的映射机制总结

本文详细解析了Struts2框架中Form和Action的映射过程,包括使用namespace进行映射的机制,以及在不同情况下如何进行匹配和映射,包括匹配成功与失败的场景和相应的错误提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 form和Action的映射机制:

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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值