国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Struts2配置文件中result的type類型

2019-11-08 02:43:29
字體:
來源:轉載
供稿:網友
  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處理完之后,就應該向用戶返回結果信息,該任務被分為兩部分:結果類型和結果本身。

結果類型提供了返回給用戶信息類型的實現細節。結果類型通常在Struts2中就已預定義好了(見下表),或者是由插件提供,開發人員也可以自定義結果類型。默認配置的結果類型是dispatcher,該結果類型使用JSP來向用戶顯示結果。當定義了結果類型之后,該結果類型可以在不同的action中重復使用。

?

Struts2框架提供的結果類型

已配置結果類型名 類 名 描 述
dispatcher org.apache.struts2.dispatcher.ServletDispatcherResult 默認結果類型,用來呈現JSP頁面
chain com.opensymphony.xwork2.ActionChainResult 將action和另外一個action鏈接起來
freemarker org.apache.struts2.views.freemarker.FreemarkerResult 呈現Freemarker模板
httpheader org.apache.struts2.dispatcher.HttpHeaderResult 返回一個已配置好的HTTP頭信息響應
redirect org.apache.struts2.dispatcher.ServletRedirectResult 將用戶重定向到一個已配置好的URL
redirectAction org.apache.struts2.dispatcher.ServletActionRedirectResult 將用戶重定向到一個已定義好的action
stream org.apache.struts2.dispatcher.StreamResult 將原始數據作為流傳遞回瀏覽器端,該結果類型對下載的內容和圖片非常有用
velocity org.apache.struts2.dispatcher.VelocityResult 呈現Velocity模板
xslt org.apache.struts2.views.xslt.XSLTResult 呈現xml到瀏覽器,該XML可以通過XSL模板進行轉換
plaintext org.apache.struts2.dispatcher.PlainTextResult 返回普通文本類容

簡單說明一下result的name屬性和type屬性:SUCCESS:Action正確的執行完成,返回相應的視圖,success是name屬性的默認值。NONE:表示Action正確的執行完成,但并不返回任何視圖。ERROR:表示Action執行失敗,返回到錯誤處理視圖。INPUT:Action的執行,需要從前端界面獲取參數,INPUT就是代表這個參數輸入的界面,一般在應用中,會對這些參數進行驗證,如果驗證沒有通過,將自動返回到該視圖。LOGIN:Action因為用戶沒有登陸的原因沒有正確執行,將返回該登陸視圖,要求用戶進行登陸驗證。dispatcher:請求轉發,底層調用RequestDispatcher的forward()或include()方法,dispatcher是 type屬性的默認值,通常用于轉向一個JSP。localtion指定JSP的位置,parse如果為false表示location的值不會被當作 OGNL解析,默認為true。redirect:重定向,新頁面無法顯示Action中的數據,因為底層調用response.sendRedirect("")方法,無法共享請求范圍內的數據,參數與dispatcher用法相同。redirect-action:重定向到另一個Action,參數與chain用法相同,允許將原Action中的屬性指定新名稱帶入新Action 中,可以在Result標簽中添加 <param name=”b”>${a} </param>,這表示原Action中的變量a的值被轉給b,下一個Action可以在值棧中使用b來操作,注意如果值是中文,需要做一些編碼處理,因為Tomcat默認是不支持URL直接傳遞中文的!velocity:使用velocity模板輸出結果,location指定模板的位置(*.vm),parse如果為false,location不被OGNL解析,默認為true。xslt:使用XSLT將結果轉換為xml輸出,location指定*.xslt文件的位置,parse如果為false,location不被 OGNL解析,默認為true。matchingPattern指定想要的元素模式,excludePattern指定拒絕的元素模式,支持正則表達式,默認為接受所有元素。httpheader:根據值棧返回自定義的HttpHeader,status指定響應狀態(就是指response.sendError(int i)重定向到500等服務器的狀態頁)。parse如果為false,header的值不會被OGNL解析,headers,加入到header中的值,例如: <param name=”headers.a”>HelloWorld </param>。可以加多個,這些鍵-值組成HashMap。freemaker:用freemaker模板引擎呈現視圖,location指定模板(*.ftl)的位置,parse如果為false,location的值不會被OGNL解析。contentType指定以何中類型解析,默認為text/html。chain:將action的帶著原來的狀態請求轉發到新的action,兩個action共享一個ActionContext,actionName指定轉向的新的Action的名字。method指定轉向哪個方法,namespace指定新的Action的名稱空間,不寫表示與原Action在相同的名稱空間;skipActions指定一個使用 , 連接的Action的name組成的集合,一般不建議使用這種類型的結果。stream:直接向響應中發送原始數據,通常在用戶下載時使用,contentType指定流的類型,默認為 text/plain,contentLength以byte計算流的長度,contentDisposition指定文件的位置,通常為 filename=”文件的位置”,input指定InputStream的名字,例如:imageStream,bufferSize指定緩沖區大小,默認為1024字節。plaintext:以原始文本顯示JSP或者HTML,location指定文件的位置,charSet指定字符集

同時需要注意的是,struts2也是可以返回json的,但是需要添加相關的jar包的:、json-lib-2.1-jdk15.jar、struts2-json-plugin-2.1.8.1.jar,而且在struts的配置文件中需要繼承json-default,如下所示:

<struts>    <package name="emp" extends="struts-default,json-default">

            ……

   </package>

<struts>


上一篇:R語言入門

下一篇:補充:《劍指offer》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西畴县| 南昌县| 邹平县| 防城港市| 达拉特旗| 佳木斯市| 华容县| 湘潭市| 绥芬河市| 武穴市| 黔南| 四会市| 全州县| 澄江县| 游戏| 砀山县| 铁力市| 尼勒克县| 兰州市| 安义县| 石首市| 洪洞县| 安岳县| 兰西县| 香格里拉县| 沙坪坝区| 大厂| 清苑县| 阜南县| 霸州市| 高尔夫| 镇巴县| 中卫市| 黄平县| 宁明县| 新昌县| 乌苏市| 巴林左旗| 项城市| 富源县| 区。|