- Struts 2 教程
- Struts2 - 主页
- Struts2 - 基本 MVC 架构
- Struts2 - 概述
- Struts2 - 环境设置
- Struts2 - 架构
- Struts2 - 示例
- Struts2 - 配置
- Struts2 - 动作
- Struts2 - 拦截器
- Struts2 - 结果类型
- Struts2 - 价值堆栈/OGNL
- Struts2 - 文件上传
- Struts2 - 数据库访问
- Struts2 - 发送电子邮件
- Struts2 - 验证
- Struts2 - 本地化
- Struts2 - 类型转换
- Struts2 - 主题/模板
- Struts2 - 异常处理
- Struts2 - 注释
- Struts 2 集成
- Struts2-Spring
- Struts2 - 瓷砖
- Struts2-Hibernate
- Struts 2 有用资源
- Struts2 - 问题与解答
- Struts2 - 快速指南
- Struts2 - 有用的资源
- Struts2 - 讨论
Struts 2 - 配置文件
本章将带您完成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类的条目 。需要在文件夹WebContent/WEB-INF下创建 web.xml 文件。
如果您在没有模板或生成它的工具(例如 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.tutorialspoint.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 | 姓名(必填) 包的唯一标识符 |
2 | 延伸 这个包是从哪个包扩展而来的?默认情况下,我们使用 struts-default 作为基础包。 |
3 | 抽象的 如果标记为 true,则该包不可供最终用户使用。 |
4 | 名称空间 操作的唯一命名空间 |
常量标签以及 name 和 value 属性应该用于覆盖default.properties中定义的以下任何属性,就像我们刚刚设置struts.devMode属性一样。设置struts.devMode属性允许我们在日志文件中看到更多调试消息。
我们定义对应于我们想要访问的每个 URL 的操作标签,并定义一个带有execute() 方法的类,每当我们访问相应的 URL 时就会访问该方法。
结果决定执行操作后返回到浏览器的内容。从操作返回的字符串应该是结果的名称。结果按上面的操作进行配置,或者作为“全局”结果,可用于包中的每个操作。结果具有可选的名称和类型属性。默认名称值为“成功”。
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% 的项目触及这些设置。因此,我们不会详细介绍该文件。如果您有兴趣,请查看struts2-core-2.2.3.jar 文件中提供的default.properties文件。
Struts-config.xml 文件
struts-config.xml 配置文件是 Web 客户端中视图和模型组件之间的链接,但对于 99.99% 的项目,您不必触及这些设置。
配置文件基本上包含以下主要元素 -
先生编号 | 拦截器和描述 |
---|---|
1 | struts 配置 这是配置文件的根节点。 |
2 | 表单bean 您可以在此处将 ActionForm 子类映射到名称。您可以在 strutsconfig.xml 文件的其余部分甚至 JSP 页面上使用该名称作为 ActionForm 的别名。 |
3 | 全球前锋 此部分将 Web 应用程序上的页面映射到名称。您可以使用此名称来引用实际页面。这可以避免在网页上对 URL 进行硬编码。 |
4 | 动作映射 这是您声明表单处理程序的地方,它们也称为操作映射。 |
5 | 控制器 本节配置 Struts 内部结构,在实际情况中很少使用。 |
6 | 插入 本节告诉 Struts 在哪里可以找到属性文件,其中包含提示和错误消息 |
以下是示例 struts-config.xml 文件 -
<?xml version = "1.0" Encoding = "ISO-8859-1" ?> <!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 文件
该配置文件提供了一种更改框架默认Behave的机制。实际上, struts.properties配置文件中包含的所有属性也可以使用init-param在web.xml中进行配置,也可以使用struts.xml配置文件中的常量标签进行配置。但是,如果您希望将这些内容分开并让 struts 更具体,那么您可以在文件夹WEB-INF/classes下创建此文件。
该文件中配置的值将覆盖 struts2-core-xyzjar 发行版中包含的default.properties中配置的默认值。您可以考虑使用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
这里任何以井号(#) 开头的行都将被假定为注释,并且将被Struts 2忽略。