Struts2ResultType和Action處理鏈

      網友投稿 899 2022-05-29

      Struts2的ResultType和Action處理鏈

      Struts2的結果類型

      在struts-default.xml中定義了Struts2內置的所有可用的

      所有的Struts2結果處理類都要直接或間接的實現com.opensymphony.xwork2.Result接口

      在struts-default.xml中的里面,有這樣一行聲明

      Deprecated name form scheduled for removal in Struts 2.1.0. The camelCase versions are preferred.

      即:不建議使用以下兩種結果類型,在Struts-2.1.0中它們將被移除,應采用Java命名規則,即駱駝命名方式,也即駝峰命名規則

      另外Struts2還有一些插件,這些插件還支持一些其它結果類型,這里暫時先不涉及它們

      結果類型為input的頁面的作用

      Struts2應用在運行過程中若發現addFieldError()中有信息或者類型轉換失敗或著輸入校驗失敗等情況

      那么它會自動跳轉到name為input的,然后轉到INPUT所對應的頁面

      若JSP頁面中表單是用普通

      編寫的,發生錯誤而返回該頁面時,則原數據將消失

      若JSP頁面中表單是用編寫的,發生錯誤而返回該頁面時,則原數據仍存在

      若沒有提供name值為input的,那么發生錯誤時,將直接在瀏覽器中提示404錯誤

      結果類型中的httpheader

      httpheader結果類型很少使用到,它實際上是返回一個HTTP響應的頭信息

      若單純的設置/result.jsp,執行時控制臺會報如下錯誤

      Caught OgnlException while setting property 'status' on type 'org.apache.struts2.dispatcher.HttpHeaderResult'.

      java.lang.NoSuchMethodException: setStatus(java.lang.String)

      翻譯:應用程序在設置status屬性時捕獲了OgnlException異常

      查看HttpHeaderResult類源代碼發現,它果然定義了private int status = -1

      它代表的是一個狀態碼,較常見的狀態碼如下

      200對應OK

      Struts2的ResultType和Action處理鏈

      404對應File Not Found或者requested resource() is not available

      500對應服務器內部錯誤

      這時我們在中修改為404即可

      這樣當Action執行完畢,就會轉向到SUCCESS結果,所以頁面就會顯示404錯誤提示

      關于httpheader結果類型,了解即可,平時很少用到的不是很多

      結果類型中的plainText

      當設定為type="plainText"之后,就可以顯示原始文件內容,例如文件源代碼

      /testSuc.jsp

      這時訪問應用,當跳轉到testSuc.jsp頁面后,右鍵就可以查看到它的Java代碼了

      它比較適用于Java教學網站,但若僅設置type="plainText"的話,頁面中顯示中文時會亂碼

      這時就可以借助它的charSet屬性以解決中文顯示時的亂碼問題

      [xhtml]? view plain copy print ?

      /testSuc.jsp

      GBK

      結果類型中redirect和redirectAction的區別

      redirect是在處理完當前Action之后,重定向到另外一個實際的物理資源

      redirectAction也是重定向,但它重定向到的是另外一個Action

      只要是重定向,那么之前凡是保存在request里面的東西就全都消失了

      因為重定向實際是發送第二個請求,故請求中的東西也就不會出現在第二個請求里面了

      也就是說重定向是不共享request的東西,重定向后的頁面中無法接收request里的東西

      另外dispatcher結果類型的default屬性為TRUE,故缺省為dispatcher

      所以如果沒有設置type屬性的話,那么默認的是請求轉發,即瀏覽器顯示的是*.action

      但是在設置type="redirect"屬性后,就可以重定向了,即瀏覽器顯示的是/login2.jsp

      Struts2的Action處理鏈

      從一個Action跳轉到另一個Action,有兩種辦法,即將type設置為chain或者redirectAction

      chain結果類型表示將多個Action作為一個鏈來處理

      而使用chain和redirectAction的好處就是:它會按照框架的默認后綴去自動匹配后綴

      而chain和redirectAction的區別與dispatcher和redirect的區別是一樣的

      即同樣是跳轉到一個Action上,但chain是服務器跳轉,而redirectAction是客戶端跳轉

      服務器跳轉的過程中,可以共享數據,這時后面的Action就可以接收前面Action中的屬性信息進行二次處理

      以下是chain結果類型的使用示例

      [xhtml]? view plain copy print ?

      secondchain

      thirdchain

      /chainResult.jsp

      下面的例子是訪問不同命名空間下的Action

      [xhtml]? view plain copy print ?

      test1

      /xx

      /test1Suc.jsp?name=${name}

      客戶端跳轉中的參數傳遞

      若第二個Action使用type="redirect",那么在頁面中將無法接收Action中所共享的數據

      但在客戶端跳轉中,我們可以在鏈接上傳參。比如result寫成/test1Suc.jsp?name=${username}

      在Struts2的XML文件中可以使用${}表達式,它會自動的取出Action中所有可用的屬性,作為參數傳遞到下一頁面

      這里${}不是EL表達式,實際上它的本質上是OGNL表達式

      由于從鏈接中取值,故用<%=request.getParameter("name")%>或者${param.name},這里param相當于request.getParameter("")

      注意也不能使用${name},因為它是用來從page、request、session、application中取值的

      并且頁面中也不能使用接收參數值,因為它是從ValueStack中取值的

      下面是代碼示例

      [xhtml]? view plain copy print ?

      test1

      /test1Suc.jsp?name=${username}

      Java Struts

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:boost 參考文檔目錄翻譯
      下一篇:數字簽名系列一:簽名簡介與RSA簽名算法
      相關文章
      国产亚洲漂亮白嫩美女在线| 国产成人精品日本亚洲专| 亚洲最大的成人网| 久久精品国产亚洲AV蜜臀色欲| 久久99亚洲网美利坚合众国| 亚洲福利视频一区| 亚洲国产高清视频| 久久久久久亚洲精品成人| 91情国产l精品国产亚洲区| 亚洲一区二区三区夜色| 中文字幕在线观看亚洲| 亚洲高清中文字幕综合网| 亚洲美女免费视频| 亚洲国产精品成人精品软件| 亚洲国产精品成人精品软件| 亚洲最大的黄色网| 亚洲色在线无码国产精品不卡| 亚洲熟女乱色一区二区三区 | 精品久久久久久亚洲精品| 亚洲精品第五页中文字幕| 亚洲成a人片在线观看播放| 亚洲一区二区久久| 亚洲精品无码久久| 欧洲亚洲综合一区二区三区 | 国产天堂亚洲精品| 亚洲国产精品一区二区第四页| 亚洲精品国产综合久久一线| 国产成人精品亚洲精品| 亚洲国产综合无码一区| 亚洲AV成人片色在线观看高潮| 亚洲电影在线免费观看| 色婷五月综激情亚洲综合| 亚洲欧美日韩久久精品| 伊在人亚洲香蕉精品区麻豆| 亚洲综合亚洲综合网成人| 国产V亚洲V天堂无码久久久| 久久久久亚洲精品天堂| 亚洲人成人77777网站不卡| 亚洲欧洲日产国码久在线| 亚洲av无码乱码在线观看野外 | 亚洲一区二区三区91|