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-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”文件从应用中移走,这完全取决于应用程序的功能需求。我们在本章中所讨论的配置信息, 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的配置组成,但也可以包括任何类型的配置信息。它还可以用来组织管理各自独立的功能——它们也可以被进一步拆分到不同的配置文件中。
这个标签的属性包括有: