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

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

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

    2005年11月23日

         摘要: 背景: 攔截器是現在很多程序必須的一個東西。比如要在某個方法的前后做些處理,在一些特定的情況下可能會導致大量的重復代碼。而假如我們擁有了類似攔截器一樣的東西,那我們就可以任意在自己希望的方法的執行前后做我們自己的處理,比如日志,取得參數或者是事務等。   實現: 1.首先定義一個業務接口  1/** *//** 3 *&nbs...  閱讀全文

    posted @ 2005-12-28 19:02 李嵐 閱讀(565) | 評論 (0)編輯 收藏

    我與父親不相見已二年余了,我最不能忘記的是他的背影。那年冬天,祖母死了,父親的差使也交卸了,正是禍不單行的日子,我從北京到徐州,打算跟著父親奔喪回家。到徐州見著父親,看見滿院狼藉的東西,又想起祖母,不禁簌簌地流下眼淚。父親說,“事已如此,不必難過,好在天無絕人之路!”回家變賣典質,父親還了虧空;又借錢辦了喪事。這些日子,家中光景很是慘淡,一半為了喪事,一半為了父親賦閑。喪事完畢,父親要到南京謀事,我也要回北京念書,我們便同行。到南京時,有朋友約去游逛,勾留了一日;第二日上午便須渡江到浦口,下午上車北去。父親因為事忙,本已說定不送我,叫旅館里一個熟識的茶房陪我同去。他再三囑咐茶房,甚是仔細。但他終于不放心,怕茶房不妥帖;頗躊躇了一會。其實我那年已二十歲,北京已來往過兩三次,是沒有甚么要緊的了。他躊躇了一會,終于決定還是自己送我去。我兩三回勸他不必去;他只說,“不要緊,他們去不好!”我們過了江,進了車站。我買票,他忙著照看行李。行李太多了,得向腳夫行些小費,才可過去。他便又忙著和他們講價錢。我那時真是聰明過分,總覺他說話不大漂亮,非自己插嘴不可。但他終于講定了價錢;就送我上車。他給我揀定了靠車門的一張椅子;我將他給我做的紫毛大衣鋪好坐位。他囑我路上小心,夜里警醒些,不要受涼。又囑托茶房好好照應我。我心里暗笑他的迂;他們只認得錢,托他們直是白托!而且我這樣大年紀的人,難道還不能料理自己么?唉,我現在想想,那時真是太聰明了!我說道,“爸爸,你走吧。”他望車外看了看,說,“我買幾個橘子去。你就在此地,不要走動。”我看那邊月臺的柵欄外有幾個賣東西的等著顧客。走到那邊月臺,須穿過鐵道,須跳下去又爬上去。父親是一個胖子,走過去自然要費事些。我本來要去的,他不肯,只好讓他去。我看見他戴著黑布小帽,穿著黑布大馬褂,深青布棉袍,蹣跚地走到鐵道邊,慢慢探身下去,尚不大難。可是他穿過鐵道,要爬上那邊月臺,就不容易了。他用兩手攀著上面,兩腳再向上縮;他肥胖的身子向左微傾,顯出努力的樣子。這時我看見他的背影,我的淚很快地流下來了。我趕緊拭干了淚,怕他看見,也怕別人看見。我再向外看時,他已抱了朱紅的橘子望回走了。過鐵道時,他先將橘子散放在地上,自己慢慢爬下,再抱起橘子走。到這邊時,我趕緊去攙他。他和我走到車上,將橘子一股腦兒放在我的皮大衣上。于是撲撲衣上的泥土,心里很輕松似的,過一會說,“我走了;到那邊來信!”我望著他走出去。他走了幾步,回過頭看見我,說,“進去吧,里邊沒人。”等他的背影混入來來往往的人里,再找不著了,我便進來坐下,我的眼淚又來了。近幾年來,父親和我都是東奔西走,家中光景是一日不如一日。他少年出外謀生,獨力支持,做了許多大事。那知老境卻如此頹唐!他觸目傷懷,自然情不能自已。情郁于中,自然要發之于外;家庭瑣屑便往往觸他之怒。他待我漸漸不同往日。但最近兩年的不見,他終于忘卻我的不好,只是惦記著我,惦記著我的兒子。我北來后,他寫了一信給我,信中說道,“我身體平安,惟膀子疼痛利害,舉箸提筆,諸多不便,大約大去之期不遠矣。”我讀到此處,在晶瑩的淚光中,又看見那肥胖的,青布棉袍,黑布馬褂的背影。唉!我不知何時再能與他相見!

    posted @ 2005-12-21 19:03 李嵐 閱讀(2208) | 評論 (19)編輯 收藏

    前兩種方式webwork的wiki里有,就不多說了,點這里可以查看
    而以下的給出的思路是webwork mail list的討論的一種方案,應該是最好的一種方案。

    代碼1:

    public class SpringContainer implements Container {
        
    private
     ApplicationContext applicationContext;

        
    public SpringContainer(ServletContext servletContext) 
    {
            
    this.applicationContext =
     WebApplicationContextUtils.getWebApplicationContext(servletContext);
        }


        
    public SpringContainer(ApplicationContext applicationContext) {
            
    this.applicationContext =
     applicationContext;
        }


        
    /**
         * 
    @param key
         *            component class type or component name
         * 
    @return @throws

         *         ComponentNotFoundException
         
    */

        
    public Object getComponent(Object key) throws ComponentNotFoundException {
            
    if (applicationContext == null
    )
                
    throw new IllegalStateException("Spring Application context has not been set"
    );
            
    if (key == null
    )
                
    throw new ComponentNotFoundException("The component key can not be null"
    );
            
    if (key instanceof Class) 
    {
                Map beans 
    =
     applicationContext.getBeansOfType((Class) key);
                
    if (beans == null
    )
                    
    throw new ComponentNotFoundException("The container is unable to resolve single instance of " +
     ((Class) key).getName()
                            
    + ", none instances found"
    );
                
    if (beans.size() == 0 || beans.size() > 1
    )
                    
    throw new ComponentNotFoundException("The container is unable to resolve single instance of " +
     ((Class) key).getName()
                            
    + ", number of instances found was: " +
     beans.size());
                key 
    =
     beans.keySet().iterator().next();
            }

            
    return applicationContext.getBean(key.toString());
        }


        
    public void reload() {
            close();
            ((AbstractApplicationContext) applicationContext).refresh();
        }


        
    public void autowireComponent(Object bean) {
            ((AbstractApplicationContext) applicationContext).getBeanFactory().autowireBeanProperties(bean, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, 
    false
    );
        }


        
    public void close() {
            ((AbstractApplicationContext) applicationContext).close();
        }


    }

    代碼2:
    public class ComponentAutowireInterceptor implements Interceptor {


        
    public void destroy() 
    {
            
    // TODO Auto-generated method stub

        }


        
    public void init() {
            
    // TODO Auto-generated method stub

        }


        
    public String intercept(ActionInvocation invocation) throws Exception {
            Application.getInstance().getContainer().autowireComponent(invocation.getAction());
            
    return
     invocation.invoke();
        }


    }


    這幾段代碼,你不需要在spring里配置action,也不需要在xwork.xml里面配置external-ref。只要保證action引用的東東和spring里面同名就能夠auto wire by name了。

    原理:攔截器會在每個action之前調用autowireComponent(invocation.getAction())。這樣spring就會去自動組裝這個傳進來的action對象,而action對象里的屬性和spring里的bean id同名。所以spring就會自動將application.xml里對應的bean注射到action的屬性里去,從而達到把action按用戶希望的方式組裝起來的目的。

    如:
    appliaction.xml
        <bean id="myService">
            
    <property name="target">
                
    <bean class="myServiceDefaultImpl" autowire="byName">
              
    </property>
        
    </bean>

    xwork.xml
            <action name="myAction" class="myAction">
                
    <result name="success">/success.ftl</result>
            
    </action>

    Action:
    public class myAction extends ActionSupport {
        protected myService;
             .......

        }

    最后記得要在web.xml配上listener-class

    posted @ 2005-11-23 13:52 李嵐 閱讀(922) | 評論 (0)編輯 收藏


    posts - 7, comments - 23, trackbacks - 0, articles - 0

    Copyright © 李嵐

    主站蜘蛛池模板: 91免费福利精品国产| 99久久免费国产特黄| 性感美女视频在线观看免费精品| 亚洲AV乱码久久精品蜜桃| 99久久婷婷免费国产综合精品| 亚洲裸男gv网站| 51午夜精品免费视频| 亚洲综合图色40p| 久久精品免费观看| 亚洲国产精品婷婷久久| 亚洲免费观看网站| 国产成人精品日本亚洲11| 女人张腿给男人桶视频免费版| 亚洲欧美熟妇综合久久久久| 成人免费视频88| 亚洲国产av高清无码| 天天影视色香欲综合免费| 亚洲精品国产成人| 毛片在线免费视频| 久久久亚洲精华液精华液精华液| 国产成人精品高清免费| jizz免费观看视频| 久久亚洲私人国产精品vA| 最近最新MV在线观看免费高清| 亚洲熟女www一区二区三区| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | v片免费在线观看| 国产V亚洲V天堂无码| 国产免费的野战视频| 99亚洲精品卡2卡三卡4卡2卡| 亚洲欧洲精品成人久久奇米网| 免费看成人AA片无码视频吃奶| 亚洲精品美女久久久久| 国产精品免费看久久久久| 美女巨胸喷奶水视频www免费| 久久久久亚洲AV无码永不| 免费黄色小视频网站| 国产精品网站在线观看免费传媒| 亚洲伦理一二三四| 久久久久久A亚洲欧洲AV冫| 免费在线视频你懂的|