先贴两段代码,在慢慢解释
(1)struts-user.xml
<struts>
<package name="struts-user" extends="struts-default">
<global-results>
<result type="redirect-action">UserAction_queryAll</result>
</global-results>
<action name="UserAction_login" class="userAction" method="login"></action>
<action name="UserAction_insert" class="userAction" method="insert"></action>
<action name="UserAction_update" class="userAction" method="update"></action>
<action name="UserAction_delete" class="userAction" method="delete"></action>
<action name="UserAction_queryById" class="userAction" method="queryById"></action>
<action name="UserAction_queryByLike" class="userAction" method="queryByLike"></action>
<action name="UserAction_queryAll" class="userAction" method="queryAll">
<result>/user/user_list.jsp</result>
</action>
</package>
</struts>
(2)struts.xml(引入了struts-user.xml)
<struts>
<include file="struts-user.xml"></include>
<package name="struts" extends="struts-default"></package>
</struts>
1. 使用<include>标签重用配置文件
(1)在Struts2中提供了一个默认的struts.xml文件,但如果package、action、interceptors等配置比较多时,都放到一个struts.xml文件不太容易维护。因此,就需要将struts.xml文件分成多个配置文件,然后在struts.xml文件中使用<include>标签引用这些配置文件。如上面的代码。
注意:用<include>引用的xml文件也必须是完成的struts2的配置。实际上<include>在引用时是单独解析的xml文件,而不是将被引用的文件插入到struts.xml文件中。
注意:struts.xml和struts-user.xml中<package></package>标签中的name属性不能相同。道理很简单,<struts></struts>标签中可以有多个<package></package>标签,要通过name属性以示区别。
(2)Apache Struts 2 Documentation: Can we break up a large struts.xml file into smaller pieces --> Yes, there are two approaches. We can include other struts.xml file from a bootstrap, or we can package a struts.xml files in a JAR. Or both.
<1>By Include:A typical struts.xml files will have one or more include elements:
<struts>
<include file="struts-default.xml"/>
<include file="config-browser.xml"/>
<package name="default" extends="struts-default">
....
</package>
<include file="other.xml"/>
</struts>
The first include element tells the framework to load the struts-default.xml, which it will find in the struts2.jar file. The struts-default.xml file defines the "standard" interceptor and result definitions. You can put your own <include> elements in your struts.xml interchangeably with <package> elements. The configuration objects will be loaded in the order of appearance. The framework reads the configuration from top to bottom and adds objects as they are referenced.
<2>By JAR
A "module" can be added to an application by placing a struts.xml and related classes into a JAR on the classpath. FreeMarker and Velocity templates can also be provided by JAR, making it possible to distribution a module in a single, self-contained JAR that is automatically configured on startup.
2. 全局result(global-results)
(1)有很多时候一个<result>可供很多<action>使用,这时可以使用<global-results>标签来定义全局的<result>,代码见struts-user.xml。执行顺序:当一个Action返回的String没有相应的<result>与之对应,Struts2就会查找全局的<result>。
(2)Apache Struts 2 Documentation: Global Results
Most often, results are nested with the action element. But some results apply to multiple actions. In a secure application, a client might try to access a page without being authorized, and many actions may need access to a "logon" result. If actions need to share results, a set of global results can be defined for each package. The framework will first look for a local result nested in the action. If a local match is not found, then the global results are checked.
<!-- Defining global results -->
<global-results>
<result name="error">/Error.jsp</result>
<result name="invalid.token">/Error.jsp</result>
<result name="login" type="redirectAction">Logon!input</result>
</global-results>
3. <include>标签和<global-results>标签结合
(1)<global-results>标签的作用域只是当前<struts></struts>,也可以说是当前的xml文件;struts2不允许把struts-user.xml(通过<include>引入到struts.xml)中的<global-results>标签写在struts.xml中。
(2)如果struts-user.xml中的package继承自struts.xml中的package,则可以将struts-user.xml中的<global-results>放在struts.xml中。然后struts-user.xml将此<global-results>从struts.xml中继承过来。例如(将上面的两段代码简单修改):
(1)struts-user.xml
<struts>
<!-- 这里struts-user继承(extends)的是struts, 即struts.xml中package的name属性值 -->
<package name="struts-user" extends="struts">
<action name="UserAction_login" class="userAction" method="login"></action>
<action name="UserAction_insert" class="userAction" method="insert"></action>
<action name="UserAction_update" class="userAction" method="update"></action>
<action name="UserAction_delete" class="userAction" method="delete"></action>
<action name="UserAction_queryById" class="userAction" method="queryById"></action>
<action name="UserAction_queryByLike" class="userAction" method="queryByLike"></action>
<action name="UserAction_queryAll" class="userAction" method="queryAll">
<result>/user/user_list.jsp</result>
</action>
</package>
</struts>
(2)struts.xml(引入了struts-user.xml)
<struts>
<include file="struts-user.xml"></include>
<package name="struts" extends="struts-default">
<global-results>
<result type="redirect-action">UserAction_queryAll</result>
</global-results>
</package>
</struts>
分享到:
相关推荐
包元素用于组织相关的Action和Result,可以看作是模块化的配置。每个`<package>`可以继承其他包,从而重用和扩展配置。默认情况下,它继承自`struts-default`或`struts-blank`包,提供了许多内置的配置。 4. **...
这样做可以使得整个配置更加模块化和清晰,便于团队开发和后期维护。 2. 标签:此标签用于定义Struts2框架的全局常量配置。在Struts2中,开发者可以通过struts.properties文件定义各种配置属性,而这些属性也可以...
总结起来,Struts.xml配置文件的`<include>`标签提供了配置文件的模块化管理,使得大型项目更加易于维护。而Action的别名特性则允许我们在一个动作类中实现多个业务逻辑,提升了代码的组织效率。理解并熟练运用这些...
在实际开发中,struts.xml的配置应当遵循模块化和可复用的原则,将相似功能的Action归类在同一包下,利用拦截器提高代码复用和灵活性。同时,合理设置常量可以优化性能或满足特定需求。通过阅读博文和实践,开发者...
这样,`struts.xml`可以包含多个子配置文件,实现了配置的模块化。 6. **Package配置**: `package`元素用于组织Action、Interceptor和Result。例如,`namespace`属性定义了Action的命名空间,`extends`属性继承...
SSH(Spring、Struts2和Hibernate)是Java开发中常用的一种企业级应用框架组合,用于构建高效、可维护性高的Web应用程序。...这种组合在实际项目中非常常见,为开发高效、模块化的Web应用提供了强大支持。
Struts2+Hibernate架构是Java Web开发中常用的一种框架组合...这个结构使得项目具有良好的分层和模块化,易于扩展和维护。在实际开发中,还需要考虑异常处理、安全性、性能优化等多个方面,才能构建出高质量的Web应用。
`<struts>`标签内的`<include>`标签用于引入其他XML配置文件,例如`<include file="xx.xml"/>`,这使得配置文件可以模块化,提高代码的可维护性。 **拦截器配置** 拦截器是Struts2中实现业务逻辑控制和增强功能的...
通过合理配置这些元素,可以实现高度模块化、易于维护的Web应用。在配置过程中,还需要注意各个元素的属性设置和相互之间的依赖关系,确保整个应用的流程逻辑正确无误。随着技术的发展,Struts的使用可能会逐渐减少...
这有利于代码的模块化和复用。 6. **常量配置**:通过`<constant>`标签可以设置Struts 2的配置参数,如: ```xml <constant name="struts.devMode" value="true"> ``` 这样可以开启开发模式,提供更丰富的错误...
`<include>` 节点允许将配置分散到多个 XML 文件中,以实现模块化的配置。在这里,`struts-default.xml` 被包含,引入了 Struts 2 的默认配置,包括预定义的拦截器、结果类型等。 4. **<package> 元素**: - `...
这种方式使得代码更加整洁,同时提高了模块化的程度。 此外,SSH框架的整合还涉及到数据访问层。Hibernate作为ORM工具,通常通过Spring的数据访问/集成(DAO)支持来使用。Spring可以管理Hibernate Session,处理...
Struts2是一个流行的Java web应用程序框架,用于构建和维护可扩展、模块化和高度交互性的MVC(模型-视图-控制器)应用。在Struts2中,`struts.xml`是核心配置文件,它定义了应用的行为、动作、结果和其他组件。为了...
在实际项目中,我们通常会创建一个Spring配置文件,如`spring-struts.xml`,在这个文件中声明需要管理的Action类,以及相关的拦截器和事务管理策略。同时,Struts的配置文件(struts-config.xml或struts2的struts....
例如,将`struts.xml`拆分为多个包或模块相关的文件,将`applicationContext.xml`拆分为数据源、服务、DAO等多个部分。这样可以更好地组织和管理项目结构。 综上所述,Struts2.1、Spring3.0和Hibernate3.3的整合...
Spring提供了全面的后端服务管理,Struts则专注于 MVC(Model-View-Controller)架构的实现,而Hibernate是流行的ORM(Object-Relational Mapping)框架,用于简化数据库操作。下面我们将深入探讨这三个框架以及如何...
这种分工明确的架构设计,使得大型项目能够更好地进行模块化开发,提升代码的可读性和可维护性。 总结来说,SSH框架的配置文件是Java Web开发中的关键组成部分,它们各自负责不同的职责,共同构建了一个高效、灵活...
在项目架构中,Struts和XML的结合使得开发者可以将业务逻辑、数据访问和用户界面有效地分离,从而实现模块化开发。Struts负责控制流程,XML提供配置信息,两者协同工作,使得Web应用的结构更加清晰,易于维护。例如...
Struts框架的多模块设计是其一大特色,它有助于将复杂的项目拆分成多个可管理的小模块,提高代码的可维护性和可扩展性。本资料“Java进阶Struts多模块的技巧”旨在帮助开发者掌握如何有效地组织和管理Struts2框架中...
SSH框架整合指的是Struts2、Spring和Hibernate三个开源框架的集成,它们分别负责表现层、业务逻辑层和数据持久化层,形成一个强大的企业级应用开发解决方案。 Struts2是基于Action和拦截器的模型,它的核心是通过...