1. 程式人生 > >struts2配置檔案中result的type型別

struts2配置檔案中result的type型別

    struts的核心配置檔案是struts找頁面用的,用返回的字串,通過配置檔案的配置,去查詢返回相應的頁面。在struts配置檔案中,result的型別有不同種類,預設的跳轉方式是dispatcher方式的,通過返回的字串來查詢。

    常見的配置檔案配置有以下兩種:

<action name="adminProduct_*" class="adminProductAction" method="{1}">
	<result name="findAll">/admin/product/list.jsp</result>
	<result name="addPageSuccess">/admin/product/add.jsp</result>
</action>
<action name="adminProduct_*" class="adminProductAction" method="{1}">
	<result name="SUCCESS">/admin/product/list.jsp</result>
</action>

    第一種是返回自定義字串,自己定義返回的字串,配置到配置檔案中,查詢相應的頁面。第二種是struts預設的字串,例如SUCCESS或者ERROR。result的type不定義的話,預設就是dispatcher型別,這種型別就是處理頁面的,通常是用在JSP頁面中。除了dispatcher型別,struts2還提供了其他型別。

chain型別

    com.opensymphony.xwork2.ActionChainResult類,用來處理Action鏈,也就是說Struts2在處理過程中,是一系列的Action進行的,並不是某一個,所以配置Chain型別就是跳轉到某一個Action。struts2通過攔截器攔截源Action,將引數、session等傳給目的Action,在這個過程中ActionContext實現共享,於是形成了Action鏈。在chain型別中,name代表目的Action,method代表目的Action中的方法。但是在struts2框架中,這種型別已不推薦使用,而是採用redirect-action的方式。

redirect型別

    redirect型別是重定向,和預設的dispatcher型別是對應的。dispatcher是轉發到某一個頁面,這時引數和session等都繼續傳遞。而redirect型別則是重定向,引數和session不共用,而是開啟一個新的。重定向將丟失引數、值棧和Action處理的結果,所以在使用時要注意。

<action name="adminUser_*" class="adminUserAction" method="{1}">
	<result name="loginFail">/admin/index.jsp</result>
	<result name="loginSuccess" type="redirect">/admin/home.jsp</result>
</action>
redirect-action型別

    redirect-action型別是重定向到Action,跟chain類似,但是redirect-action型別是重新定向到一個URL,它的結果和redirect型別類似。

<action name="adminProduct_*" class="adminProductAction" method="{1}">
	<result name="findAll">/admin/product/list.jsp</result>
	<result name="addPageSuccess">/admin/product/add.jsp</result>
	<result name="saveSuccess" type="redirectAction">adminProduct_findAll.action?page=1</result>
	<result name="deleteSuccess" type="redirectAction">adminProduct_findAll.action?page=1</result>
	<result name="editSuccess">/admin/product/edit.jsp</result>
	<result name="updateSuccess" type="redirectAction">adminProduct_findAll.action?page=1</result>
</action>
velocity型別

    velocity型別是處理velocity模板的,它的result只能是velocity模板,也就是平常所見的.vm檔案。velocity模板類似於JSP,它裡面可以寫JS、HTML,控制元件賦值的話類似於struts的標籤。只不過用velocity有一個不方便的,就是重複性有點大,因為一個action只能對應一個velocity模板。例如頁面中有一個下拉框,點選下拉框選項改變頁面資料,這時下拉框有幾個選項就要建幾個頁面,每個頁面除了下拉框選項點選觸發的action不同,其他都一樣。配置檔案定義時,需要把type定義為velocity,action中也要返回struts預設的字串。

<action name="adminProduct_*" class="adminProductAction" method="{1}">
	<result name="velocity">/admin/product/list.vm</result>
</action>
freemarker型別

    freemarker型別和velocity型別相似,是用來處理freemarker模板的。freemarker模板同樣類似於JSP,都是檢視檔案,相差也不多。

<action name="adminProduct_*" class="adminProductAction" method="{1}">
	<result name="velocity">/admin/product/list.ftl</result>
</action>
httpheader型別

    httpheader型別是處理HTTP的結果型別,通過接收返回的自定義的HttpHeader,根據相應的status做出相應的處理。

stream型別

    stream型別向瀏覽器傳送InputStream檔案,用於處理檔案下載。

plaintext型別

    plaintext型別是以原始文字的形式顯示JSP或者HTML

    Struts2 Action的Result有很多型別,常用的那些都比較瞭解,比較生疏的其實就是專案中沒用過,等用到了,用得多了自然也就熟了。不同的型別適用於不同的情況,只要分清楚了不同情況的特點,用起來也就不麻煩了。不管怎麼樣,型別再多本質都是一樣的,只不過是處理的結果型別不同罷了。

相關推薦

struts2配置檔案result的type型別

    struts的核心配置檔案是struts找頁面用的,用返回的字串,通過配置檔案的配置,去查詢返回相應的頁面。在struts配置檔案中,result的型別有不同種類,預設的跳轉方式是dispat

