當前位置:首頁 » struts2教學 » Struts2結果和結果類型

Struts2結果和結果類型

Struts2結果和結果類型-正如前麵提到的,標簽Struts2的MVC框架的視圖中所扮演的角色。動作是負責執行業務邏輯。執行業務邏輯後,下一步是使用標簽顯示視圖。

正如前麵提到的,<results>標簽Struts2的MVC框架的視圖中所扮演的角色。動作是負責執行業務邏輯。執行業務邏輯後,下一步是使用<result>標簽顯示視圖。

經常有一些導航規則附加的結果。例如,如果在動作方法是對用戶進行驗證,有三種可能的結果。 

(a)成功登錄

(b)失敗的登錄 - 用戶名或密碼不正確

(c)帳戶鎖定。
動作方法在這種情況下,將配置有三種可能的結果字符串和三種不同的視圖呈現結果。我們已經看到,在前麵的例子。

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

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

調度結果類型:

調度(dispatcher)的結果類型是默認的類型,是用來指定,如果冇有其他的結果類型。它被用來轉發到一個servletJSPHTML頁麵,等等,在服務器上。它使用RequestDispatcher.forward()方法。

在我們前麵的例子中,我們看到了“shorthand”的版本,在這裡我們提供了一個JSP的路徑作為body的結果標記。

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

我們也可以指定JSP文件中使用一個<param name="location">的標簽內的<result...>元素如下:

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

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

FreeMaker結果類型:

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

Hello World ${name}

在此以上的文件是一個模板,其中名稱是使用已定義的動作外,將通過放慢參數。在CLASSPATH中將保存該文件。接下來,讓我們修改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" type="freemarker">
            <param name="location">/hello.fm</param>
         </result>
      </action>
      
   </package>

</struts>

讓我們保持我們的HelloWorldAction.java,HelloWorldAction.jsp和index.jsp文件,為我們創造了他們的例子章。現在,右鍵點擊項目名稱,並單擊“導出”> WAR文件創建一個WAR文件。然後,這WAR部署在Tomcat的webapps目錄下。最後,啟動Tomcat服務器,並嘗試訪問URL http://localhost:8080/HelloWorldStruts2/index.jsp。這會給你以下畫麵:

輸入值"Struts2" 並提交頁麵。您應該看到下一頁

正如你可以看到,這是完全一樣的不同之處在於,我們是不依賴於使用JSP作為視圖技術的JSP視圖。在這個例子中,我們已經使用Freemaker。

重定向結果類型:

重定向結果的類型調用標準response.sendRedirect()方法,使瀏覽器來創建一個新的請求給定的位置。
我們可以提供的位置無論是在體內的<result...>元素或作為一個<param name="location">元素。重定向也支持解析的參數。下麵是一個例子使用XML配置:

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

因此,隻要修改struts.xml文件中定義重定向上述類型,並創建一個新的的文件NewWorld.jpg在那裡你會被重定向hello操作時,將返回成功。您可以查看Struts2重定向動作 例子更好地理解。