Struts--ActionMapping作用介绍

Struts--ActionMapping作用介绍


标签:

杂谈

 
 
在Struts1.1之后,很多的请求分配职责都落入了RequestProcessor的手上,ActionServlet则专责于组态配置及应用程序模块的设定。
RequestProcessor 采取 Command模式,根据客户端的请求呼叫Action对象,其分配的依据是客户端请求的URI及Action对象的对应,这些都设定在struts-config.xml的标签中。
用来描述一组ActionMapping对象,当中的每一个标签都对应一个ActionMapping对象,当客户端发出请求至RequestProcessor时,请求的URI对应于<action>卷标中设定的path属性,而要呼叫的Action对象则是type属性所设定的对象,RequestProcessor会将请求的执行工作交给该Action对象来执行。
举个例子来说,如果设定如下的话:
...

path="/hello"
type="onlyfun.caterpillar.HelloAction"> ....


path="/login"
type="onlyfun.caterpillar.LoginAction"> ....
...

则当请求的URL是http://localhost:8080/strutsapp/hello.do时,RequestProcessor会使用/hello.do来确认对应的ActionMapping对象(实际上即找出path设定为/hello的卷标),该ActionMapping对象告知RequestProcessor要使用onlyfun.caterpillar.HelloAction,而后RequestProcessor会将呼叫HelloAction的execute()方法,并将ActionMapping对象当作参数传递给它。
RequestProcessor实际上将工作交给Action对象,Action对象在第一次被呼叫时产生,之后一直使用它。Action对象的运作必须提供一些参数来描述工作的细节,诸如使用哪一个ActionForm、forward对象的查找、错误发生时的页面对象等等,Struts将这些信息包装在ActionMapping中,并作为参数传送给Action对象,以使得Action在需要相关的信息时可以从ActionMapping中取得。
如果客户端请求了struts-config.xml中没有定义的资源,Struts会丢出 404Invalid path的讯息,您可以撰写匿名的ActionMapping来提供自己的错误讯息:
...
name="error"
unknown="true"
forward="/WEB-INF/pages/error.jsp"/> ...

如果RequestProcessor遇到没有定义的Action请求,则会交由匿名的ActionMapping来处理。
在<action>卷标中会使用卷标,用于查找与指定Action对象完成之后,要转发请求响应的去向,您使用ActionMapping的findForward()方法来查找对应的forward对象,另外,您也可以提供一个<global-forward>设定,如果ActionMapping的findForward()方法找不到指定的forward对象,则会查找所设定的对象,一个设定例子如下:
struts-config.xml
---------------------------------------------------------------------------------------------
...



name="welcome"
path="/welcome.do"/>


path="/welcome
type="onlyfun.caterpillar.WelcomeAction">
name="welcomeUser"
path="/WEB-INF/pages/welcome.jsp"/>


path="/hello"
type="onlyfun.caterpillar.HelloAction">

name="helloUser"
path="/WEB-INF/pages/hello.jsp"/>
...
--------------------------------------------------------------------------------------------
<global-forward>提供一个全局可查找的forward对象,在Struts的组态中,可以为每一个<action>卷标指定forward对象,如果在中查找不到,就会至中查找。对于一些共同使用的forward对象,您可以集中于中管理。
在Struts中,ActionMapping继承自ActionConfig,大部份的属性定义实际上都已经在ActionConfig中完成,在将来ActionMapping有可能会被AutoConfig所取代,不过在目前ActionMapping仍旧存在,根据在线API的说明,存在的事实基于它仍是现存应用程序所使用到的类别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值