在Struts 1.0中,我们只能在web.xml中为ActionServlet指定一个配置文件,这对于我们这些网上的教学例子来说当然没什么问题,但是在实际的应用开发过程中,可能会有些麻烦。因为许多开发人员都可能同时需要修改配置文件,但是配置文件只能同时被一个人修改,这样肯定会造成一定程度上的资源争夺,势必会影响开发效率和引起开发人员的抱怨。
在Struts 1.1中,为了解决这个并行开发的问题,提出了两种解决方案:
- 多个配置文件的支持
- 模块的支持
支持多个配置文件,是指你能够为ActionServlet同时指定多个xml配置文件,文件之间以逗号分隔,比如Struts提供的MailReader演示例子中就采用该种方法。
/WEB-INF/struts-config-registration.xml
这种方法可以很好地解决修改冲突的问题,不同的开发人员可以在不同的配置文件中设置自己的Action、ActionForm等等(当然不是说每个开发人员都需要自己的配置文件,可以按照系统的功能模块进行划分)。但是,这里还是存在一个潜在的问题,就是可能不同的配置文件之间会产生冲突,因为在ActionServlet初始化的时候这几个文件最终还是需要合并到一起的。比如,在struts-config.xml中配置了一个名为success的
为了彻底解决这种冲突,Struts 1.1中引进了模块(Module)的概念。一个模块就是一个独立的子系统,你可以在其中进行任意所需的配置,同时又不必担心和其它的配置文件产生冲突。因为前面我们讲过,ActionServlet是将不同的模块信息保存在不同的ModuleConfig对象中的。要使用模块的功能,需要进行以下的准备工作:
1、为每个模块准备一个配置文件
2、配置web.xml文件,通知控制器
3、准备各个模块所需的ActionForm、Action和JSP等资源
决定采用多个模块以后,你需要将这些信息告诉控制器,这需要在web.xml文件进行配置。下面是一个典型的多模块配置:
要配置多个模块,你需要在原有的一个
但是要注意的是,模块的出现也同时带来了一个问题,即如何在不同模块间进行转发?有两种方法可以实现模块间的转发,一种就是在
下面就是一个全局的例子:
可以看出,只需要在原有的path属性前加上模块名,同时将contextRelative属性置为true即可。此外,你也可以在
如果你已经处在其他模块,需要转回到缺省模块,那应该类似下面这样定义,即模块名为空。
此外,你也可以使用org.apache.struts.actions.SwitchAction,例如:
参考文章:
http://www.ibm.com/developerworks/cn/java/l-struts1-1/
http://www.blogjava.net/SteelHand/archive/2005/05/13/4247.html
虽然<html:text>标签会被翻译成HTML中的<text>标签,但它们的属性并非一一对应的关系。
简单总结了一下<html:text>常用的几个属性:
1、 property
对应到<text>标签的name属性,同时要与ActionForm子类中的字段对应。
2、 name
不与<text>标签的任何属性对应。仅对应存在于request或者session范围内的ActionForm的名字,然后会将<html:text>标签的默认值设置为property指定的属性的值。
3、 styleId
对应到<text>标签的ID属性。
4、 size
对应到<text>标签的size属性。
5、 maxlength
对应到<text>标签的maxlength属性。
6、 styleClass
对应到<text>标签的class属性,用来设置文本框的样式。
举个例子:
<html:text property=”phoneNo” styleId=”phoneNo” maxlength=”11″ size=”11″ styleClass=”input-write”></html:text>
会被翻译成如下形式:
<input type=”text” name=”phoneNo” maxlength=”11″ size=”11″ value=”” class=”input-write” id=”phoneNo”>
参考链接:http://struts.apache.org/1.1/userGuide/struts-html.html#text
谁能想象一个未出校门的女学生,能有拥趸无数?
Gia做到了。她是豆瓣网“我们爱讲冷笑话”小组的组长。小组成立两年来,已经拥有组员49998人,成为豆瓣网最火的小组之一。有人称Gia是“文化圈里的小明星”。
互联网上出现了越来越多像Gia一样的人。他们认真经营着自己的小组、博客、论坛,和一批志同道合的朋友一起在网络上开辟一片属于自己的天地。 More …
在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement. More …
JDBC
Java Database Connectivity (JDBC)是一个标准的Java API,它由一组类和接口组成,Java应用程序开发人员使用它来访问数据库和执行SQL语句。WebLogic JDBC是JDBC规范的企业级实现,它为标准的JDBC API提供了大量的扩展 More …
Eclipse本身自带的导出功能异常丰富,可以导出JAR、WAR、EAR、ZIP、 TAR等各种类型的包文件,以下一篇文章介绍了如何导出JAR,导出其他类型的包文件则类似,可以自行参考。 More …
作为一名好的程序员,重视细节是一个必须要具备的优点。粗枝大叶的人很难成为一名好的程序员,至于好的架构师就更不要指望了。好的架构师来自于好的程序员,认为自己可以不经过多年程序员的严格考验就成为一名合格的架构师,那是癞蛤蟆想吃天鹅肉。 More …