<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    首先,要跟大家道個(gè)歉,前一陣子為給客戶個(gè)一個(gè)DEMO,忙得不可開交,所以很久沒有更新Blog。提到這個(gè)DEMO我想順便跟大家分享一下心得——如果大家希望快速開發(fā),一個(gè)類似Struts 2這樣的簡(jiǎn)單方便的WEB框架必不可少。我們?cè)陂_發(fā)DEMO使用的還是Struts 1.2.8,而且沒有不使用任何EL(表達(dá)式語(yǔ)言),導(dǎo)致頁(yè)面出現(xiàn)無(wú)數(shù)類似“<%= ((Integer) request.getAttribute("xx")).intValue()%6 %>”的代碼。Struts 1.x的Form Bean的麻煩使得有部分同事直接使用request.getParameter(String arg),繼而引入另一種麻煩。諸如此類的問題,在DEMO這樣時(shí)間緊迫的項(xiàng)目凸顯了Struts 1.x對(duì)快速開發(fā)的無(wú)能為力。不過(guò)沒辦法,由于我們項(xiàng)目中的幾個(gè)資深員工除了Struts 1.x外,對(duì)其它的WEB框架似乎不大感興趣。

    言歸正傳,Interceptor(以下譯為攔截器)是Struts 2的一個(gè)強(qiáng)有力的工具,有許多功能(feature)都是構(gòu)建于它之上,如國(guó)際化、轉(zhuǎn)換器校驗(yàn)等。

    什么是攔截器

    攔截器,在AOP(Aspect-Oriented Programming)中用于在某個(gè)方法或字段被訪問之前,進(jìn)行攔截然后在之前或之后加入某些操作。攔截是AOP的一種實(shí)現(xiàn)策略。

    在Webwork的中文文檔的解釋為——攔截器是動(dòng)態(tài)攔截Action調(diào)用的對(duì)象。它提供了一種機(jī)制可以使開發(fā)者可以定義在一個(gè)action執(zhí)行的前后執(zhí)行的代碼,也可以在一個(gè)action執(zhí)行前阻止其執(zhí)行。同時(shí)也是提供了一種可以提取action中可重用的部分的方式。

    談到攔截器,還有一個(gè)詞大家應(yīng)該知道——攔截器鏈(Interceptor Chain,在Struts 2中稱為攔截器棧Interceptor Stack)。攔截器鏈就是將攔截器按一定的順序聯(lián)結(jié)成一條鏈。在訪問被攔截的方法或字段時(shí),攔截器鏈中的攔截器就會(huì)按其之前定義的順序被調(diào)用。

    實(shí)現(xiàn)原理

    Struts 2的攔截器實(shí)現(xiàn)相對(duì)簡(jiǎn)單。當(dāng)請(qǐng)求到達(dá)Struts 2的ServletDispatcher時(shí),Struts 2會(huì)查找配置文件,并根據(jù)其配置實(shí)例化相對(duì)的攔截器對(duì)象,然后串成一個(gè)列表(list),最后一個(gè)一個(gè)地調(diào)用列表中的攔截器,如圖1所示。

    圖1 攔截器調(diào)用序列圖
    圖1 攔截器調(diào)用序列圖

    已有的攔截器

    Struts 2已經(jīng)為您提供豐富多樣的,功能齊全的攔截器實(shí)現(xiàn)。大家可以到struts2-all-2.0.1.jar或struts2-core-2.0.1.jar包的struts-default.xml查看關(guān)于默認(rèn)的攔截器與攔截器鏈的配置。

    在本文使用是Struts 2的最新發(fā)布版本2.0.1。需要下載的朋友請(qǐng)點(diǎn)擊以下鏈接:
    http://apache.justdn.org/struts/binaries/struts-2.0.1-all.zip

    以下部分就是從struts-default.xml文件摘取的內(nèi)容:

    < interceptor name ="alias" class ="com.opensymphony.xwork2.interceptor.AliasInterceptor" />
    < interceptor name ="autowiring" class ="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor" />
    < interceptor name ="chain" class ="com.opensymphony.xwork2.interceptor.ChainingInterceptor" />
    < interceptor name ="conversionError" class ="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor" />
    < interceptor name ="createSession" class ="org.apache.struts2.interceptor.CreateSessionInterceptor"
    posted on 2007-04-19 13:17 蘆葦 閱讀(373) 評(píng)論(0)  編輯  收藏 所屬分類: Struts
    主站蜘蛛池模板: 免费不卡视频一卡二卡| 97在线线免费观看视频在线观看| 亚洲人成网77777色在线播放| 高清免费久久午夜精品| 国产亚洲美女精品久久久2020| 成人a毛片视频免费看| 亚洲国产精品无码专区影院| 国产高清不卡免费在线| 黄色毛片免费在线观看| 亚洲免费在线视频| 国产成人免费A在线视频| 暖暖免费在线中文日本| 亚洲kkk4444在线观看| 亚洲老妈激情一区二区三区| 国产精品视频永久免费播放| 国产特黄一级一片免费| 亚洲熟妇无码八V在线播放| 亚洲线精品一区二区三区 | 国产亚洲精品美女2020久久| 亚洲AV无码国产精品麻豆天美| 浮力影院第一页小视频国产在线观看免费| 日韩电影免费在线观看网站| 亚洲人成无码网站在线观看| 亚洲爆乳精品无码一区二区三区 | 最近高清中文字幕免费| h片在线播放免费高清| 亚洲另类自拍丝袜第五页| 久久精品国产亚洲AV网站| 国产精品无码素人福利免费| 91精品免费不卡在线观看| 三年片在线观看免费观看大全中国| 亚洲午夜国产精品| 久久亚洲综合色一区二区三区 | 国产老女人精品免费视频| 91精品国产免费| 中文字幕看片在线a免费| 亚洲av无码成人精品国产| 亚洲高清中文字幕综合网| 亚洲综合国产一区二区三区| 日本免费一区二区三区最新| 精品久久8x国产免费观看|