`
young_choi
  • 浏览: 7954 次
  • 性别: Icon_minigender_1
  • 来自: 福建
最近访客 更多访客>>
社区版块
存档分类
最新评论

分离Struts配置文件

阅读更多

    Struts1支持多个配置文件,你能够为ActionServlet同时指定多个xml配置文件,文件之间以逗号分隔

<servlet>
	<servlet-name>action</servlet-name>
	<servlet-class>
		org.apache.struts.action.ActionServlet
	</servlet-class>
	<init-param>
		<param-name>config</param-name>
		<param-value>
			/WEB-INF/struts-config.xml,
			/WEB-INF/struts-config-registration.xml
		</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>

    这种方法可以很好地解决修改冲突的问题,不同的开发人员可以在不同的配置文件中设置自己的Action、ActionForm等等(当然不是说每个开发人员都需要自己的配置文件,可以按照系统的功能模块进行划分)。但是,这里还是存在一个潜在的问题,就是可能不同的配置文件之间会产生冲突,因为在ActionServlet初始化的时候这几个文件最终还是需要合并到一起的。比如,在struts-config.xml中配置了一个名为success的<forward>,而在struts-config-registration.xml中也配置了一个同样的<forward>,那么执行起来就会产生冲突。

为了彻底解决这种冲突,Struts 1.1中引进了模块(Module)的概念。一个模块就是一个独立的子系统,你可以在其中进行任意所需的配置,同时又不必担心和其它的配置文件产生冲突。因为前面我们讲过,ActionServlet是将不同的模块信息保存在不同的ModuleConfig对象中的。要使用模块的功能,需要进行以下的准备工作:

 

1、为每个模块准备一个配置文件

 

2、配置web.xml文件,通知控制器

决定采用多个模块以后,你需要将这些信息告诉控制器,这需要在web.xml文件进行配置。下面是一个典型的多模块配置:

<servlet>
	<servlet-name>action</servlet-name>
	<servlet-class>
		org.apache.struts.action.ActionServlet
	</servlet-class>
	<init-param>
		<param-name>config</param-name>
		<param-value>/WEB-INF/struts-config.xml</param-value>
	</init-param>
	<init-param>
		<param-name>config/customer</param-name>
		<param-value>
			/WEB-INF/struts-config-customer.xml
		</param-value>
	</init-param>
	<init-param>
		<param-name>config/order</param-name>
		<param-value>/WEB-INF/struts-config-order.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>

    要配置多个模块,你需要在原有的一个<init-param>(在Struts 1.1中将其对应的模块称为缺省模块)的基础之上,增加模块对应的<init-param>。其中<param-name>表示为config/XXX的形式,其中XXX为对应的模块名,<param-value>中还是指定模块对应的配置文件。上面这个例子说明该应用有三个模块,分别是缺省模块、customer和order,它们分别对应不同的配置文件。

 

3、准备各个模块所需的ActionForm、Action和JSP等资源

但是要注意的是,模块的出现也同时带来了一个问题,即如何在不同模块间进行转发?有两种方法可以实现模块间的转发,一种就是在<forward>(全局或者本地)中定义,另外一种就是利用org.apache.struts.actions.SwitchAction。

下面就是一个全局的例子:

<global-forwards>
	<forward name="toModuleB" contextRelative="true"
		path="/moduleB/index.do" redirect="true" />
	...
</global-forwards>

   可以看出,只需要在原有的path属性前加上模块名,同时将contextRelative属性置为true即可。此外,你也可以在<action>中定义一个类似的本地<forward>。

<action-mappings>
	<!-- Action mapping for profile form -->
	<action path="/login" 
			type="com.ncu.test.LoginAction"
			name="loginForm" 
			scope="request" 
			input="tile.userLogin"
			validate="true">
		
		<forward name="success" contextRelative="true"
			path="/moduleA/login.do" />
	</action>
</action-mappings>

    如果你已经处在其他模块,需要转回到缺省模块,那应该类似下面这样定义,即模块名为空。

<forward name="success" contextRelative="true" path="/login.do" />

    此外,你也可以使用org.apache.struts.actions.SwitchAction,例如:

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

 

分享到:
评论

相关推荐

    将struts2和spring的配置文件拆分

    详细的介绍如何将将struts2和spring的配置文件拆分

    struts的教程.doc

    Struts配置文件简介 13 有关Struts Controller及其相关的的配置描述 13 有关struts tag lib的配置描述 14 有关Struts Action Mapping的配置描述 14 Form-bean元素 15 Action元素 15 Struts高级特性(Struts ...

    java Struts教程

    Struts配置文件简介 13 有关Struts Controller及其相关的的配置描述 13 有关struts tag lib的配置描述 14 有关Struts Action Mapping的配置描述 14 Form-bean元素 15 Action元素 15 Struts高级特性(Struts Advanced...

    struts 教程 很好很详细

    Struts配置文件简介 13 有关Struts Controller及其相关的的配置描述 13 有关struts tag lib的配置描述 14 有关Struts Action Mapping的配置描述 14 Form-bean元素 15 Action元素 15 Struts高级特性(Struts Advanced...

    struts 入门教程

    Struts配置文件简介 13 有关Struts Controller及其相关的的配置描述 13 有关struts tag lib的配置描述 14 有关Struts Action Mapping的配置描述 14 Form-bean元素 15 Action元素 15 Struts高级特性(Struts Advanced...

    struts2.4+spring3.1+hibernate4.1的SSH框架

     系统的基本业务流程是: 在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action...

    struts2通过附件方式下载文件夹

    通过zip压缩文件,然后下载这个文件,有xml配置,action、service、serviceImpl、jsp

    struts+hibernate课件

    通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。 c、表现与逻辑分离 d、表单验证解决了请求数据的验证问题,增强了系统健壮性。 e、便于团队开发 Struts缺点: a、大量的...

    JSP程序设计课件包含Hibernate,Struts的介绍

    15. Struts程序启动时,首先从配置文件struts-config.xml文件中读取相关信息,根据这些信息,控制器可以知道把视图中的请求转发给那个业务逻辑处理。视图组件,控制器,业务逻辑组件之间没有代码的联系。 16. Struts...

    信息办公基于struts的图书管理系统-struts-ts.rar

    该源码资料包包含了完整的源代码和必要的配置文件,为开发者提供了丰富的参考和学习资源。该系统的主要功能包括图书信息的录入、查询、修改和删除,以及用户管理等。通过该系统,管理员可以轻松地对图书馆的图书信息...

    struts2 hibernate spring 标注 doc+源码

    分离代码和配置文件的存放位置(企业用配置方式) action拥有自己独立的XXX.xml配置文件,避免全部存放到struts.xml中 使用了标注 spring会自动搜索bo文件 @SuppressWarnings("serial") @Service("empBO")

    Ajax+Struts1.x 登陆程序源代码(详解)

    用AJAX+STRUTS写的登陆程序,并且附加了超级详尽的源码注释,...各个配置文件 各个JSP文件 ... 总之,就是整个AJAX+STRUTS项目登陆程序打包,可以在ECLIPSE下导入,在TOMCAT5.X下运行(这需要将下载包当中的sql先执行)

    Struts + JSP 电子书

    它为了使各个部分能够分离,提供相应的配置文件(struts-config.xml)进行请求和处理类的映射。整个类的映射完全来自java技术的类反射和相应的请求过滤技术。通过标记扩展来实现相应的视图和模型的联系。

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR)130224.rar

    它通过ActionForm和Action类来实现数据的传递和处理,同时利用配置文件struts-config.xml来管理页面跳转和Action之间的映射关系。Hibernate3.0作为持久层框架,负责与数据库进行交互。它通过ORM(对象关系映射)技术...

    图书管理系统(struts+hibernate+spring).rar

    在这个资料包中,用户将会找到一个基于这三个框架的图书管理系统的完整源代码,包括了前端页面、控制器、业务逻辑层、数据访问层以及配置文件等。通过阅读和分析这些源码,用户可以学习到如何使用Struts处理用户请求...

    Struts、Spring、Hibernate、SSH框架总结

    Struts是一个MVC框架,通过配置文件很好地实现了模型与视图的分离。 基于Struts开发的应用由3类组件构成:控制器组件、模型组件(Java Bean)和视图组件(ActionForm)。 控制器组件包括ActionServlet,是Struts的...

    基于MVC结构的Struts框架的研究

    Struts是一个用于开发Web应用程序的框架,它采用MVC(Model-View-Controller)的设计思想,很好的实现了业务逻辑和用户界面的...对Struts框架所涉及的技术要点进行了分析,并对配置文件,表单验证等特性进行了详细的描述。

    基于Java的Struts2学习案例设计源码

    本项目是一个基于Java语言开发的Struts2学习案例,包含35个文件,主要文件类型包括Java源代码、JSP页面和XML配置文件。Struts2是一个流行的Web应用框架,它采用MVC设计模式,将控制器、模型和视图分离,实现数据交互...

    图书管理系统(struts+hibernate+spring)130225.rar

    Hibernate的使用大大减少了编写复杂SQL语句的需求,通过配置文件和注解即可自动生成数据库操作语句,提升了开发效率和准确性。此外,Spring框架的引入为系统带来了一系列企业级的服务,如事务管理、安全性控制等,...

    前后端分离实战项目-基于VUE和SpringBoot的前后端分离通用后台管理系统(源码+数据库).zip文件

    后端框架:选择JavaWeb框架,如Spring MVC、Struts等,用于实现后端业务逻辑。 前端框架:选择合适的前端框架,如Bootstrap、Semantic UI等,用于美化界面和提供良好的用户体验。 数据库:选择关系型数据库,如MySQL...

Global site tag (gtag.js) - Google Analytics