首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts1多模块的有关问题

2012-12-16 
struts1多模块的问题struts1中有3种方法可以实现模块间跳转。?1.?使用Struts内建的SwitchAction类SwitchAct

struts1多模块的问题

struts1中有3种方法可以实现模块间跳转。

?

1.?使用Struts内建的SwitchAction类

SwitchAction类是Struts内建的最有用的Action类之一,是专门为实现页面调转而设计的。在SwitchAction类内部,自动实现了消息资源和模块前缀的转换等操作。直接使用SwitchAction类只需要在Struts配置文件中声明即可,声明使用SwitchAction类的配置片段如下。

<action-mappings>

???<action

path="/toModule"

type="org.apache.struts.actions.SwitchAction"/>

</action-mappings>

其中path="/toModule"指明了该Action类的访问路径。如果要从当前模块跳转到另一模块moduleB,则该链接的形式为:

http://localhost:8080/xxx/toModule.do?prefix=/moduleB&page=/index.do

如果要调转到的模块是默认模块,默认模块的模块前缀是空串,链接的形式为:

http://localhost:8080/xxx/toModule.do?prefix=&page=/index.do

2.?使用转发

可以在全局或局部转发中显式地将转发配置为跨模块的转发。配置全局转发为跨模块转发的示例代码如下:

<global-forwards>

???<forward

name="toModuleB"

contextRelative="true

path="/moduleB/index.do"

redirect="true"/>

……

</global-forwards>

其中contextRelative属性设为true时表示当前path属性以/开头时,给出的是相对于当前上下文的URL。

?

也可以把局部转发配置为跨模块转发

<action-mappings>

??<action ... >

??????<forward?name="success"?contextRelative="true"?path="/moduleB/index.do"?redirect="true"/>

??</action>

???……

</action-mappings>

?

3. 使用<html:link>标记

<html:link>是Struts自定义标记,对超链接的行为进行了定制和封装。利用<html:link>标记可以直接将超链接声明为跨模块的跳转,使用方法为:

<html:linkmodule="/moduleB" path="/index.do"/>

/*** Return the form action converted into a server-relative URL.*/public static String getActionMappingURL(String action, PageContext pageContext) {HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();StringBuffer value = new StringBuffer(request.getContextPath());ModuleConfig config =(ModuleConfig) pageContext.getRequest().getAttribute(Globals.MODULE_KEY);if (config != null) {value.append(config.getPrefix());}.....................return (value.toString());}?
此处的Globals.MODULE_KEY是ActionServlet处理request请求时,根据servletContext取得的prefix放进去的ModuleConfig。
所以,如果prefix为""的话(即struts默认的模块),只能从当前默认的ModuleConfig中查询action的路径

?

?

?

热点排行