鍍金池/ 教程/ Java/ Struts2 結(jié)果和結(jié)果類型
設(shè)置復(fù)選框的默認(rèn)值
<s:if>, <s:elseIf>, <s:else> 標(biāo)簽示例
下拉框示例
Struts2 &lt;s:bean&gt;標(biāo)簽示例
Struts2 &lt;s:date&gt;標(biāo)簽示例
<s:text>標(biāo)簽示例
Struts2的ActionError&ActionMessage示例
Struts2 MySQL數(shù)據(jù)庫(kù)訪問(wèn)
Struts2上傳多個(gè)文件例子
Struts2+Log4j集成
Struts 2 hello world (XML版本)
Struts2和Spring集成
Struts2 控件標(biāo)簽
Struts2 和 JSON 實(shí)例
Struts2 環(huán)境配置
Struts2 &lt;s:checkboxlist&gt;多個(gè)復(fù)選框例子
Struts2 注釋類型
在Struts2中配置靜態(tài)參數(shù)
Struts2 驗(yàn)證框架
Struts2 param 標(biāo)簽
Struts2 &lt;s:hidden&gt;隱藏值例子
Struts2下載文件實(shí)例
Struts2 &lt;sx:autocompleter&gt;自動(dòng)提示例子
Struts2 action標(biāo)簽
autocompleter自動(dòng)完成示例
Struts2 merge標(biāo)簽
Struts2 &lt;s:action&gt;標(biāo)簽示例
<s:property>標(biāo)簽示例
Struts2 &lt;s:sort&gt;標(biāo)簽示例
Struts2和Hibernate集成
自動(dòng)選擇下拉框示例
Struts2 結(jié)果和結(jié)果類型
Struts2 是什么?
如何刪除Struts2動(dòng)作的后綴擴(kuò)展名
Struts2 Hello World 實(shí)例
<s:action>標(biāo)簽示例
<s:bean>標(biāo)簽示例
Struts2 + Quartz調(diào)度集成實(shí)例
如何獲取ServletContext對(duì)象
Struts2 &lt;s:i18n&gt;標(biāo)簽示例
Struts2 append標(biāo)簽
i18n 或本地化示例
autocompleter + JSON 示例
Struts2獲取HttpServletRequest實(shí)例
updownselect 示例
Struts2 &lt;s:debug&gt;標(biāo)簽示例
Struts2重寫攔截器參數(shù)
多個(gè)Struts配置文件示例
<s:i18n>標(biāo)簽示例
Struts2中文本地化問(wèn)題
文件上傳示例
Struts2 &lt;s:property&gt;標(biāo)簽實(shí)例
Struts2攔截器棧的例子
<s:merge>標(biāo)簽示例
Struts2 數(shù)據(jù)標(biāo)簽
Struts2 &lt;s:merge&gt;標(biāo)簽示例
復(fù)選框checkboxes 示例
Struts2 generator標(biāo)簽
如何配置Struts2全局資源包
key 屬性示例
Struts2 注釋
FilterDispatcher 和 StrutsPrepareAndExecuteFilter區(qū)別?
Struts 2 Hello World (注解版本)
Struts 2 + Log4j 集成實(shí)例
Struts2 值棧/OGNL
Struts2配置Action類的靜態(tài)參數(shù)
Struts2 本地化/國(guó)際化(i18n)
Chinese 本地化問(wèn)題
Struts2單選預(yù)選按鈕值
Struts2 include標(biāo)簽
Struts2 + Hibernate 集成實(shí)例
配置全局資源包
Struts2 異常處理
Struts2 &lt;s:set&gt;標(biāo)簽示例
Struts2 &lt;s:doubleselect&gt;示例
Struts2 iterator標(biāo)簽
optiontransferselect 示例
Struts2映射攔截動(dòng)作
head 示例
Struts2+Hibernate使用Full Hibernate Plugin集成
Struts2命名空間配置和解釋
<s:param>標(biāo)簽示例
Struts2+Hibernate集成實(shí)例
Struts2 &lt;s:head&gt;示例
Struts2 &lt;s:push&gt;標(biāo)簽示例
Struts2文件上傳例子
Struts2 &lt;s:param&gt;標(biāo)簽示例
@ResultPath 注釋示例
Struts2 體系結(jié)構(gòu)
Struts2 execAndWait攔截器例子
Struts2 攔截器
Textarea - 文本域
Struts2教程
<s:push>標(biāo)簽示例
Struts2 文件上傳
Struts2 date 標(biāo)簽
Struts2 &lt;s:texttag&gt;標(biāo)簽示例
Struts2+Quartz2調(diào)度集成實(shí)例
Struts2開(kāi)發(fā)模式
Struts2 autocompleter+JSON例子
Struts2 類型轉(zhuǎn)換
<s:url>標(biāo)簽示例
Struts2 Ajax 標(biāo)簽
Struts2 bean 標(biāo)簽
<s:iterator>標(biāo)簽迭代示例
Hidden隱藏值示例
在Struts2獲取HttpServletResponse對(duì)象
Struts2 主題和模板
Struts2自動(dòng)選擇下拉框的值
Struts2下載文件實(shí)例
在Struts2中獲取 HttpServletRequest
級(jí)聯(lián)選擇示例
Struts2 &lt;sx:datetimepicker&gt;示例
Struts2 include(包含)多個(gè)配置文件
Struts2 &lt;s:select&gt;下拉框例子
Struts2 Action/動(dòng)作
Struts2 &lt;s:textarea&gt;文本域?qū)嵗?/span>
Struts2+Spring集成實(shí)例
Struts2 &lt;s:updownselect&gt;示例
Struts2 property 標(biāo)簽
Struts2 &lt;s:url&gt;標(biāo)簽示例
Struts2 表單標(biāo)簽
Struts2資源包使用示例
subset tag example
Struts 2 ActionError &amp; ActionMessage Example
Struts2 MVC架構(gòu)
Struts2 if/else標(biāo)簽
Struts2 &lt;s:generator&gt;標(biāo)簽示例
<s:include>標(biāo)簽示例
Struts2開(kāi)發(fā)者模式
<s:generator> 標(biāo)簽示例
復(fù)選框heckbox 示例
Struts2 text 標(biāo)簽
Radio 單選按鍵示例
Struts2 &lt;s:a&gt;標(biāo)簽示例
Struts2 key鍵屬性示例
Struts2設(shè)置多個(gè)復(fù)選框缺省值
Struts2 基于XML校驗(yàn)
Struts2 配置文件
Struts2 &lt;s:radio&gt;單選按鈕例子
Struts2 發(fā)送郵件Email
Struts2獲取HttpServletResponse實(shí)例
<s:sort>標(biāo)簽示例
Struts2 &lt;s:optiontransferselect&gt;示例
Struts2和Tiles集成
Struts2模型驅(qū)動(dòng)實(shí)例
Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什么不同?
<s:append>標(biāo)簽示例
組合框示例
Struts2 &lt;s:password&gt;密碼示例
datetimepicker 日期選擇
Struts2 &lt;s:iterator&gt;迭代器標(biāo)簽示例
TextBox文檔示例
Struts2 url標(biāo)簽
資源包使用示例
Struts2本地化和國(guó)際化
Struts2 &lt;s:subset&gt;標(biāo)簽示例
Struts2 + Hibernate使用“Full Hibernate Plugin"插件集成
Struts2和JSON實(shí)例
Struts2注解示例
Struts2 &lt;s:checkbox&gt;復(fù)選框例子
Struts2快速入門
<s:date>標(biāo)簽示例
Struts2 set 標(biāo)簽
<s:set>標(biāo)簽示例
Struts2 命名空間配置和解釋
Struts 2 hello world (XML版本)
&nbsp;預(yù)選單選按鈕
<s:a>標(biāo)簽示例
Struts2+Spring+Hibernate集成實(shí)例
Struts2 &lt;s:combobox&gt;組合框的例子
Struts2 if,elseif,else標(biāo)簽示例
Struts2 @ResultPath注釋示例
struts2 &lt;s:append&gt;標(biāo)簽示例
Struts2 &lt;s:textfield&gt;文本示例
多文件上傳示例
使用Struts2動(dòng)作
<s:debug>標(biāo)簽示例
在Struts2中如何獲取ServletContext對(duì)象
Struts2 &lt;s:include&gt;標(biāo)簽示例
Password 示例

