日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Struts2的ResultType和Action处理链

發(fā)布時間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts2的ResultType和Action处理链 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Struts2的ResultType和Action處理鏈 Struts2的結果類型

struts-default.xml中定義了Struts2內置的所有可用的<result-type/>
所有的Struts2結果處理類都要直接或間接的實現(xiàn)com.opensymphony.xwork2.Result接口
struts-default.xml中的<result-types/>里面,有這樣一行聲明
Deprecated name form scheduled for removal in Struts 2.1.0. The camelCase versions are preferred.
即:不建議使用以下兩種結果類型,在Struts-2.1.0中它們將被移除,應采用Java命名規(guī)則,即駱駝命名方式,也即駝峰命名規(guī)則
另外Struts2還有一些插件,這些插件還支持一些其它結果類型,這里暫時先不涉及它們


結果類型為input的頁面的作用
Struts2應用在運行過程中若發(fā)現(xiàn)addFieldError()中有信息或者類型轉換失敗或著輸入校驗失敗等情況
那么它會自動跳轉到name為input<result/>,然后轉到INPUT所對應的頁面
若JSP頁面中表單是用普通<form>編寫的,發(fā)生錯誤而返回該頁面時,則原數(shù)據(jù)將消失
若JSP頁面中表單是用<s:form/>編寫的,發(fā)生錯誤而返回該頁面時,則原數(shù)據(jù)仍存在
若沒有提供name值為input的<result/>,那么發(fā)生錯誤時,將直接在瀏覽器中提示404錯誤


結果類型中的httpheader
httpheader結果類型很少使用到,它實際上是返回一個HTTP響應的頭信息
若單純的設置<result type="httpheader">/result.jsp</result>,執(zhí)行時控制臺會報如下錯誤
Caught OgnlException while setting property 'status' on type 'org.apache.struts2.dispatcher.HttpHeaderResult'.
java.lang.NoSuchMethodException: setStatus(java.lang.String)

翻譯:應用程序在設置status屬性時捕獲了OgnlException異常
查看HttpHeaderResult類源代碼發(fā)現(xiàn),它果然定義了private int status = -1
它代表的是一個狀態(tài)碼,較常見的狀態(tài)碼如下
200對應OK
404對應File Not Found或者requested resource() is not available
500對應服務器內部錯誤
這時我們在<action/>中修改為<result type="httpheader"><param name="status">404</param></result>即可
這樣當Action執(zhí)行完畢,就會轉向到SUCCESS結果,所以頁面就會顯示404錯誤提示
關于httpheader結果類型,了解即可,平時很少用到的不是很多


結果類型中的plainText
當設定為type="plainText"之后,就可以顯示原始文件內容,例如文件源代碼
<result name="success" type="plainText">/testSuc.jsp</result>
這時訪問應用,當跳轉到testSuc.jsp頁面后,右鍵就可以查看到它的Java代碼了
它比較適用于Java教學網(wǎng)站,但若僅設置type="plainText"的話,頁面中顯示中文時會亂碼
這時就可以借助它的charSet屬性以解決中文顯示時的亂碼問題

