- Struts 2 教程
- Struts 2 - 首页
- Struts 2 - 基本 MVC 架构
- Struts 2 - 概述
- Struts 2 - 环境设置
- Struts 2 - 架构
- Struts 2 - 示例
- Struts 2 - 配置
- Struts 2 - Action
- Struts 2 - 拦截器
- Struts 2 - 结果类型
- Struts 2 - 值栈/OGNL
- Struts 2 - 文件上传
- Struts 2 - 数据库访问
- Struts 2 - 发送邮件
- Struts 2 - 验证
- Struts 2 - 本地化
- Struts 2 - 类型转换
- Struts 2 - 主题/模板
- Struts 2 - 异常处理
- Struts 2 - 注解
- Struts 2 集成
- Struts 2 - Spring
- Struts 2 - Tiles
- Struts 2 - Hibernate
- Struts 2 有用资源
- Struts 2 - 问答
- Struts 2 - 快速指南
- Struts 2 - 有用资源
- Struts 2 - 讨论
Struts 2 - 配置文件
本章将引导您完成Struts 2应用程序所需的基本配置。在这里,我们将了解如何使用一些重要的配置文件(如web.xml、struts.xml、strutsconfig.xml和struts.properties)进行配置。
老实说,您只需使用web.xml和struts.xml配置文件即可开始工作(正如您在上一章中已经看到的那样,我们的示例使用了这两个文件)。但是,为了您的了解,我们也将解释其他文件。
web.xml 文件
web.xml配置文件是J2EE配置文件,它确定servlet容器如何处理HTTP请求的元素。它并非严格意义上的Struts 2配置文件,但它是Struts 2运行所需的一个文件。
如前所述,此文件为任何Web应用程序提供了一个入口点。Struts 2应用程序的入口点将在部署描述符(web.xml)中定义的过滤器。因此,我们将在web.xml中定义FilterDispatcher类的条目。web.xml文件需要创建在WebContent/WEB-INF文件夹下。
如果您是从头开始,没有使用生成它的模板或工具(例如Eclipse或Maven 2),那么这是您需要配置的第一个配置文件。
以下是我们在上一个示例中使用的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文件包含您在开发Action时将修改的配置信息。此文件可用于覆盖应用程序的默认设置,例如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配置文件都需要具有正确的DOCTYPE,如我们的示例所示。
例如,如果您的项目有三个域——business_application、customer_application和staff_application,那么您可以创建三个包并将相关的Action存储在相应的包中。
package标签具有以下属性:
序号 | 属性及描述 |
---|---|
1 | name (必需) 包的唯一标识符 |
2 | extends 此包扩展自哪个包?默认情况下,我们使用struts-default作为基本包。 |
3 | abstract 如果标记为true,则该包不可用于最终用户使用。 |
4 | namespace Action的唯一命名空间 |
constant标签与name和value属性一起使用,可以覆盖default.properties中定义的任何属性,就像我们刚刚设置struts.devMode属性一样。设置struts.devMode属性允许我们在日志文件中看到更多调试信息。
我们为每个要访问的URL定义action标签,并定义一个包含execute()方法的类,该方法将在我们访问相应的URL时被访问。
结果决定在执行Action后返回给浏览器的內容。Action返回的字符串应该是结果的名称。结果按上述方式为每个Action配置,或作为“全局”结果,可用于包中的每个Action。结果具有可选的name和type属性。默认名称值为“success”。
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-config 这是配置文件的根节点。 |
2 | form-beans 在这里,您可以将ActionForm子类映射到名称。您在strutsconfig.xml文件的其余部分甚至在JSP页面上都使用此名称作为ActionForm的别名。 |
3 | global forwards 此部分将Web应用程序上的页面映射到名称。您可以使用此名称来引用实际页面。这避免了在网页上硬编码URL。 |
4 | action-mappings 在这里,您可以声明表单处理程序,它们也被称为Action映射。 |
5 | controller 此部分配置Struts内部结构,在实际情况中很少使用。 |
6 | plug-in 此部分告诉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 文件
此配置文件提供了一种更改框架默认行为的机制。实际上,struts.properties配置文件中包含的所有属性也可以在web.xml中使用init-param进行配置,也可以在struts.xml配置文件中使用constant标签进行配置。但是,如果您希望将这些内容分开,并使其更特定于Struts,则可以在WEB-INF/classes文件夹下创建此文件。
在此文件中配置的值将覆盖default.properties中配置的默认值,后者包含在struts2-core-x.y.z.jar发行版中。您可以考虑使用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忽略。