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的MVC框架的視圖中所扮演的角色。動作是負責執行業務邏輯。執行業務邏輯後,接下來的步驟是使用標籤顯示的視圖。 

經常有一些附帶導航規則的結果。例如,如果在操作方法是對用戶進行驗證,有三種可能的結果。 (一)成功登錄;(二)不成功的登錄,用戶名或密碼錯誤;(三)帳戶鎖定。

在這種情況下的動作方法將被配置呈現的結果有三種可能的結果字符串和三個不同的看法。我們已經看到在前面的例子。

但是,Struts2 不配合使用JSP作爲視圖技術。畢竟MVC範例的整個目的是保持獨立的層,高度可配置的。例如,對於一個Web2.0的客戶端,可能希望返回XML或JSON作爲輸出。在這種情況下,可以創建一個新的結果類型爲XML或JSON和實現這一目標。

Struts的一些預定義的結果類型,無論我們已經看到了,這是默認的結果類型,它是用來調度調度到JSP頁面。 Struts 允許使用其它標記語言的技術呈現的結果和流行的選擇,包括 Velocity, Freemaker, XSLT 和Tiles.

分發結果類型:

調度程序的結果類型是缺省類型,並使用,如果沒有其他的結果類型被指定。它被用來轉發到一個servlet,JSP,HTML頁面,等等,在服務器上。它使用RequestDispatcher.forward()方法。

在我們前面的例子中,我們看到了「shorthand」的版本,在那裏我們提供了身體的結果標籤 JSP路徑。

<result name="success"> /HelloWorld.jsp

我們也可以指定JSP文件中使用一個的標籤內<result...>的元素如下:

<result name="success" type="dispatcher"> <param name="location"> /HelloWorld.jsp </param >

我們還可以提供一個分析參數,默認爲true。解析參數位置參數決定是否將被解析爲OGNL表達式。

FreeMaker結果類型:

在這個例子中,我們將看到我們如何使用FreeMaker作爲視圖技術。 freemaker是一種流行的模板引擎,用於使用預定義的模板來生成輸出。讓我們Freemaker模板創建一個文件稱爲hello.fm以下內容:

Hello World ${name}

在這裏,上述文件是一個模板的名字是從外面使用已定義的動作,將傳遞一個參數置。會保持這個文件在CLASSPATH中。接下來,讓我們修改struts.xml中指定結果如下:

<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" type="freemarker"> <param name="location">/hello.fm

讓我們使用前面的 HelloWorldAction.java,HelloWorldAction.jsp和index.jsp文件。現在右鍵點擊項目名稱,並單擊Export > WAR File創建一個WAR文件。然後部署這個WAR在Tomcat的webapps目錄下。最後,啓動Tomcat服務器和嘗試訪問URL http://localhost:8080/HelloWorldStruts2/index.jsp。這會給出以下畫面: 

Hello

輸入一個值「Struts2」,並提交頁面。應該看到翻頁

Hello

正如看到,這是完全一樣的JSP視圖,但我們是不依賴於使用JSP作爲視圖技術。在這個例子中,我們已經使用Freemaker。

重定向結果類型:

重定向的結果類型,調用的是標準response.sendRedirect() 方法,使瀏覽器建立一個新的請求發送到給定的位置。

我們可以提供無論是在體內的<result...>元素或作爲一個的元素的位置。還支持重定向解析參數。下面是一個例子使用XML配置:

<action name="hello" class="com.yiibai.struts2.HelloWorldAction" method="execute"> <result name="success" type="redirect"> <param name="location"> /NewWorld.jsp </param >

因此,只要修改struts.xml文件,定義如上所述重定向類型,並創建一個新的文件,在那裏會被重定向 Hello時動作將返回成功到NewWorld.jpg。也可以checkStruts2 重定向操作的例子,爲了更好的理解。