配置Struts应用使用多个struts-config.xml文件

本文介绍如何在Struts应用中配置使用多个struts-config.xml文件,以实现模块化的项目结构。内容涉及submodule目录下静态资源的组织,如js、css和图片等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[转自http://minifishpingping.spaces.live.com/blog/cns!167be6972d4b3ac!159.entry]

配置Struts应用使用多个struts-config.xml文件
参照struts的例子strutsexample在自己的web应用中实现了使用多个struts-config.xml文件,赶紧总结一下,小鱼记性不好,怕忘。
 
小鱼得意尽须欢呀。:)不过,可能早就N多人会用了。
 
1、首先介绍一下在web应用中使用单个struts-config.xml文件:
我的web应用名字为MyWebProj
MyWebProj/WEB-INF/下有文件:
struts-config.xml
struts-bean.tld
struts-html.tld
struts-logic.tld
struts-nested.tld
struts-template.tld
struts-tiles.tld
ainx-slot.tld   这是我的自定义标签文件
 
2、下面介绍使用多个struts-config.xml文件的配置方法:
在一个team中开发struts的web应用时,可能每个人做的模块不同,但都有相同的web根路径,这时候针对个不同的模块配置struts-config.xml文件和各自模块定义的tld文件是十分有用的。
 
1)、在MyWebProj/WEB-INF/目录下新建目录,命名为submodule,即子模块的名字
新建目录tld,可以专门存放该模块自定义的tld文件
 
在submodule目录下新建struts-config.xml文件
将ainx-slot.tld文件拷至tld目录下
其余的tld文件都是struts标准的tld文件,可以保留不动,因为各个模块都会用到标准的tld文件。
 
2)、修改MyWebProj应用的web.xml文件,这里要完成两个工作:第一,配置多个struts-config.xml文件,第二,配置各个模块自己的tld文件
 
首先,配置多个struts-config.xml文件:
在web.xml文件中找到如下代码:
  <init-param>
   <param-name>config</param-name>
   <param-value>/WEB-INF/struts-config.xml</param-value>
  </init-param>
这里的struts-config.xml即MyWebProj/WEB-INF/下的struts-config.xml文件,各个模块公用
 
紧接着这段代码下面继续输入如下代码:
  <init-param>
   <param-name>config/submodule</param-name>
   <param-value>/WEB-INF/submodule/struts-config.xml</param-value>
  </init-param>
这里的struts-config.xml即submodule模块自己用的
该struts-config.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
<struts-config>
 <!-- ========== Form Bean Definitions =================================== -->
 <form-beans>
  <form-bean name="modulePropertyForm" type="com.asiainfo.ainx.advancedres.action.ModulePropertyForm" />
 </form-beans>
 <!-- ========== Action Mapping Definitions ============================== -->
 <action-mappings>
  <action type="com.asiainfo.ainx.advancedres.action.LeftTreeAction" scope="request" path="/leftTree">
   <forward name="showTree" path="/jsps/LeftTree.jsp" />
  </action>
  <action type="com.asiainfo.ainx.advancedres.action.QueryNodesAction" scope="request" path="/queryResnodes">
   <forward name="showResnode" path="/jsps/ResnodesQuery.jsp" />
  </action>
  <action name="modulePropertyForm" type="com.asiainfo.ainx.advancedres.action.ModulePropertyAction" scope="request" path="/showProperty">
   <forward name="showPropertys" path="/jsps/ModuleProperty.jsp" />
  </action>
 </action-mappings>
</struts-config>
其次,配置各个模块自己的tld文件:
在web.xml文件中找到如下代码:
<servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
 </servlet-mapping>
 
紧跟这段代码输入如下代码:
<taglib>
  <taglib-uri>/tags/ainx-slot</taglib-uri>
  <taglib-location>/WEB-INF/tld/ainx-slot.tld</taglib-location>
 </taglib>
这里ainx-slot.tld即刚才从WEB-INF目录下拷至WEB-INF/tld目录下的文件。
 
最后,转到web.xml文件的最开头部分,
将"<web-app>"前面的代码用下面的替换:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE web-app  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"  " http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
 我也不知道为啥要用这个,反正是用eclipse原来自动生成的代码时,在我添加了<taglib>……</taglib>后,总是报一个error,说是包含了不认识的标签。我就照strutsexample的web.xml文件改成这样,就OK了。我是不是有点不求甚解?惭愧ing
OK,web.xml文件配置完成:)
 
3)、在MyWebProj目录下新建submodule目录,即子模块,这个目录下存放该模块自己的jsp、js、css、img等文件及目录。
我的结构是这样的:
MyWebProj/submodule/jsps/*.jsp

MyWebProj/submodule/js/*.js 

MyWebProj/submodule/css/*.css

MyWebProj/submodule/img/*.jpg,*.gif,*.bmp……

3)、修改MyWebProj/submodule目录下的jsp页面
原来页面中是这样引用tld文件的:
<%@ taglib uri="/WEB-INF/ainx-slot.tld" prefix="dtree" %>    以前是直接按照路径引用的
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="dtree" %> 
  ……
 
现在改成这样:
<%@ taglib uri="/tags/ainx-slot" prefix="dtree" %>   现在web.xml文件中已经做了配置,见前面的web.xml文件中蓝色部分代码
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="dtree" %>   其余各个模块公用的tld文件引用方式不变
……
 
4)、修改.do调用地方的代码:
原来是这样调用的:…… href = "/NetXpert/leftTree.do"
现在由于web.xml文件中已经配置了另一个struts-config.xml文件(见前面web.xml文件中的红色部分的代码),则做如下修改:
href="/NetXpert/ submodule/leftTree.do"    即调用的时候指定到该子模块下
 
大功告成,小歇一下了 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值