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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

关注WebWork(四)

發(fā)布時(shí)間:2025/3/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关注WebWork(四) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
??????? 時(shí)間過(guò)得很快,《WebWork In Action》第三章的翻譯工作也接近尾聲了。這一章的標(biāo)題是Setting up WebWork,主要講述了與WebWork緊密相關(guān)的配置以及如何運(yùn)用這些配置讓我們的應(yīng)用程序組織得更為模塊化,讓我們?cè)谠O(shè)計(jì)上可以更加靈活機(jī)動(dòng)。
??????? 在這一章中,我了解到了很多之前并不熟悉的配置,而這些配置所帶來(lái)的影響,我不得不為之贊嘆。以action為例,通常我們會(huì)根據(jù)邏輯來(lái)劃分action,譬如Login、Register、Search和Logout等等,這些從邏輯語(yǔ)義上獨(dú)立的部分都應(yīng)該分別作為一個(gè)action,這一點(diǎn)是大家都認(rèn)可的。在以上這些action的周邊仍然會(huì)有一些其他附屬功能,譬如在Login之前需要做的準(zhǔn)備工作——PreLogin;在Search之后需要作進(jìn)一步搜索的SearchMore。在面對(duì)這樣的功能時(shí)候,你或許會(huì)將它們獨(dú)立出來(lái),作為一個(gè)新的action,同時(shí)也有可能想著將這些功能放到主邏輯功能當(dāng)中去。如果你選擇了后者,然后興沖沖地打開(kāi)IDE想往里面加方法的時(shí)候,或許你會(huì)犯愁了:方法加了進(jìn)去,該在哪里調(diào)用呢?因?yàn)樵趹?yīng)用程序運(yùn)行的時(shí)候,WebWork框架只會(huì)調(diào)用繼承的execute方法,那么自己加進(jìn)去的方法呢?難道真的要在execute中調(diào)用?這不是又跟其他功能扯上關(guān)系了嘛?不要著急,且聽(tīng)我慢慢說(shuō)來(lái)。
??????? 其實(shí),以上說(shuō)了那么多,只是想為大家勾勒一個(gè)應(yīng)用場(chǎng)景而已。撇開(kāi)那些復(fù)雜的場(chǎng)景不談,需要解決的問(wèn)題實(shí)際就是:如何讓框架調(diào)用execute以外的方法。了解WebWork的您應(yīng)該都十分清楚:我們通常所寫(xiě)的action都會(huì)extend了ActionSupport類并且需要提供一個(gè)override的execute方法,然后在收到請(qǐng)求之后,WebWork框架會(huì)將請(qǐng)求分派給不同的action,由action的execute方法來(lái)處理這個(gè)請(qǐng)求。這就是框架所帶來(lái)的好處:更加有序地組織代碼;同時(shí)這也是一個(gè)限制。框架都會(huì)在限制與功能之間尋找一個(gè)平衡點(diǎn),一個(gè)好的框架則會(huì)將這對(duì)矛盾處理得很好:有一定程度的限制,又不失靈活和強(qiáng)大功能,而WebWork就是這樣一個(gè)框架。正當(dāng)你為無(wú)法調(diào)用execute以外的方法而懊惱的時(shí)候,你會(huì)驚喜地發(fā)現(xiàn)WebWork提供了一種靈活的方式,讓你只需修改一下配置文件就可以調(diào)用action中execute以外的方法,這樣就不需要為一些主邏輯的周邊功能而創(chuàng)建新的action類了,讓你在設(shè)計(jì)的時(shí)候有更多的選擇。要實(shí)現(xiàn)框架調(diào)用action中execute以外的方法,只需要設(shè)置好action節(jié)點(diǎn)的method屬性即可。如以下例子所示:
<action?name="Login"?class="com.fantasysoft.Login">
????
<result?name="success">userProfile.jsp</result>
????
<result?name="input">login.jsp</result>
</action>
<action?name="PreLogin"?class="com.fantasysoft.Login"?method="preLogin">
????
<result?name="success">login.jsp</result>
????
<result?name="error">error.jsp</result>
</action>

??????? 以上例子中名為PreLogin的action節(jié)點(diǎn)配置就會(huì)調(diào)用Login action中的preLogin方法,而不是常見(jiàn)的execute方法了。這里還有一個(gè)十分靈活的地方需要注意的,如果preLogin方法找不到的話,WebWork并不會(huì)馬上拋出Exception,而是進(jìn)而查找doPreLogin方法(注意大小寫(xiě))。這樣做的原因是為了避免方法名和Java的關(guān)鍵字沖突,譬如你想使用default這樣的方法名,那么你在配置文件仍然可以寫(xiě)上method="default",然后在Java代碼中,你就不能用default做方法名了,因?yàn)閐efault是Java的關(guān)鍵字。但是這并不意味著就要把配置文件中method的value給改掉,你只要把方法名換上doDefault就行了。從這里可以看出WebWork考慮入微的一面,當(dāng)然,我不贊成使用這種方式,畢竟這是以損失效率為代價(jià)的。
??????? 除了以上方式之外,WebWork還提供了另外一種更為簡(jiǎn)單的方式調(diào)用action中非execute方法:使用actionName!method.action樣式的URL。而這種方式并不需要在xwork.xml中增加新的action節(jié)點(diǎn),它將會(huì)使用actionName已經(jīng)定義好的配置。還是以上的例子,如果我們使用Login!preLogin.action這樣的URL就會(huì)調(diào)用Login action中的preLogin方法,也將使用名為L(zhǎng)ogin那個(gè)action節(jié)點(diǎn)中的配置,同時(shí)PreLogin這個(gè)節(jié)點(diǎn)就可以省略了。這樣的方式的好處就是使得xwork.xml配置文件更加簡(jiǎn)短,不過(guò),兩個(gè)方法共享一個(gè)action配置也給這種方式平添了許多限制,畢竟兩個(gè)方法返回的結(jié)果碼不一定都是success和input,即使返回的結(jié)果碼相同,那么結(jié)果碼所對(duì)應(yīng)的location呢?完全相同的配置需求確實(shí)還是比較少見(jiàn)的。不管怎樣,多一個(gè)選擇總比沒(méi)有選擇要好。
????????以上只是講述了WebWork在配置靈活多變的一面,但管中窺豹,WebWork的靈活性已經(jīng)可見(jiàn)一斑。說(shuō)完管中窺豹這個(gè)成語(yǔ),另外一個(gè)成語(yǔ)在我的腦海中浮現(xiàn)——庖丁解牛。呵呵,真的很期待“以無(wú)厚入有間,恢恢乎其于游刃必有余”那種境界。

總結(jié)

以上是生活随笔為你收集整理的关注WebWork(四)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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