struts2高階 5 結果型別

2021-06-29 11:34:15 字數 1694 閱讀 8983

struts2的處理結果標籤是告訴系統下一步是要做什麼。處理結果是通過標籤來實現的。在講述struts2的處理結果前,先講述一下forward和redirect存在著什麼區別。

forward 和 redirect的區別:

簡單的說forward是發生在伺服器內部,客戶端不知道發生了request的轉向。客戶a向伺服器b請求,伺服器b處理完請求並發生forward轉向,請求不會經過客戶端,而是在內部請求另外乙個伺服器資源。對於客戶a來說,該操作是透明的。

redirect則是客戶端a向b請求後,伺服器b處理完請求結果,並把結果返回值客戶端a,並要求客戶端a向伺服器c發出請求。對於客戶端a來說,其實是發生了兩次請求。乙個重要的區別還在於,redirect會重新發起請求,所以會丟失請求引數,請求屬性,action例項和action中封裝的屬性。

分發結果型別:

排程程式的結果型別是預設型別,並使用,如果沒有其他的結果型別被指定。它被用來**到乙個servlet,jsp,html頁面,等等,在伺服器上。它使用requestdispatcher.forward()方法。

看一下帶結果標籤的 jsp路徑:

/helloworld.jsp

我們也可以指定jsp檔案中使用乙個的標籤內的元素如下:

/helloworld.jsp

我們還可以提供乙個分析引數,預設為true。解析引數位置引數決定是否將被解析為ognl表示式。

freemaker結果型別:

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

hello world $
在這裡,上述檔案是乙個模板的名字是從外面使用已定義的動作,將傳遞乙個引數置。會保持這個檔案在classpath中。接下來,讓我們修改struts.xml中指定結果如下:

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

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

重定向結果型別:

重定向的結果型別,呼叫的是標準response.sendredirect() 方法,使瀏覽器建立乙個新的請求傳送到給定的位置。

我們可以提供無論是在體內的元素或作為乙個的元素的位置。還支援重定向解析引數。下面是乙個例子使用xml配置:

/newworld.jsp

因此,只要修改struts.xml檔案,定義如上所述重定向型別,並建立乙個新的檔案,在那裡會被重定向 hello時動作將返回成功到newworld.jpg。也可以checkstruts2 重定向操作的例子,為了更好的理解。

struts2結果型別

在struts2 core 2.3.1.1.jar struts de t.xml配置檔案下可以看到 省略 chain 兩個action之間的 dispatcher action 到jsp freemarker 處理freemarker用的 httpheader 處理特殊http redirect ...

Struts2結果型別

struts2結果型別 1.dispatcher 將當前請求request和response移交給另乙個servlet,預設型別 2.redirect 重定向 關閉當前請求,改變瀏覽器指向的url,不移交request和response secure adminportfolio.action 末尾...

struts2結果型別

struts2結果型別 結果型別 描述 前request域屬性是否丟失 1dispatcher 用於與jsp整合的結果型別。預設結果型別。2chain action鏈式處理結果型別。前乙個action設定的request域屬性不丟失。不丟失3 redirect 用於直接跳轉到其他頁面url的結果型別...