`
huibin
  • 浏览: 750703 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

struts 2.0核心组件

阅读更多
从全局的角度来看 ,Struts2是一个pull(拉)类型的MVC(或者MVC2)框架,它与传统类型的MVC框架的不同之处就在于在Struts2中,Action担任的是模型的角色,而非控制器的角色,虽然它的角色仍然有些重叠。“pull”的动作由视图发起,它直接从Action里拉取所需的数据,而不是另外还需要一个单独的模型对象存在。
我们刚刚从概念上讲述了一下Struts2里面的MVC,那么从实现的层面上来看又是什么样子呢?在Struts2中,模型-视图-控制器模式通过五个核心组件来实现——Action、拦截器?值栈/OGNL?结果类型和结果/视图技术。
图 1: MVC / Struts2架构

图1描述了Struts2架构中的模型、视图和控制器。控制器通过Struts2分发Servlet过滤器(也就是人们常说的拦截器)来实现,模型通过Action实现,视图则通过结果类型和结果组合实现。值栈和OGNL提供了公共的线程和链接,并使得不同组件可以相互集成。
当我们在本章讨论通用组件时,其中有大量的信息是与配置相关的,也就是对Action、拦截器、结果等等的配置。 在阅读时要注意一点,这里的讲解只是帮助读者掌握一些背景知识,并没有采用最有效率的配置方式。在后续的章节中,我们会介绍一些更加简单有效的方式,诸如“惯例重于配置”、注解和零配置插件。
在我们对核心组件进行深入探讨之前,首先让我们来看看全局性的配置。
配置
在配置Struts 2之前,你首先要把发行版下载下来,或者在Maven2的“pom.xml”文件中声明如下的依赖:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.0.6</version>
</dependency>
Mave2是一种管理项目整体构建过程的工具——包括编译,运行测试,生成报告以及管理构建的制品,其中对开发人员最有吸引力的一项就是对构建制品(artifact)进行管理。
应用程序的依赖库只需要在项目的“pom.xml”文件中通过groupId、artifactId和version进行定义即可。在使用一个制品之前,Maven会从本地和远程的库中进行查询,查询的范围包括本地的缓存、网上其他组织提供的库以及ibiblio.com这个标准的库。如果在远程的库中找到了所需的制品,Maven就会把它下载到本地的缓存中,以供项目使用。当请求所需要的制品时,这个制品相关联的依赖也会同样被下载到本地来(假设在该制品的“pom.xml”文件中对所有依赖都依次进行了声明)。 
Struts2是用Maven2来构建的,在pom文件中,它定义了所有依赖的配置项。您可以访问[url]http://maven.apache.org[/url]来获得关于Maven2的更多信息。
Struts2的配置可以分成三个单独的文件,如图2所示。
图2: 框架元素的配置文件
FilterDispatcher是一个servlet过滤器,它是整个Web应用的配置项,需要在“web.xml”中进行配置:
<filter>
<filter-name>action2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>action2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如果是配置一个最基本的Web应用的话,这样就足够了。剩下的就是自定义一些Web应用的执行环境和配置应用中的组件。其中前者主要通过“struts.properties”来完成,而后者是在“struts.xml”中进行配置的。我们下面来看一下这两个配置文件的细节。 
struts.properties文件
这个文件提供了一种更改框架默认行为方式的机制。在一般情况下,如果不是打算让调试更加方便的话,你根本无须更改这个文件。在“struts.properties”文件中定义的属性都可以在“web.xml”文件的“init-param”标签中进行配置,或者通过“struts.xml”文件中的“constant” 标签来修改(我们在下一章中会继续讨论这个标签)。
我们可以更改其中的一些属性来改变Freemarker的选项——改变Action映射类,判断是否要重新载入XML配置文件,以及默认的UI主题等等。在Struts2 的wiki上有这些属性的最新信息,地址为[url]http://struts.apache.org/2.x/docs/strutsproperties.html.[/url]
在Struts2-Core的jar发行版中,有一个默认的属性文件,名为“default.properties”。如果要对属性进行修改的话,只需要在项目的源代码目录下,创建一个叫做“struts.properties”的文件,然后把想要修改的属性添加到文件中,新的属性就会把默认的覆盖掉了。
在开发环境中,以下几个属性是可能会被修改的:
    » struts.i18n.reload = true——激活重新载入国际化文件的功能
    » struts.devMode = true ——激活开发模式,以提供更全面的调试功能。
    » struts.configuration.xml.reload = true——激活重新载入XML配置文件的功能(这是为Action准备的),当文件被修改以后,就不需要重新载入Servlet容器中的整个Web应用了。
    » struts.url.http.port = 8080——配置服务器运行的端口号(所有生成的URL都会被正确创建)
    »

struts.xml文件
“struts.xml”文件中包含的是开发Action时所需要修改的配置信息。在本章接下来的内容中,会针对特定的元素进行详细讲解,但现在让我们先来看一下文件的固定结构。
有的时候你甚至可以把整个“struts.xml”文件从应用中移走,这完全取决于应用程序的功能需求。我们在本章中所讨论的配置信息, 
都可以被其他方式所代替,比如注解,“web.xml”启动参数和和可替换的URL映射方案。
必须要在“struts.xml”中进行配置的信息只有全局结果、异常处理和自定义的拦截器堆栈。
因为这是一个XML文件,所以最开始的元素就是XML版本和编码信息。接下来则是XML的文档类型定义(DTD)。DTD提供了XML文件中各个元素所应使用结构信息,而这些最终会被XML解析器或者编辑器使用。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package
name="struts2"
extends="struts-default"
namespace="/struts2">

</package>
</struts>
我们现在看到了<struts>标签,它位于Struts2配置的最外层,其他标签都是包含在它里面的。
Include标签:
<include … /> 是<struts>标签的一个子标签,它可以把其他配置文件导入进来,从而实现Struts2的模块化。它的“file”属性定义了要导入的文件的名称——该文件要和“struts.xml”一样有着相同的结构。比如说,如果要把一个记账系统的配置分解的话,你可能会把记账、管理和报表的功能各自组织到不同的文件中:
<struts>
<include file="billing-config.xml" /> 
核心组件 | 13 更多精彩内容:[url]http://www.infoq.com/cn[/url]
<include file="admin-config.xml" />
<include file="reports-config.xml" />

</struts>
当我们导入文件时,一定要注意导入的顺序。因为从文件被导入的那个点开始,该文件中的信息才能被访问到,也就是说,如果要使用另外一个文件中所定义的标签,那么该文件就必须要在被引用之前就配置好。
有些文件需要显式导入,有些则会被自动导入。“struts-default.xml”和“struts-plugin.xml”就属于后者。它们都包括有结果类型、拦截器、拦截器堆栈、包(package)以及Web应用执行环境(也可以在“struts.properties”中配置)的配置信息。二者的区别在于,“struts-default.xml”提供的是Struts2的核心配置信息,而“struts-plugin.xml”则描述了特定插件的配置信息。每个插件的JAR中都要有一个“struts-plugin.xml”文件,该文件会在系统启动时被装载。
The Package Tag:
<package … />标签是用来把那些需要共享的通用信息——例如拦截器堆栈或URL命名空间——的配置组织在一起的。它通常由Action的配置组成,但也可以包括任何类型的配置信息。它还可以用来组织管理各自独立的功能——它们也可以被进一步拆分到不同的配置文件中。
这个标签的属性包括有:
   
分享到:
评论

相关推荐

    Struts2.0视频教程+struts2.0中文教程

    5. **Struts2拦截器**:介绍Struts2的核心组件之一——拦截器,如何使用拦截器进行日志记录、权限验证等操作。 6. **结果类型与导航**:讲解如何配置结果类型,如Redirect、RedirectAction、Stream等,以及基于...

    struts 2.0 核心jar包

    核心jar包是Struts 2框架的基础组件,包含了实现框架功能的关键类和接口。 1. **Struts 2框架概述**: Struts 2是Struts 1的升级版,引入了更多的特性,如拦截器(Interceptor)、OGNL(Object-Graph Navigation ...

    Struts2.0的api

    让我们深入探讨Struts2.0 API的核心概念、关键组件以及它们在实际开发中的应用。 首先,`Struts2.0中文教程.chm`可能包含对框架的详细解释,包括Action、Result、Interceptor等核心概念。Action是Struts2的核心,它...

    struts2.0的特点

    在Struts2.0中,核心概念之一是Action,它被设计为一个简单的POJO(Plain Old Java Object),这使得Action的实现更加灵活和简洁。Action类不再需要继承特定的基类,而是通过配置文件(如struts.xml)来定义其行为。...

    struts2.0jar包

    Struts2.0 jar包是Java Web开发中的一个重要组件,它是Apache Struts框架的一个特定版本。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,用于构建可维护性高、结构清晰的Java应用。该框架极大...

    Struts2.0 Jar包

    Struts2.0是一款强大的...总的来说,Struts2.0 Jar包是开发Java Web应用的重要工具,包含了运行Struts2应用所需的所有组件。通过理解并熟练掌握上述知识点,开发者能够高效地利用这个框架构建出稳定、可维护的Web系统。

    struts2.0核心源码包

    在深入探讨Struts2.0核心源码之前,我们需要对MVC模式有一个基本的理解。MVC模式将应用分为三个部分:模型(Model)负责业务逻辑,视图(View)处理用户界面,控制器(Controller)协调模型和视图的交互。 Struts...

    Struts 2.0

    Struts 2的核心是Action,它是业务逻辑处理的主要组件,而且在设计上是线程安全的。 在开始开发Struts 2应用之前,首先需要从Apache官方网站下载Struts 2的发行包,通常推荐下载all包,因为它包含了所有必要的文档...

    Struts2.0培训文档

    2. **STRUTS2.0核心组件** - **ACTION**: Action是Struts2中的控制器,每个Action对应一个业务逻辑。用户请求通过FilterDispatcher(过滤器调度器)转发到Action,然后执行相应的业务逻辑,并返回结果。 3. **...

    初识[Struts2.0]并[使用Struts2.0]进行SSH集成

    Struts2.0的核心特性包括: 1. **Action与结果**:Struts2.0中的Action类是处理用户请求的主要对象,每个Action对应一个业务逻辑。执行完成后,会返回一个结果,这个结果可以是另一个Action、JSP页面或者任何其他...

    struts 2.0 详细配置

    ### Struts 2.0 详细配置解析 #### 一、Struts 2.0 简介 ...通过上述介绍,我们可以了解到 Struts 2.0 的核心概念及其工作原理。掌握了这些基础知识后,开发者可以更轻松地使用该框架构建高质量的 Web 应用程序。

    struts2.0入门案例

    框架的核心组件包括Action、Result、Interceptor等,它们协同工作以处理HTTP请求并生成响应。Action是业务逻辑的载体,Result负责视图的呈现,Interceptor则提供了拦截请求和结果的能力,用于实现如日志记录、权限...

    struts 2.0

    1. **Action和Result**: 在Struts 2.0中,Action类是处理用户请求的核心组件。Action类继承自`com.opensymphony.xwork2.ActionSupport`,并覆盖或实现相应的业务方法。完成业务逻辑后,Action会返回一个结果(Result...

    struts2.0的 jar包和源文件

    在Struts2.0框架中,jar文件通常包含了以下关键组件: 1. **核心库**:如`struts2-core.jar`,这是框架的基础,提供了Action、Result、Interceptor等核心功能,以及配置解析和执行的核心逻辑。 2. **插件**:例如`...

    Struts 2.0全攻略之Struts 2.0参考手册

    Tiles是Struts 2.0的一个视图组件,它允许开发者创建可重用的布局和页面片段。通过Tiles,可以轻松地组合多个JSP页面,形成复杂的应用视图。 8. **异常处理** Struts 2.0提供了一套完整的异常处理机制,可以捕获...

    Eclipse struts2.0可视化开发组件

    ### Eclipse Struts2.0 可视化开发组件知识点详解 #### 一、Struts2.0概述 在深入探讨Eclipse Struts2.0可视化开发组件之前,我们首先需要了解Struts2.0框架的基本概念及其优势。Struts2.0是一个用于Java EE平台的...

    Struts2.0大结合

    二、Struts2.0核心概念 1. Action:Action是处理用户请求的核心组件,它接收请求,执行业务逻辑,并通过Result返回相应的视图。 2. Result:Result负责将Action的结果呈现给用户,可以是重定向、转发,或者是渲染一...

    struts2.0英文文档

    1. **控制器**:Struts2.0 的核心组件之一,负责接收用户的请求,并决定下一步的动作。通常情况下,控制器是 Action 类,它是具体业务逻辑的封装体。 2. **视图**:用于展示数据给用户。Struts2.0 支持多种视图技术...

    struts2.0核心包

    通过这些核心组件,Struts2.0为开发者提供了一种灵活、可扩展的框架,简化了Web应用的开发,提高了代码的可维护性和可测试性。在实际项目中,开发者可以根据需求选择合适的配置和扩展,实现高效、稳定的Web应用程序...

    Struts2.0 入门学习资料

    一、Struts2.0核心概念 1. 框架结构:Struts2.0的核心组件包括Action、Result、Interceptor、Dispatcher Servlet等。Action负责处理用户请求,Result用于展示结果视图,Interceptor是拦截器,用来处理请求前后的逻辑...

Global site tag (gtag.js) - Google Analytics