[xhtml]?view plaincopyprint?
  • <result?name="success"?type="plainText">??
  • ????<param?name="location">/testSuc.jsp</param>??
  • ????<param?name="charSet">GBK</param>??
  • </result>??
  • 如果不設置charSet屬性,反而去配置struts.i18n.encoding全局屬性,是不能解決問題的
    設置charSet屬性的目的就是讓JSP頁面的編碼明文顯示時的編碼一致


    結果類型中redirect和redirectAction的區(qū)別
    redirect是在處理完當前Action之后,重定向到另外一個實際的物理資源
    redirectAction也是重定向,但它重定向到的是另外一個Action
    只要是重定向,那么之前凡是保存在request里面的東西就全都消失了
    因為重定向實際是發(fā)送第二個請求,故請求中的東西也就不會出現(xiàn)在第二個請求里面了
    也就是說重定向是不共享request的東西,重定向后的頁面中無法接收request里的東西
    另外dispatcher結果類型的default屬性為TRUE故<result-type/>缺省為dispatcher
    所以如果沒有設置type屬性的話,那么默認的是請求轉發(fā),即瀏覽器顯示的是*.action
    但是在設置type="redirect"屬性后,就可以重定向了,即瀏覽器顯示的是/login2.jsp


    Struts2的Action處理鏈
    從一個Action跳轉到另一個Action,有兩種辦法,即將type設置為chain或者redirectAction
    chain結果類型表示將多個Action作為一個鏈來處理
    而使用chainredirectAction的好處就是:它會按照框架的默認后綴去自動匹配后綴
    而chain和redirectAction的區(qū)別與dispatcher和redirect的區(qū)別是一樣的
    即同樣是跳轉到一個Action上,但chain是服務器跳轉,而redirectAction是客戶端跳轉
    服務器跳轉的過程中,可以共享數(shù)據(jù),這時后面的Action就可以接收前面Action中的屬性信息進行二次處理


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

    [xhtml]?view plaincopyprint?
  • <action?name="firstchain"?class="com.jadyer.action.FirstAction">??
  • ????<result?type="chain">secondchain</result>??
  • </action>??
  • <action?name="secondchain"?class="com.jadyer.action.SecondAction">??
  • ????<result?type="chain">thirdchain</result>??
  • </action>??
  • <action?name="thirdchain"?class="com.jadyer.action.ThirdAction">??
  • ????<result?type="plainText">/chainResult.jsp</result>??
  • </action>??
  • 或者使用<result type="redirect">secondchain.action</result>即手工添加?.action?亦可正常訪問
    但不建議這么做,因為若修改應用的Action后綴,這里也需手動的把后綴改掉,麻煩得很
    盡管在官方幫助文檔的案例中,曾使用過這種方式來執(zhí)行下一個Action,但這是不嚴謹?shù)?/span>


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

    [xhtml]?view plaincopyprint?
  • <package?name="test"?extends="struts-default"?namespace="/">??
  • ????<action?name="test"?class="cn.jadyer.action.TestAction">??
  • ????????<result?name="success"?type="redirectAction">??
  • ????????????<!--這里也可將兩行<param/>寫成一行,即<param?name="actionName">/xx/test1</param>?-->??
  • ????????????<param?name="actionName">test1</param>??
  • ????????????<param?name="namespace">/xx</param>??
  • ????????</result>??
  • ????</action>??
  • </package>??
  • <package?name="test1"?extends="struts-default"?namespace="/xx">??
  • ????<action?name="test1"?class="cn.jadyer.action.Test1Action">??
  • ????????<result?name="success"?type="redirect">/test1Suc.jsp?name=${name}</result>??
  • ????</action>??
  • </package>??

  • 客戶端跳轉中的參數(shù)傳遞
    若第二個Action使用type="redirect",那么在頁面中將無法接收Action中所共享的數(shù)據(jù)
    但在客戶端跳轉中,我們可以在鏈接上傳參。比如result寫成/test1Suc.jsp?name=${username}
    在Struts2的XML文件中可以使用${}表達式,它會自動的取出Action中所有可用的屬性,作為參數(shù)傳遞到下一頁面
    這里${}不是EL表達式,實際上它的本質上是OGNL表達式
    由于從鏈接中取值,故用<%=request.getParameter("name")%>或者${param.name},這里param相當于request.getParameter("")
    注意也不能使用${name},因為它是用來從page、request、session、application中取值的
    并且頁面中也不能使用<s:property value="name"/>接收參數(shù)值,因為它是從ValueStack中取值的
    下面是代碼示例

    [xhtml]?view plaincopyprint?
  • <action?name="test"?class="cn.jadyer.action.TestAction">??
  • ????<result?name="success"?type="redirectAction">??
  • ????????<param?name="actionName">test1</param>??
  • ????</result>??
  • </action>??
  • <action?name="test1"?class="cn.jadyer.action.Test1Action">??
  • ????<result?name="success"?type="redirect">/test1Suc.jsp?name=${username}</result>??
  • </action>??
  • 總結

    以上是生活随笔為你收集整理的Struts2的ResultType和Action处理链的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 小辣椒福利视频导航 | 欧美老女人视频 | 老司机在线免费视频 | www.日本在线视频 | xxxxxxxx黄色片 | xxxxwww国产| 三级小视频在线观看 | www.com操| 一本到av| 亚洲一区a | 天天摸天天舔天天操 | 欧美卡一卡二卡三 | 中文字幕无线码一区 | 91华人在线 | 手机看片日韩欧美 | 日韩中文字幕视频在线观看 | 国产亚洲自拍一区 | 性欧美18一19内谢 | 成人国产在线观看 | 18av视频| 免费观看日韩毛片 | 久久好色 | 女同av在线播放 | 久久婷婷一区 | 国产又粗又猛又黄又爽 | 妹子干综合网 | 成人xxxxx | 精品婷婷色一区二区三区蜜桃 | 欧美一级二级视频 | 麻豆精品a∨在线观看 | 国产午夜精品久久久久久久 | 97超视频在线观看 | 亚洲午夜视频在线 | 自拍偷拍色 | 在线观看你懂的网站 | 色汉综合 | 国产成人无码a区在线观看视频 | 国产精品一区二区电影 | 中文第一页 | www.成人国产| 蜜臀av免费一区二区三区水牛 | 中文黄色片 | 黄在线免费 | 太久av | 亚洲成人一级片 | 黑人操日本女人视频 | 粉嫩小箩莉奶水四溅在线观看 | 色综合久久中文字幕无码 | 九月婷婷丁香 | 狠狠人妻久久久久久综合麻豆 | 欧美国产精品一区二区 | 免费看欧美黄色片 | 青青草手机视频 | 亚洲色图另类 | 美女主播在线观看 | 国产一区二区不卡视频 | 在线观看亚洲免费视频 | 欧美乱大交xxxxx潮喷 | 久久精品国产99精品国产亚洲性色 | 天天久 | 99色婷婷 | 亚洲精品www. | 久99热| 国产真实在线 | 国产美女福利视频 | 福利网址在线 | 色在线视频 | 自拍偷拍日韩 | 91亚洲精品国偷拍 | 性色在线视频 | 青青网站 | 在线播放精品 | 日本国产一区二区三区 | www.成人在线观看 | 韩日产理伦片在线观看 | 成年网站免费在线观看 | 国产高清无遮挡 | 熟女少妇在线视频播放 | 国产午夜精品一区二区三区欧美 | 91精品国产99久久久久久红楼 | 欧美国产片 | 日韩在线视频免费播放 | 日本三级免费看 | 国产乱论 | 中文有码在线观看 | 国产91视频播放 | 轮番上阵免费观看在线电影 | 国产综合在线视频 | 欧美自拍偷拍一区二区 | 91av在线网站 | 深夜福利在线免费观看 | 青青草视频在线观看 | 男同激情视频 | 精品人妻无码在线 | 在线看成人片 | 亚洲欧美日韩国产成人精品影院 | 精品一区二区三区中文字幕 | 久久这里有 | 亚洲无码高清精品 |