struts2核心组件介绍

来源:互联网 发布:知乎即将消失的行业 编辑:程序博客网 时间:2024/05/02 02:38
 

Struts2是用Maven2来构建的,在pom文件中,它定义了所有依赖的配置项。您可以访问http://maven.apache.org来获得关于Maven2的更多信息。

 

 

Struts2的配置可以分成三个单独的文件

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上有这些属性的最新信息,地址为http://struts.apache.org/2.x/docs/strutsproperties.html.

Struts2-Corejar发行版中,有一个默认的属性文件,名为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”文件从应用中移走,这完全取决于应用程序的功能需求。我们在本章中所讨论的配置信息, 12 | 深入浅出 STRUTS 2 InfoQ 中文站:时刻关注企业软件开发领域的变化与创新

都可以被其他方式所代替,比如注解,“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 更多精彩内容:http://www.infoq.com/cn

<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的配置组成,但也可以包括任何类型的配置信息。它还可以用来组织管理各自独立的功能——它们也可以被进一步拆分到不同的配置文件中。

这个标签的属性包括有: