Struts多模块应用的配置

 建立一个简单的多模块应用"Moduler"
目录:
Moduler
    
-index.jsp
    
-module1
        
-index.jsp
    
-module2
        
-index.jsp
    
-WEB-INF
        
-struts-*.tld
        
-struts-config.xml
        
-web.xml
        
-lib
            
-*.jar
        
-module1
            
-struts-config.xml
        
-module2
            
-struts-config.xml
        
-classes
            
-your_package

web-inf下面的struts-config.xml是struts应用默认配置
对子模块的配置文件可以放在任意的位置,为了让Tomcat能够找到它们的位置,你需要在web.xml中配置
<!-- module configurations -->
<init-param>
<param-name>config/module1</param-name>
<param-value>/WEB-INF/module1/struts-config.xml</param-value>
</init-param>

<init-param>
<param-name>config/module2</param-name>
<param-value>/WEB-INF/module2/struts-config.xml</param-value>
</init-param>

在应用的根目录下面分别建立子模块的目录:<WebRoot>/module1 <WebRoot>/module2。里面放置子模块自己的jsp,html和图片等资源。

这里需要注意,在配置web.xml时指定的"config/module1"就已经隐含的指定子模块的名字分别是module1,module2
所以,子模块的目录叫起名叫"module1"和"module2"

三个模块的struts配置:
默认模块(WEB-INF/struts-config.xml)
<action-mappings>
<action path="/welcome" forward="/index.jsp"></action>
</action-mappings>

子模块1(WEB-INF/module1/struts-config.xml)
<action-mappings>
<action path="/welcome" forward="/index.jsp"></action>
</action-mappings>

子模块2(WEB-INF/module2/struts-config.xml)
<action-mappings>
<action path="/welcome" forward="/index.jsp"></action>
</action-mappings>

三个模块之间的跳转:
默认模块(index.jsp)
<html:link module="/module1" action="/welcome">转到子模块1的主页面</html:link>
<html:link module="/module2" action="/welcome">转到子模块2的主页面</html:link>

子模块1(module1/index.jsp)
<html:link action="../welcome">转到主页面</html:link>
<html:link module="/module2" action="/welcome">转到子模块2的主页面</html:link>

子模块2(module2/index.jsp)
<html:link action="../welcome">转到主页面</html:link>
<html:link module="/module1" action="/welcome">转到子模块1的主页面</html:link>

模块之间的跳转还可以通过配置struts-config.xml中的<forward>元素,具体方法可以参照struts-documentation的说明。

多模块开发示例:(Eclipse3.2+MyEclipse5.0)
1.新建一个Web Project
2.添加Struts 1.2 支持
3.在根目录(WebRoot)下新建index.jsp页面
4.在WebRoot目录下新建一个模块目录“ModuleA”。
5.新建一个struts 1.2 module,名为“ModuleA”。
6.测试直接链接到其他模块的jsp页面(注意不能直接链接到其他模块的与Action、ActionForm相关联的页面):

在根目录的index.jsp页面中添加如下代码:

<html:link module="/ModuleA" page="/index.jsp">1.链接到其他模块(ModuleA)直接链接到页面</html:link><br>适用于没有和Action,ActionForm关联的纯JSP页面<br><p>

在ModuleA目录下新建index.jsp页面,完成后测试成功。

7.测试直接链接到其他模块的jsp页面(直接链接到其他模块的与Action、ActionForm相关联的页面,应该不能成功):
首先配置struts-config-ModuleA.xml文件:
新建一个Form、Action and JSP,用例中填写user,添加两个属性:name,password。
在JSP选项卡中填写“/ModuleA/login.jsp”,点击下一步,在Path中填写“/login”,在forward选项卡中添加一个forward,name为“OK”,Path为“/welcome.jsp”,点击完成。
在ModuleA目录下新建wellcome.jsp文件,在源码中加入如下代码:
<bean:write name=”userForm” property=”name” />.在UserAction.java源码中填写如下代码:return mapping.findForward(“OK”)。
在根目录下的index.jsp源码中添加如下代码:
<html:link module="/ModuleA" page="/login.jsp">2.链接到其他模块(ModuleA)试图连接到和Action,ActionForm关联的页面</html:link><br>不能直接这样链接,会报Cannot retrieve mapping for action /xxx异常,因为此时还是检查struts-config.xml<br><p>
测试后果然异常。
正确做法如下:
在struts-config-ModuleA.xml文件中添加一个Action,在用例中填写“toLoginPage”,在forward选项卡中添加一个forward,name为“toLoginPage”,Path为“/login.jsp”。
修改ToLoginPage.java的源码为:return mapping.findForward(“toLoginPage”);。
在根目录下的index.jsp源码中添加如下代码:
<html:link module="/ModuleA" page="/toLoginPage.do">3.链接到其他模块(ModuleA)的xxxx.do,连接到和Action,ActionForm关联的页面</html:link><br>正确做法,是对2链接形式的更正,应该链接到ModuleA的一个Action,由该Action的forward转发到login.jsp页面<br><p>
经测试成功。

8.测试跨模块表单提交(从主模块提交表单到ModuleA模块):
在struts-config.xml(主模块)中新建Form、Action and JSP,用例中输入“reg”,增加两个属性:sex、age,点击下一步,在Path中填写“/userReg”,Action Impl中选择Use existing Action class,使用SwitchAction,直接finish掉。添加根目录下的indexs.jsp文件源码如下:

4.提交表单到其他模块:<br>
<html:form action="/userReg?prefix=/ModuleA&page=/regOK.jsp">
sex : <html:text property="sex"/><html:errors property="sex"/><br/>
age : <html:text property="age"/><html:errors property="age"/><br/>
<html:submit/><html:cancel/>
</html:form><br><p>。

在ModuleA文件夹下新建regOK.jsp文件,在regOK.jsp文件源码中写入如下语句:
regOK,your sex is:<bean:write name="regForm" property="sex"/> age is:<bean:write name="regForm" property="age"/>
经测试成功。

9.测试跨模块表单提交(从ModuleA模块提交表单到ModuleB模块):
新建struts1.2模块,叫“ModuleB”,在WebRoot目录下新建文件夹“ModuleB”,配置struts-config-ModuleB.xml文件:
新建Form、Action and JSP,在用例中输入“employee”,增加两个属性:empName、depName,在JSP选项卡中填写“/ModuleA/empInfo.jsp”,点击下一步,Path中填写“/employee”,在Action Impl中选择Use existing Action class,使用SwitchAction,直接finish掉。
修改empInfo.jsp文件源码:<html:form action="/employee?prefix=/ModuleB&page=/showEmp.jsp">…。
在ModuleB文件夹中新建showEmp.jsp文件,修改showemp.jsp源码为:<bean:write name="employeeForm" property="empName"/>。
在struts-config-ModuleA.xml文件中,增加一个Action,在用例中输入“empInfo”,增加一个forward,name为“/empInfo.jsp”。在根目录下的index.jsp文件中增加如下内容:
5.提交表单到其他模块(子模块到子模块):<br>
<html:link module="/ModuleA" page="/empInfo.do">链接到模块(ModuleB)的empInfo.do</html:link><br>链接到ModuleA的一个Action,由该Action的forward转发到empInfo.jsp页面<br><p>
最后修改EmpInfoAction.java源码:return mapping.findForward("empOK");
经测试成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值