freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

struts20第05章result(編輯修改稿)

2024-09-12 23:57 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 任何Result類型都需要實(shí)現(xiàn)Result接口的execute()方法,但是在此處并未實(shí)現(xiàn),為什么呢?在上述代碼中的粗體部分可以看到ServletDispatcherResult類是繼承StrutsResultSupport類的,那再分析一下StrutsResultSupport這個(gè)類,其部分代碼如下:/*省略語(yǔ)句*/ //這個(gè)類實(shí)現(xiàn)了Result接口public abstract class Struts2ResultSupport implements Result, StrutsStatics {private static final Log _log = ()。 public static final String DEFAULT_PARAM = location。 private boolean parse。 private boolean encode。 private String location。 private String lastFinalLocation。 /*省略一些方法*/public void setLocation(String location) { = location。}public String getLastFinalLocation() { return lastFinalLocation。 } public void setParse(boolean parse) { = parse。 } public void setEncode(boolean encode) { = encode。}public void execute(ActionInvocation invocation) throws Exception { lastFinalLocation = conditionalParse(location, invocation)。 doExecute(conditionalParse(location, invocation), invocation)。 }protected String conditionalParse(String param, ActionInvocation invocation) {/*省略語(yǔ)句*/ }protected abstract void doExecute(String finalLocation, ActionInvocation invocation) throws Exception。},想必大家就很明白為什么ServletDispatcherResult類沒(méi)有實(shí)現(xiàn)Result接口的execute()方法了。文中粗體所示的部分表明StrutsResultSupport類是一個(gè)抽象類,在它里面實(shí)現(xiàn)了execute()方法,不過(guò)它的實(shí)現(xiàn)是調(diào)用一個(gè)doExecute()方法。在繼承StrutsResultSupport類的時(shí)候,只要實(shí)現(xiàn)doExecute()方法就能達(dá)到對(duì)Result接口execute()方法的實(shí)現(xiàn)!。下面來(lái)看看Result的參數(shù),result標(biāo)簽對(duì)應(yīng)的參數(shù)。:public static final String DEFAULT_PARAM = location。protected boolean parse 。protected String location。這三句代碼就定義了Dispatcher的兩個(gè)參數(shù),各自功能如下:n location (默認(rèn)):執(zhí)行后轉(zhuǎn)到的地方(如jsp頁(yè)面)。n parse:這個(gè)值在構(gòu)造函數(shù)中已經(jīng)默認(rèn)為true。如果設(shè)置為false,location參數(shù)就不會(huì)被解析為Ognl表達(dá)式。location對(duì)應(yīng)的就是自己編寫的頁(yè)面的地址,如果要返回一個(gè)頁(yè)面就得擁有這個(gè)參數(shù),否則定義的返回類型就不能返回到指定的頁(yè)面。在以后介紹的每一種Result類型的時(shí)候,都會(huì)有這個(gè)DEFAULT_PARAM靜態(tài)字符串變量。這個(gè)變量指明location是默認(rèn)的參數(shù),這就讓使用者能夠更方便的使用這種類型。清楚了返回類型怎么實(shí)現(xiàn)之后,接下來(lái)要考慮如何如在Action中用到它們。首先回顧一下第一個(gè)Action的例子,:/*省略語(yǔ)句*/ include file= //*省略語(yǔ)句*/ result name=success//result/*省略語(yǔ)句*/ 。再看result標(biāo)簽,它只有一個(gè)name屬性,沒(méi)有type屬性的指定也沒(méi)有參數(shù)的指定,為什么可以這樣?它怎么知道選擇何種Result類型?:resulttype name=dispatcher class= default=true/原來(lái)已經(jīng)定義default為true了,而且其他的Result都沒(méi)有這個(gè)定義。location參數(shù),因?yàn)橛辛四J(rèn)的DEFAULT_PARAM靜態(tài)字符串來(lái)表示,所以location參數(shù)也可以不需要顯式表明。那么對(duì)于上面的Result標(biāo)簽更完整的配置應(yīng)該是這樣的result name=success type=dispatcherparam name=location//param/result至于parse參數(shù),它是一個(gè)布爾型的,默認(rèn)值為true,它是用來(lái)解析參數(shù)location的,具體的Ognl部分請(qǐng)參看以后的關(guān)于表達(dá)式語(yǔ)言的章節(jié)。弄清楚上述問(wèn)題之后,()方法,弄清楚它的工作流程。/*省略語(yǔ)句*/ if (()) { (Forwarding to location + finalLocation)。 } PageContext pageContext = ()。 if (pageContext != null) { (finalLocation)。 } else { HttpServletRequest request = ()。 HttpServletResponse response = ()。 RequestDispatcher dispatcher=(finalLocation)。 if (dispatcher == null) { //404錯(cuò)誤代碼對(duì)應(yīng)的錯(cuò)誤信息的輸出 (404, result 39。 + finalLocation + 39。 not found)。 return。 }if(!()amp。amp。(() == null)) { //設(shè)置request中元素的值 (, finalLocation)。 (,())。(request, response)。 } else { (request, response)。 } }}上面是doExecute()方法的具體實(shí)現(xiàn),可以從粗體部分看出這個(gè)Result有三種執(zhí)行方式:n 如果在一個(gè)JSP的范圍內(nèi)(PageContext對(duì)象可用),PageContext的include(String)方法會(huì)被調(diào)用。n 如果沒(méi)有PageContext對(duì)象,并且也不在任何形式的include中(在request的屬性中沒(méi)有),那么調(diào)用RequestDispatcher的forward方法。n 否則調(diào)用RequestDispatcher的include方法。還可以看到,如果dispatcher==null的話,會(huì)返回404代碼錯(cuò)誤。所以以后在使用Dispatcher的時(shí)候遇到404錯(cuò)誤的時(shí)候,就應(yīng)該知道是返回對(duì)應(yīng)的頁(yè)面地址或者Action找不到的問(wèn)題。至于具體的類的含義以及方法是干什么的,讀者可以自己去查閱servlet的API文檔。這就是整個(gè)Dispatcher Result的流程了。下面用一個(gè)流程圖來(lái)概括一下,如圖54所示。圖54 Dispatcher Result的流程這一節(jié)因?yàn)槭堑谝淮沃v解Struts2定義的Result類型,所以內(nèi)容比較多。這個(gè)小節(jié)對(duì)源代碼進(jìn)行了探討,介紹了參數(shù),執(zhí)行方式等內(nèi)容,讓讀者完全
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1