結果型別
結果型別中常用的有四種:dispatcher、redirect、redirectaction和chain。
dispatcher **到某乙個頁面
redirect 重定向到某乙個頁面
redirectaction 重定向到某乙個action (主要用於action的鏈式處理)
chain **到某乙個action
第1種:dispatcher
dispatcher也是框架預設的結果型別,其實現類是org.apache.struts2.dispatcher.servletdispatcherresult,該類中有兩個屬性:location和parse。它們也可以在struts.xml檔案中直接配置:
<result
type
="dispatcher"
>
<
param
name
="location"
>/success.jsp
param
>
<
param
name
="parse"
>true
param
>
result
>
其中的location引數用於指定資源的實際位置,該引數也是框架預設新增的;parse屬性是乙個布林型別的值,如果為true,則解析location引數中的ognl表示式;如果為false,則不解析。parse屬性的預設值就是true.
第2種:redirect
當使用該結果型別的時候,框架後台會使用response物件的sendredirect方法進行重定向
**和重定向的區別:
1.重定向會發生兩次請求,**只會發生一次請求
2.重定向的時候,瀏覽器的位址列會發生變化,而**位址列是無變化的
3.重定向的實質是伺服器告訴瀏覽器去另外的地方尋找資源,所以位址列會發生變化,而**是在伺服器內部發生的,所以位址列不會發生變化
4.由於重定向是兩次請求,所以第二次請求會話儲存的資訊是無效的,而**的時候,會話仍然有效,因為仍然是原來的請求。
如果需要在重定向的時候把原來的有關資訊傳送到重定向後的頁面中,則需要使用ognl表示式$(比如在登入成功後重定向到歡迎頁面,在歡迎頁面就可以使用ognl表示式把使用者名稱傳遞過去)
比如下面的配置:
<
action
name
="login"
class
="action.loginaction"
>
<
result
type
="redirect"
>/success.jsp?user.username=$
result
>
<
result
name
="error"
>/error.jsp
result
>
action
>
在登入成功之後重定向到success.jsp頁面的時候,可以觀察到瀏覽器的位址列把使用者名稱作為引數傳遞到success.jsp頁面。
第3種:redirectaction
此種結果型別與redirect一樣,底層都是呼叫response物件的sendredirect方法進行重定向的
這兩者的區別是redirect結果型別一般是針對檢視的,而redirectaction則是重定向到某個action,所以如果在action處理之後還要交給另乙個action繼續處理,那麼使用redirecaction結果型別。
redirecaction結果型別有兩個引數:actionname(指定需要重定向的action)和namespace(指定action所在的命名空間,如果沒有指定該引數,框架會從預設的namespace中去尋找)。比如下面的配置:
<
action
name
="hello"
class
="example.helloworld"
>
<
result
type
="redirectaction"
>
<
param
name
="actionname"
>useraction
param
>
<
param
name
="namespace"
>/user
param
>
result
>
action
>
<
action
name
="login"
class
="action.loginaction"
>
<
result
type
="redirect"
>/success.jsp?user.username=$
result
>
<
result
type
="redirectaction"
>
<
param
name
="actionname"
>error
param
>
result
>
action
>
<
action
name
="error"
>
<
result
>/error.jsp
result
>
action
>
第4種:chain
將請求**到某乙個action中,引數如dispatcheraction
全域性結果
全域性結果的的主要作用是,在有多個action都需要返回到某個頁面的時候,就可以全域性結果。比如在電商**購物的時候,檢視訂單,新增商品到購物車都需要先登入,那麼就可以把登入作為乙個全域性結果。全域性結果是在包中定義的,這樣該包下的所有action都可以共享該全域性結果了。
配置全域性結果的方式與在action中直接配置result不太一樣,全域性結果是在global-results標籤中定義的。比如下面的配置:
<
global-results
>
<
result
name
="error"
>/error.jsp
result
>
<
result
name
="login"
type
="redirectaction"
>login!login
result
>
global-results
>
struts2中之action返回結果
action返回結果的四種方式 1.action方法返回乙個字串 這個返回的字串與 struts.xml 的乙個 action配置相匹配。2.使用code behind外掛程式 當使用這個外掛程式的時候,它會將 action的名字和action返回的結果字串進行連線來得到檢視模 板。比如說,如果ur...
返回結果集
最近做的幾個專案都是前後端分離。所以返回結果集基本都會由乙個結果集包裝一下,返回給前台。在做乙個專案時候,尤其是前後臺分離的專案,乙個統一標準的結果集更利於和前天開發人員的交流。當然前後天不分離的醒目也可以使用乙個統一標準的結果集,有利於專案的健壯性。下面是 http請求返回最外層物件 versio...
try finaly return返回結果
下面 執行結果是 finally語句塊 和是 43public class test catch exception e finally return 0 public static void main string ar 解釋 從結果上看,貌似finally裡的語句是在return之後執行的,其實...