`
- 浏览:
4583 次
- 性别:
- 来自:
襄樊
-
struts2: include和global-results(转)
先贴两段代码,在慢慢解释
(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>
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Struts2框架通过多种配置文件来管理其行为和配置,这些文件之间的相互引用和加载顺序是非常重要的。开发者需要熟悉每个配置文件的作用及其配置项的意义,以便更好地管理和优化应用程序。通过上述示例可以看到,...
-- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 --> <include file="struts-default.xml"></include> <!-- package提供了将多个Action组织为一个模块...
`struts-default.xml`通常包含了Struts2的默认配置,包括一些预定义的拦截器和Action。 4. **package标签**: `<package>`定义了一个行为模块,它是一系列Action的集合。每个`package`都需要一个唯一的名字,通过`...
在Struts2中,`struts.xml`文件是整个框架的核心配置文件之一,用于声明和配置Struts2的各种组件。其基本结构如下: ```xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration ...
在DTD(文档类型定义)中,可以看到struts.xml支持的元素,如`package`、`include`、`bean`和`constant`等,这些元素用于组织和配置Struts2的应用结构。 2. **包配置(Package)** - `package`元素是组织Action和...
文章标题提及的“struts2的配置文件”通常指的是`struts.xml`文件,它是Struts2框架的核心配置文件,用于定义应用程序的行为和结构。该文件遵循特定的DTD(Document Type Definition),正如文章描述中所指出的,它...
Struts 2的配置文件通过这种方式灵活地管理了Action、拦截器和结果,实现了MVC架构中的控制层逻辑,使得开发者能够更加便捷地构建和维护Web应用。在实际开发中,可以根据项目需求,自定义配置来满足各种业务场景。
9. **异常处理**:Struts2允许定义全局异常处理策略,通过`<global-exception-mappings>`来捕获和处理未预期的异常。 10. **插件机制**:Struts2拥有丰富的插件库,如Struts2-dojo-plugin用于与Dojo JavaScript库...
spring3.2+strut2+hibernate4 注解方式。<struts> spring.xml ... <description>Spring公共配置文件 ...-- class="org.springframework.orm.hibernate3.... <include file="/resource/struts-user.xml"></include>
例如,通过`<include file="struts-default.xml"></include>`,我们可以引入Struts2的默认配置,包含了基本的拦截器、结果类型等配置。 接下来,`<package>`标签是Struts2的核心组织单元,它可以看作是一个逻辑模块...
Struts2是一个流行的Java web开发框架,它提供了一种组织和控制MVC(模型-视图-控制器)架构的方式。配置文件在Struts2中扮演着至关重要的角色,它们允许开发者自定义框架的行为以满足特定需求。以下是关于Struts2...
##### 步骤2:配置Struts2 接下来,在`WebRoot/WEB-INF/web.xml`文件中添加过滤器,以便于处理Struts2相关的请求: ```xml <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.ng....
8. **<global-results>**: - 全局结果配置,定义了通用的结果页面,如错误页面。当 Action 执行后返回一个结果名称时,系统会查找全局结果并跳转到对应的页面。 9. ****: - `<action>` 元素定义了一个具体的...
在IT领域,特别是Java开发框架下,整合Struts2、Spring和Hibernate是常见的技术栈选择,旨在构建功能丰富且性能高效的企业级应用。基于给定的文件信息,我们可以深入探讨如何配置并集成这三个强大的框架。 ### ...
21. **Struts2架构组件**:包括Struts2FilterDispatcher、ActionProxy、ActionInvocation、ExceptionInterceptor等,它们协同工作以处理请求和响应。 以上就是Struts2框架的核心知识点,这些知识对于理解和使用...
**2.1 Struts1和Struts2的对比** Struts1与Struts2的主要区别在于: - **请求处理机制**:Struts1使用ActionForm作为请求的载体,而Struts2则采用拦截器机制。 - **配置方式**:Struts1使用XML进行配置,Struts2...
- 当Freemarker模板中出现错误时,Struts2会捕获异常并提供相应的错误页面,这可以通过配置`<struts>`标签内的`<global-results>`和`<global-exception-mappings>`进行设置。 8. **性能优化** - Freemarker提供了...
SSH三大框架指的是Struts2、Hibernate和Spring,这三个框架在Java Web开发中有着重要的地位,分别负责表现层、持久层和业务层的管理。 首先,我们来看Struts2框架。Struts2是一个基于MVC设计模式的Web应用框架,它...