當前位置:首頁 » struts2教學 » Struts2配置文件

Struts2配置文件

Struts2配置文件-本章將帶你通過一個Struts2應用程序所需的基本配置。在這裡,我們將看到什麼將被配置在一些重要的配置文件: web.xml, struts.xml, struts-config.xml 和 struts.properties

本章將帶你通過一個Struts2應用程序所需的基本配置。在這裡,我們將看到什麼將被配置在一些重要的配置文件: 

web.xml, struts.xml, struts-config.xml 和 struts.properties

接下來使用web.xml和struts.xml中的配置文件,並在前麵的章節中,你已經看到我們的例子中使用這兩個文件的工作,但讓我解釋一下其他文件,以及為你講解其它知識。

web.xml文件:

在web.xml配置文件是一個的J2EE配置文件,決定如何處理的HTTP請求的servlet容器的元素。它不是嚴格意義上的Struts2的配置文件,但它是一個文件,需要配置Struts2的工作。

正如前麵所討論的,此文件提供任何Web應用程序的入口點。Struts2的應用程序的入口點,將是一個部署描述符(web.xml)中定義的過濾器。因此,我們將FilterDispatcher排類在web.xml中定義的入口。需要創建文件夾的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.xml文件:

struts.xml文件中包含的配置信息,你將修改所采取的措施的開發。這個文件可以被用來覆蓋默認設置的應用程序,例如struts.devMode=false和其他設置中定義的屬性文件。這個文件可以創建文件夾WEB-INF/classes

讓我們一起來看看我們在struts.xml文件中創建Hello World的例子,就像我們在前麵的章節中的解釋。

<?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 -by www.gitbook.net/struts2 -->

   </package>
   <-- more packages can be listed here -->
</struts>

首先要注意的是DOCTYPE。所有的Struts配置文件中需要有正確的DOCTYPE,在我們的小例子所示。 <struts>是根標記的元素,我們聲明使用不同的包<package>標簽。其中,<package>允許分離和模塊化的配置。這是非常有用的,當你有一個大的項目,項目被劃分成不同的模塊。

再說了,如果你的項目有三個域 - business_applicaiton,customer_application和staff_application,你可以創建三個包,在適當的包裝和存儲相關的動作。包裝標簽具有以下屬性:

Attribute Description
name (required) The unique identifier for the package
extends Which package does this package extend from? By default, we use struts-default as the base package.
abstract If marked true, the package is not available for end user consumption.
namesapce Unique namespace for the actions

constant常量標簽name和value屬性將被用來覆蓋的default.properties中定義的屬性,就像剛才設置struts.devModeproperty。設置struts.devMode屬性,讓我們看到了更多的調試信息在日誌文件中。

我們定義動作標記對應的每一個URL,我們想訪問我們定義了一個類的execute()方法,將訪問時,我們將訪問相應的URL。

結果確定什麼被返回到瀏覽器的一個動作後執行。從操作返回的字符串應該是一個結果的名稱。結果如上配置的每次動作,或作為一個“global”的結果,在包中的每一個動作可。結果有可選的名稱和類型的屬性。默認名稱值是“success”。

隨著時間的推移,struts.xml文件可以做大,打破它包的模塊化是一種方式,但支柱提供了另一種模塊化的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客戶端組件的視圖和模型之間的聯係,但你的項目的99.99%不會碰這些設置。基本的配置文件包含以下主要內容:

SN Interceptor & Description
1 struts-config
This is the root node of the configuration file.
2 form-beans
This is where you map your ActionForm subclass to a name. You use this name as an alias for your ActionForm throughout the rest of the struts-config.xml file, and even on your JSP pages.
3 global forwards
本節映射在你的web應用的名稱。您可以使用這個名稱,是指實際的頁麵。這就避免了硬編碼在您的網頁的URL。
4 action-mappings
This is where you declare form handlers and they are also known as action mappings.
5 controller
This section configures Struts internals and rarely used in practical situations.
6 plug-in
This section tells Struts where to find your properties files, which contain prompts and error messages

下麵是示例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中的配置文件中使用恒定的標簽。但如果你喜歡的東西保持獨立和多支柱的具體,那麼你可以創建此文件在folderWEB-INF/classes目錄

在這個文件中配置的值將覆蓋默認值配置在default.properties這是包含在Struts2的核心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

任何與井號(#)開頭的行會被假定為注釋,將被Struts2忽略。