Struts - 配置文件
-
简述
本章将带您完成基本配置 Struts 2应用。在这里,我们将看到可以借助几个重要的配置文件(例如web.xml, struts.xml, strutsconfig.xml 和 struts.properties老实说,您只需使用即可开始工作 web.xml 和 struts.xml配置文件(正如您在上一章中看到的,我们的示例使用这两个文件工作)。但是,为了您的知识,我们还将解释其他文件。 -
web.xml 文件
web.xml 配置文件是一个 J2EE 配置文件,它决定了 servlet 容器如何处理 HTTP 请求的元素。它不是严格意义上的 Struts2 配置文件,而是 Struts2 需要配置才能工作的文件。如前所述,该文件为任何 Web 应用程序提供了一个入口点。Struts2 应用程序的入口点将是部署描述符(web.xml)中定义的过滤器。因此,我们将在 web.xml 中定义FilterDispatcher类的条目 。文件夹下需要创建web.xml文件WebContent/WEB-INF.如果您在没有生成它的模板或工具(例如 Eclipse 或 Maven2)的帮助下启动,这是您需要配置的第一个配置文件。以下是我们在上一个示例中使用的 web.xml 文件的内容。<?xml version = "1.0" Encoding = "UTF-8"?> <web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "WebApp_ID" version = "3.0"> <display-name>Struts 2</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
请注意,我们将 Struts 2 过滤器映射到 /*,而不是 /*.action这意味着所有 url 都将被 struts 过滤器解析。我们将在完成注释章节时介绍这一点。 -
Struts.xml 文件
这 struts.xml文件包含您将在开发操作时修改的配置信息。此文件可用于覆盖应用程序的默认设置,例如struts.devMode = false和在属性文件中定义的其他设置。这个文件可以在文件夹下创建WEB-INF/classes.让我们看看我们在前一章解释的 Hello World 示例中创建的 struts.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> <constant name = "struts.devMode" value = "true" /> <package name = "helloworld" extends = "struts-default"> <action name = "hello" class = "com.jc2182.struts2.HelloWorldAction" method = "execute"> <result name = "success">/HelloWorld.jsp</result> </action> <-- more actions can be listed here --> </package> <-- more packages can be listed here --> </struts>
首先要注意的是 DOCTYPE. 所有 struts 配置文件都需要具有正确的文档类型,如我们的小示例所示。<struts> 是根标签元素,在它下面我们使用 <package> 标签声明不同的包。这里 <package> 允许配置的分离和模块化。当您有一个大型项目并且项目被划分为不同的模块时,这非常有用。例如,如果您的项目具有三个域 - business_application、customer_application 和 staff_application,那么您可以创建三个包并将关联的操作存储在适当的包中。包标签具有以下属性 -序号 属性和描述 1 name (required)包裹的唯一标识符2 extends这个包是从哪个包扩展的?默认情况下,我们使用 struts-default 作为基础包。3 abstract如果标记为 true,则该包不可用于最终用户消费。4 namespace操作的唯一命名空间这 constant 标签以及名称和值属性应该用于覆盖定义的以下任何属性 default.properties,就像我们刚刚设置 struts.devMode财产。环境struts.devMode 属性允许我们在日志文件中查看更多调试消息。我们定义 action 标签对应于我们想要访问的每个 URL,我们定义了一个带有 execute() 方法的类,每当我们访问相应的 URL 时都会访问它。结果决定了执行操作后返回给浏览器的内容。操作返回的字符串应该是结果的名称。结果按上述配置,或作为“全局”结果,可用于包中的每个操作。结果有可选name 和 type属性。默认名称值为“成功”。Struts.xml 文件会随着时间的推移而变大,因此通过包来分解它是一种模块化的方法,但是 Struts提供了另一种模块化 struts.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> <include file="my-struts1.xml"/> <include file="my-struts2.xml"/> </struts>
我们没有涉及的另一个配置文件是 struts-default.xml。该文件包含 Struts 的标准配置设置,您不必为 99.99% 的项目修改这些设置。出于这个原因,我们不会对此文件进行过多的详细介绍。如果您有兴趣,请查看default.properties 文件在 struts2-core-2.2.3.jar 文件中可用。 -
Struts-config.xml 文件
struts-config.xml 配置文件是 Web Client 中 View 和 Model 组件之间的链接,但您不必为 99.99% 的项目修改这些设置。配置文件基本上包含以下主要元素 -序号 拦截器和描述 1 struts-config这是配置文件的根节点。2 form-beans这是您将 ActionForm 子类映射到名称的地方。在 strutsconfig.xml 文件的其余部分,甚至在 JSP 页面上,您都使用此名称作为 ActionForm 的别名。3 global forwards本节将您的 web 应用程序上的页面映射到一个名称。您可以使用此名称来引用实际页面。这可以避免在您的网页上硬编码 URL。4 action-mappings这是您声明表单处理程序的地方,它们也称为动作映射。5 controller本节配置 Struts 内部,在实际情况中很少使用。6 plug-in此部分告诉 Struts 在哪里可以找到您的属性文件,其中包含提示和错误消息以下是示例 struts-config.xml 文件 -<?xml version = "1.0" Encoding = "utf-8" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd"> <struts-config> <!-- ========== Form Bean Definitions ============ --> <form-beans> <form-bean name = "login" type = "test.struts.LoginForm" /> </form-beans> <!-- ========== Global Forward Definitions ========= --> <global-forwards> </global-forwards> <!-- ========== Action Mapping Definitions ======== --> <action-mappings> <action path = "/login" type = "test.struts.LoginAction" > <forward name = "valid" path = "/jsp/MainMenu.jsp" /> <forward name = "invalid" path = "/jsp/LoginView.jsp" /> </action> </action-mappings> <!-- ========== Controller Definitions ======== --> <controller contentType = "text/html;charset = UTF-8" debug = "3" maxFileSize = "1.618M" locale = "true" nocache = "true"/> </struts-config>
有关 struts-config.xml 文件的更多详细信息,请查看您的 struts 文档。 -
Struts.properties 文件
此配置文件提供了一种更改框架默认行为的机制。实际上,包含在其中的所有属性struts.properties 配置文件也可以在 web.xml 使用 init-param, 以及在 struts.xml配置文件。但是,如果您希望将这些内容分开并更加具体,那么您可以在文件夹下创建此文件WEB-INF/classes.此文件中配置的值将覆盖中配置的默认值 default.properties它包含在 struts2-core-xyzjar 发行版中。有几个属性可以考虑使用struts.properties 文件 -### When set to true, Struts will act much more friendly for developers struts.devMode = true ### Enables reloading of internationalization files struts.i18n.reload = true ### Enables reloading of XML configuration files struts.configuration.xml.reload = true ### Sets the port that the server is run on struts.url.http.port = 8080
这里任何以开头的行 hash (#) 将被假定为注释,它将被忽略 Struts 2.