ActionMapping

Struts中,ActionServlet只是任务的分派者,它依请求分配任务给其它的对象来执行,而分配的依据是请求的URI以及struts-config.xml<action-mappings>卷标所设定的内容。

<action-mappings>
用来描述一组ActionMapping对象,当中的每一个<action>卷标都对应一个ActionMapping对象,当客户端发出请求至ActionServlet时,ActionServlet根据其URI<action>卷标设定的path属性查看对应的ActionMapping对象,ActionMapping对象会告诉ActionServlet该使用哪一个Action对象(在<action>卷标中使用type属性设定),而ActionServlet再将工作交给该Action对象来执行。

举个例子来说,如果<action-mappings>设定如下:

代码:

<action-mappings>
    <action
        path="Login"
        type="onlyfun.caterpillar.LoginAction">
        ....
    </action>

    <action
        path="Logout"
        type="onlyfun.caterpillar.LogoutAction">
        ....
    </action>
</action-mappings>



则当请求的URLhttp://localhost:8080/HelloStruts/Login.doActionServlet会使用/Login来找出path设定为LoginActionMapping对象,该ActionMapping对象告知ActionServlet要使用onlyfun.caterpillar.LoginAction,而后ActionServlet会将呼叫LoginActionexecute()方法,并将ActionMapping对象当作参数传递给它。

ActionServlet
实际上将工作交给Action对象,然而Action对象的运作必须提供一些参数来描述工作的细节,诸如使用哪一个ActionFormforward对象的查找、错误发生时的页面对象等等,Struts将这些信息包装在ActionMapping中,并作为参数传送给Action对象,以使得Action在需要相关的信息时可以从ActionMapping中取得。

对于没有定义的ActionMapping,如果客户端请求了怎么办?Struts会丢出 404 Invalid path 的讯息,您可以撰写匿名的ActionMapping来提供自己的错误讯息:

则当请求的 URL http://localhost:8080/HelloStruts/Login.do ActionServlet 会使用 /Login 来找出 path 设定为 Login ActionMapping 对象,该 ActionMapping 对象告知 ActionServlet 要使用 onlyfun.caterpillar.LoginAction ,而后 ActionServlet 会将呼叫 LoginAction execute() 方法,并将 ActionMapping 对象当作参数传递给它。

ActionServlet
实际上将工作交给 Action 对象,然而 Action 对象的运作必须提供一些参数来描述工作的细节,诸如使用哪一个 ActionForm forward 对象的查找、错误发生时的页面对象等等, Struts 将这些信息包装在 ActionMapping 中,并作为参数传送给 Action 对象,以使得 Action 在需要相关的信息时可以从 ActionMapping 中取得。

对于没有定义的 ActionMapping ,如果客户端请求了怎么办? Struts 会丢出 404 Invalid path 的讯息,您可以撰写匿名的 ActionMapping 来提供自己的错误讯息:

代码:

<action>
    name="error"
    unknown="true"
    forward="/pages/error.jsp"/>



如果 ActionServlet 收到的没有定义的 Action 请求,则会交由匿名的 ActionMapping 来处理。

Struts 中, ActionMapping 继承自 ActionConfig ,大部份的属性定义实际上都已经在 ActionConfig 中完成,不过 ActionMapping 仍旧存在,根据线上 API 的说明,继承存在的事实基于它仍是现存应用程序所使用的公用类别
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值