`
liuhong2099
  • 浏览: 4583 次
  • 性别: Icon_minigender_1
  • 来自: 襄樊
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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>
分享到:
评论

相关推荐

    struts2的配置文件

    Struts2框架通过多种配置文件来管理其行为和配置,这些文件之间的相互引用和加载顺序是非常重要的。开发者需要熟悉每个配置文件的作用及其配置项的意义,以便更好地管理和优化应用程序。通过上述示例可以看到,...

    jfreechar 整合struts2.1.8版本生成线图,饼图,柱形图

    -- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 --&gt; &lt;include file="struts-default.xml"&gt;&lt;/include&gt; &lt;!-- package提供了将多个Action组织为一个模块...

    struts.xml详解.doc

    `struts-default.xml`通常包含了Struts2的默认配置,包括一些预定义的拦截器和Action。 4. **package标签**: `&lt;package&gt;`定义了一个行为模块,它是一系列Action的集合。每个`package`都需要一个唯一的名字,通过`...

    struts2的配置

    在Struts2中,`struts.xml`文件是整个框架的核心配置文件之一,用于声明和配置Struts2的各种组件。其基本结构如下: ```xml &lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration ...

    struts2的资源配置

    在DTD(文档类型定义)中,可以看到struts.xml支持的元素,如`package`、`include`、`bean`和`constant`等,这些元素用于组织和配置Struts2的应用结构。 2. **包配置(Package)** - `package`元素是组织Action和...

    关于struts2的一些配置

    文章标题提及的“struts2的配置文件”通常指的是`struts.xml`文件,它是Struts2框架的核心配置文件,用于定义应用程序的行为和结构。该文件遵循特定的DTD(Document Type Definition),正如文章描述中所指出的,它...

    struts.xml详解[整理].pdf

    Struts 2的配置文件通过这种方式灵活地管理了Action、拦截器和结果,实现了MVC架构中的控制层逻辑,使得开发者能够更加便捷地构建和维护Web应用。在实际开发中,可以根据项目需求,自定义配置来满足各种业务场景。

    struts2基本例子

    9. **异常处理**:Struts2允许定义全局异常处理策略,通过`&lt;global-exception-mappings&gt;`来捕获和处理未预期的异常。 10. **插件机制**:Struts2拥有丰富的插件库,如Struts2-dojo-plugin用于与Dojo JavaScript库...

    spring3.2+strut2+hibernate4

    spring3.2+strut2+hibernate4 注解方式。&lt;struts&gt; spring.xml ... &lt;description&gt;Spring公共配置文件 ...-- class="org.springframework.orm.hibernate3.... &lt;include file="/resource/struts-user.xml"&gt;&lt;/include&gt;

    struts2标签库

    例如,通过`&lt;include file="struts-default.xml"&gt;&lt;/include&gt;`,我们可以引入Struts2的默认配置,包含了基本的拦截器、结果类型等配置。 接下来,`&lt;package&gt;`标签是Struts2的核心组织单元,它可以看作是一个逻辑模块...

    Struts2配置文件[文].pdf

    Struts2是一个流行的Java web开发框架,它提供了一种组织和控制MVC(模型-视图-控制器)架构的方式。配置文件在Struts2中扮演着至关重要的角色,它们允许开发者自定义框架的行为以满足特定需求。以下是关于Struts2...

    ssh整合超详细步骤.txt

    ##### 步骤2:配置Struts2 接下来,在`WebRoot/WEB-INF/web.xml`文件中添加过滤器,以便于处理Struts2相关的请求: ```xml &lt;filter-name&gt;struts&lt;/filter-name&gt; &lt;filter-class&gt;org.apache.struts2.dispatcher.ng....

    struts.xml文件详解

    8. **&lt;global-results&gt;**: - 全局结果配置,定义了通用的结果页面,如错误页面。当 Action 执行后返回一个结果名称时,系统会查找全局结果并跳转到对应的页面。 9. ****: - `&lt;action&gt;` 元素定义了一个具体的...

    struts2.0.6+spring2.0.3+hibernane3的配置

    在IT领域,特别是Java开发框架下,整合Struts2、Spring和Hibernate是常见的技术栈选择,旨在构建功能丰富且性能高效的企业级应用。基于给定的文件信息,我们可以深入探讨如何配置并集成这三个强大的框架。 ### ...

    Strutst2框架的总结

    21. **Struts2架构组件**:包括Struts2FilterDispatcher、ActionProxy、ActionInvocation、ExceptionInterceptor等,它们协同工作以处理请求和响应。 以上就是Struts2框架的核心知识点,这些知识对于理解和使用...

    Struts2.0框架技术详解

    **2.1 Struts1和Struts2的对比** Struts1与Struts2的主要区别在于: - **请求处理机制**:Struts1使用ActionForm作为请求的载体,而Struts2则采用拦截器机制。 - **配置方式**:Struts1使用XML进行配置,Struts2...

    freemarker与Struts2.0的dome

    - 当Freemarker模板中出现错误时,Struts2会捕获异常并提供相应的错误页面,这可以通过配置`&lt;struts&gt;`标签内的`&lt;global-results&gt;`和`&lt;global-exception-mappings&gt;`进行设置。 8. **性能优化** - Freemarker提供了...

    SSH三大框架复习

    SSH三大框架指的是Struts2、Hibernate和Spring,这三个框架在Java Web开发中有着重要的地位,分别负责表现层、持久层和业务层的管理。 首先,我们来看Struts2框架。Struts2是一个基于MVC设计模式的Web应用框架,它...

Global site tag (gtag.js) - Google Analytics