Struts2教學
Struts2快速入門
Struts2 MVC架構
Struts2 是什麼?
Struts2 環境配置
Struts2 體系結構
Struts2 Hello World 實例
Struts2 配置文件
Struts2 Action/動作
Struts2 攔截器
Struts2 結果和結果類型
Struts2 值棧/OGNL
Struts2 文件上傳
Struts2 MySQL數據庫訪問
Struts2 發送郵件Email
Struts2 驗證框架
Struts2 基於XML校驗
Struts2 本地化/國際化(i18n)
Struts2 類型轉換
Struts2 主題和模板
Struts2 異常處理
Struts2 註釋
Struts2 註釋類型
Struts2 控件標籤
Struts2 iterator標籤
Struts2 if/else標籤
Struts2 merge標籤
Struts2 append標籤
Struts2 generator標籤
Struts2 數據標籤
Struts2 action標籤
Struts2 include標籤
Struts2 bean 標籤
Struts2 date 標籤
Struts2 param 標籤
Struts2 property 標籤
Struts2 set 標籤
Struts2 text 標籤
Struts2 url標籤
Struts2 表單標籤
Struts2 Ajax 標籤
Struts2和Spring集成
Struts2和Tiles集成
Struts2和Hibernate集成
Struts 2 hello world (XML版本)
Struts2註解示例
Struts2 @ResultPath註釋示例
Struts2 include(包含)多個配置文件
Struts2命名空間配置和解釋
Struts2開發者模式
如何刪除Struts2動作的後綴擴展名
使用Struts2動作
Struts2的ActionError&ActionMessage示例
Struts2模型驅動實例
Struts2映射攔截動作
Struts2重寫攔截器參數
Struts2攔截器棧的例子
Struts2 execAndWait攔截器例子
Struts2 <s:textfield>文本示例
Struts2 <s:password>密碼示例
Struts2 <s:hidden>隱藏值例子
Struts2 <s:textarea>文本域實例
Struts2 <s:radio>單選按鈕例子
Struts2單選預選按鈕值
Struts2 <s:checkbox>複選框例子
Struts2設置多個複選框缺省值
Struts2 <s:checkboxlist>多個複選框例子
Struts2 <s:select>下拉框例子
Struts2自動選擇下拉框的值
Struts2 <s:combobox>組合框的例子
Struts2 <s:head>示例
Struts2文件上傳例子
Struts2上傳多個文件例子
Struts2 <s:doubleselect>示例
Struts2 <s:updownselect>示例
Struts2 <s:optiontransferselect>示例
Struts2 <sx:datetimepicker>示例
Struts2 <sx:autocompleter>自動提示例子
Struts2 autocompleter+JSON例子
Struts2 <s:iterator>迭代器標籤示例
Struts2 if,elseif,else標籤示例
struts2 <s:append>標籤示例
Struts2 <s:generator>標籤示例
Struts2 <s:merge>標籤示例
Struts2 <s:sort>標籤示例
Struts2 <s:subset>標籤示例
Struts2 <s:a>標籤示例
Struts2 <s:action>標籤示例
Struts2 <s:bean>標籤示例
Struts2 <s:date>標籤示例
Struts2 <s:debug>標籤示例
Struts2 <s:include>標籤示例
Struts2 <s:i18n>標籤示例
Struts2 <s:param>標籤示例
Struts2 <s:property>標籤實例
Struts2 <s:push>標籤示例
Struts2 <s:set>標籤示例
Struts2 <s:texttag>標籤示例
Struts2 <s:url>標籤示例
Struts2資源包使用示例
Struts2本地化和國際化
Struts2 key鍵屬性示例
Struts2中文本地化問題
如何配置Struts2全局資源包
Struts2+Spring集成實例
Struts2+Quartz2調度集成實例
Struts2+Hibernate使用Full Hibernate Plugin集成
Struts2+Hibernate集成實例
Struts2+Spring+Hibernate集成實例
Struts2+Log4j集成
Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什麼不同?
Struts2獲取HttpServletRequest實例
Struts2獲取HttpServletResponse實例
如何獲取ServletContext對象
Struts2配置Action類的靜態參數
Struts2下載文件實例
Struts2和JSON實例

Struts2 配置文件

本章將帶你通過一個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)中定義的過濾器。因此,我們將定義在web.xml中的FilterDispatcher是類的項。需要創建的文件夾的WebContent/ WEB-INF下web.xml文件。

這是第一個配置文件,將需要配置,如果沒有一個模板或工具,可生成(如Eclipse或Maven2的)的幫助下開始。以下是web.xml文件中的內容,我們用我們的最後一個例子。

<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"> Struts 2 index.jsp struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*

請注意,我們Struts 2的過濾器映射爲/*, /*.action這意味着所有的URL將被解析struts的過濾器。我們將覆蓋時,我們將通過「註釋」一章。

struts.xml 文件:

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

讓我們來看看在我們struts.xml文件中創建的Hello World的例子在前面的章節中解釋。

<constant name="struts.devMode" value="true" /> <package name="helloworld" extends="struts-default"> <action name="hello" class="com.yiibai.struts2.HelloWorldAction" method="execute"> <result name="success">/HelloWorld.jsp <-- more actions can be listed here --> <-- more packages can be listed here -->

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

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

屬性

描述

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

隨着name和value屬性恆定的標籤將被用於覆蓋default.properties中定義以下屬性,就像我們剛剛設置struts.devMode屬性。 Settingstruts.devMode屬性可以讓我們看到更多的調試消息,在日誌文件中。

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

結果決定得到執行動作後返回給瀏覽器。從操作返回的字符串應該是一個結果的名稱。以上,或者作爲一個「global」的結果,可包中的每一個動作,結果被配置每次動作。結果有可選的名稱和類型屬性。默認名稱的值是「success」。

隨着時間的推移,struts.xml文件可以逐步擴展,打破它包是模塊化的方式之一,但Struts提供了另一種模塊化struts.xml文件。可以將文件分割爲多個XML文件,並以下列方式將它們導入。

<include file="my-struts1.xml"/> <include file="my-struts2.xml"/>

其他的配置文件,我們還沒有涉及到在struts-default.xml中。這個文件包含了Struts的標準配置設置,就不必去觸摸項目的這些99.99%設置。出於這個原因,我們不打算對這個文件介紹太多。如果有興趣,不妨看看到struts2的核心2.2.3.jar文件default.properties文件。

struts-config.xml 文件:

在struts-config.xml 配置文件是在Web客戶端組件的視圖和模型之間的鏈接,但99.99%不會有觸碰這些設置在項目中。基本配置文件包含以下主要內容:

SN

攔截 & 描述

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
This section maps a page on your webapp to a name. You can use this name to refer to the actual page. This avoids hardcoding URLs on your web pages.

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文件:

<form-bean name="login" type="test.struts.LoginForm" /> <action path="/login" type="test.struts.LoginAction" > <forward name="valid" path="/jsp/MainMenu.jsp" /> <forward name="invalid" path="/jsp/LoginView.jsp" /> <controller contentType="text/html;charset=UTF-8" debug="3" maxFileSize="1.618M" locale="true" nocache="true"/>

struts-config.xml文件的更多詳細信息,請查看 Struts 文檔。

struts.properties 文件

此配置文件提供了一種機制來改變框架的默認行爲。 struts.properties配置文件內包含的屬性其實也可以被配置在web.xml中使用init-param中,以及在struts.xml的配置文件中使用恆定的標籤。但如果喜歡保持獨立和特定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

這裏井號(#)開頭的行會被假定作爲註釋,它將被Struts 2忽略。