Struts2 結(jié)果和結(jié)果類型

正如前面提到的,<results>標(biāo)簽在Struts2的MVC框架的視圖中所扮演的角色。動(dòng)作是負(fù)責(zé)執(zhí)行業(yè)務(wù)邏輯。執(zhí)行業(yè)務(wù)邏輯后,接下來(lái)的步驟是使用<results>標(biāo)簽顯示的視圖。 

經(jīng)常有一些附帶導(dǎo)航規(guī)則的結(jié)果。例如,如果在操作方法是對(duì)用戶進(jìn)行驗(yàn)證,有三種可能的結(jié)果。 (一)成功登錄;(二)不成功的登錄,用戶名或密碼錯(cuò)誤;(三)帳戶鎖定。

在這種情況下的動(dòng)作方法將被配置呈現(xiàn)的結(jié)果有三種可能的結(jié)果字符串和三個(gè)不同的看法。我們已經(jīng)看到在前面的例子。

但是,Struts2 不配合使用JSP作為視圖技術(shù)。畢竟MVC范例的整個(gè)目的是保持獨(dú)立的層,高度可配置的。例如,對(duì)于一個(gè)Web2.0的客戶端,可能希望返回XML或JSON作為輸出。在這種情況下,可以創(chuàng)建一個(gè)新的結(jié)果類型為XML或JSON和實(shí)現(xiàn)這一目標(biāo)。

