ForwardAction、IncludeAction、SwitchAction

转载:http://hi.baidu.com/javajavajava/blog
有的时候您只是想要从一个页面或资源转换到另一个资源,在MVC/Model 2的架构中,直接使用页面或资源的路径来叫用并不是一个好的主意,这会使得控制器没有机会处理相关的请求事宜。

您仍应该透过控制器,使用ForwardAction可以帮您完成这个事情,当控制器使用ForwardAction时perform()方法时,它会使用属性parameter所设定的路径进行forward的动作,一个设定ForwardAction的例子如下:
代码:

<action
path="/Welcome"
type="org.apache.struts.actions.ForwardAction"
parameter="/pages/Welcome.jsp"/>

同样的,有时候您会需要引入一个页面或资源,这时您可以使用IncludeAction,其设定方式与ForwardAction相同,只不过它是用include的方式来调用页面或资源:
代码:

<action
path="/SomeResource"
type="org.apache.struts.actions.IncludeAction"
parameter="/path/someServlet"/>

SwitchAction用于从一个模块转换至另一个模块,当您的应用程序分作多个模块时,您有两个方法可以在模块之间切换,第一个方法是使用相对于Context的路径来进行 forward 查找,我们之前在介绍模块化时就是使用这个方法:
代码:

<global-forwards>
<forward
name="login"
contextRelative="true"
path="/login/Login.do"
redirect="true"/>
</global-forwards>

这是在全区可查找的 forward 中的设定,在<action>卷标中也可以像上面一样使用<forward>卷标,,例如:
代码:

<action ... >
<forward
name="login"
contextRelative="true"
path="/login/Login.do"
redirect="true"/>
</action>

另一切换模块的方法就是使用SwitchAction,它需要在请求中带两个参数,一个是prefix,用来指定模块前缀名称,一个是page,用来指定相对于模块的资源路径,例如我们可以这么设定:
代码:

<action-mappings>
<action
path="/LoginSwitch"
type="org.apache.struts.actions.SwitchAction"/>
</action-mappings>

之后我们可以使用这样的路径与参数来请求login模块的Login.do:
http://localhost:8080/HelloStruts/LoginSwitch.do?prefix=/login&page=/Login.do
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值