struts2 配置檔案各個項詳解

<action   name= "Login_* "   method= "{1} "   class= "mailreader2.Login "> 中Login_*帶*是什麼意思?method= "{1} "帶{}這個是什麼意

struts2[3.5]在struts2配置檔案使用OGNL表示式

1.新建一個Demo3Action.java,只需重寫execute()方法即可: package com.aisino.b_config; import com.opensymphony.xwork2.ActionSupport; public class Demo3Action exte

struts2配置檔案的include和global-results

今天遇到的一個這樣的問題:幾個struts2的配置檔案 用include 進struts.xml配置檔案裡面去。每個配置檔案都有 一個 相同的<global-results>  想把它們提出來來 放到struts.xml配置檔案裡面去。這樣就只需要配置一個<

Hibernate配置檔案資料型別date與timestamp區別

例如: <property name="createDate" type="timestamp" column="createDate"/> <property name="createDate" type="date" column="createDat

struts2配置檔案method="{1}"詳解

struts2為了簡化配置檔案,來採用了萬用字元的方式 圖中的method="{1}"指向的是action後的第一個萬用字元,也就是如圖的 * , 假如name中含有多個萬用字元 , 則method

struts2配置檔案的include問題

今天遇到的一個這樣的問題:幾個struts2的配置檔案 用include 進struts.xml配置檔案裡面去。每個配置檔案都有 一個 相同的<global-results>  想把它們提出來來 放到struts.xml配置檔案裡面去。這樣就只需要配置一個&l

Struts2配置檔案的萬用字元的使用

<package name="user" extends="struts-default" namespace="/"><action name="user_*" class="com.test.action.UserAction" method="

關於mybatis配置檔案的resultMap和resultType

<select id="selectByName" parameterType="string" resultType ="com.listore.pojo.Category"> sele

無法為具有固定名稱“System.Data.SqlClient”的 ADO.NET 提供程式載入在應用程式配置檔案註冊的實體框架提供程式型別“System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer”。請

Windows服務中程式釋出之後會如下錯誤: 無法為具有固定名稱“System.Data.SqlClient”的 ADO.NET 提供程式載入在應用程式配置檔案中註冊的實體框架提供程式型別“System.Data.Entity.SqlServer.SqlProviderServices, EntityFra

MyEclipse配置Struts2配置檔案自動提示

        對於 xml 配置檔案,若當前主機連著網際網路,那麼,原則上在編寫 xml 配置檔案時,使用 ALT + /,可出現自動提示。但,有時由於網速等原因,或根本就沒有聯網,沒有自動提示。此

Struts2之動態方法呼叫(優點:呼叫同一個action的多個方法不需要在配置檔案寫多個指向相同action類的的action節點只需要一個action節點就行)

在表單action值裡指定所呼叫的action中的哪個方法而不是藉助配置檔案action節點的method屬性 1 UserAction類 package org.action; import java.io.IOException; import javax.servle

javaEE Struts2配置檔案使用OGNL表示式

Demo1Action.java: package cn.xxx.config; import com.opensymphony.xwork2.ActionSupport; public class Demo1Action extends ActionSupport

記錄一下:Hibernate配置檔案資料庫欄位的對應型別

    說在前面:在學習Hibernate的過程中,經常要對資料表的欄位進行對映的配置,不管是通過註解的方式,還是xml檔案配置的方式,不可避免的要對資料表的欄位型別進行配置說明。本人在配置的過程中,對於java屬性為boolean的欄位進行資料庫配置時總是記不住,每次都是

spring 配置檔案如何注入map list set等型別

先定義一個bean import java.util.List; import java.util.Map; import java.util.Properties; import java.util

Spring配置檔案如何使用外部配置檔案配置資料庫連線

版權宣告:本文為博主原創文章,歡迎指正或者轉載。 https://blog.csdn.net/qq_38663729/article/details/78821258 直接在spring的配置檔案中applicationContext.xml檔案中配置資料庫連線也可以,但是有個問題,需要在url

Spring配置檔案配置資料庫連線(mysql,sqlserver,oracle)

xml配置檔案中配置如下: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"

Mybatis配置檔案<mappers>配置方式

mappers 對映器(四種配置) (1) mapper.xml (2) 絕對路徑(不用) (3) 介面配置 (4) 包掃描(使用) <!— sqlmapper 配置檔案路徑 --> <mappers> <mapper reso

@PropertiesSource註解讀取配置檔案的資料

這是properties配置檔案。 資料結構。   注入物件。 或者:   使用物件獲取屬性值。 或者:   瞭解:=========================================

配置檔案開啟其他檔案時路徑的處理

雖然有軟體目錄開發規範,可以在啟動檔案裡向下面這樣新增BASE_DIR: BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 但是平時自己寫指令碼的時候,並不想搞得太正規。但是在一個程式中需要開啟某個檔案是時候,