Struts的一些預(yù)定義的結(jié)果類型,無(wú)論我們已經(jīng)看到了,這是默認(rèn)的結(jié)果類型,它是用來(lái)調(diào)度調(diào)度到JSP頁(yè)面。 Struts 允許使用其它標(biāo)記語(yǔ)言的技術(shù)呈現(xiàn)的結(jié)果和流行的選擇,包括 Velocity, Freemaker, XSLT 和Tiles.

分發(fā)結(jié)果類型:

調(diào)度程序的結(jié)果類型是缺省類型,并使用,如果沒(méi)有其他的結(jié)果類型被指定。它被用來(lái)轉(zhuǎn)發(fā)到一個(gè)servlet,JSP,HTML頁(yè)面,等等,在服務(wù)器上。它使用RequestDispatcher.forward()方法。

在我們前面的例子中,我們看到了“shorthand”的版本,在那里我們提供了身體的結(jié)果標(biāo)簽 JSP路徑。

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

我們也可以指定JSP文件中使用一個(gè)<param name="location">的標(biāo)簽內(nèi)<result...>的元素如下:

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

我們還可以提供一個(gè)分析參數(shù),默認(rèn)為true。解析參數(shù)位置參數(shù)決定是否將被解析為OGNL表達(dá)式。

FreeMaker結(jié)果類型:

在這個(gè)例子中,我們將看到我們?nèi)绾问褂肍reeMaker作為視圖技術(shù)。 freemaker是一種流行的模板引擎,用于使用預(yù)定義的模板來(lái)生成輸出。讓我們Freemaker模板創(chuàng)建一個(gè)文件稱為hello.fm以下內(nèi)容:

Hello World ${name}

在這里,上述文件是一個(gè)模板的名字是從外面使用已定義的動(dòng)作,將傳遞一個(gè)參數(shù)置。會(huì)保持這個(gè)文件在CLASSPATH中。接下來(lái),讓我們修改struts.xml中指定結(jié)果如下:

<?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.yiibai.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文件?,F(xiàn)在右鍵點(diǎn)擊項(xiàng)目名稱,并單擊Export > WAR File創(chuàng)建一個(gè)WAR文件。然后部署這個(gè)WAR在Tomcat的webapps目錄下。最后,啟動(dòng)Tomcat服務(wù)器和嘗試訪問(wèn)URL http://localhost:8080/HelloWorldStruts2/index.jsp。這會(huì)給出以下畫面: 

Hello World Input

輸入一個(gè)值“Struts2”,并提交頁(yè)面。應(yīng)該看到翻頁(yè)

Hello World Result

正如看到,這是完全一樣的JSP視圖,但我們是不依賴于使用JSP作為視圖技術(shù)。在這個(gè)例子中,我們已經(jīng)使用Freemaker。

重定向結(jié)果類型:

重定向的結(jié)果類型,調(diào)用的是標(biāo)準(zhǔn)response.sendRedirect() 方法,使瀏覽器建立一個(gè)新的請(qǐng)求發(fā)送到給定的位置。

我們可以提供無(wú)論是在體內(nèi)的<result...>元素或作為一個(gè)<param name="location">的元素的位置。還支持重定向解析參數(shù)。下面是一個(gè)例子使用XML配置:

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

因此,只要修改struts.xml文件,定義如上所述重定向類型,并創(chuàng)建一個(gè)新的文件,在那里會(huì)被重定向 Hello時(shí)動(dòng)作將返回成功到NewWorld.jpg。也可以checkStruts2 重定向操作的例子,為了更好的理解。