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

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

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

    posts - 33, comments - 46, trackbacks - 0, articles - 2

    集成struts+spring的新思路

    Posted on 2007-01-11 17:27 在路上... 閱讀(2206) 評論(7)  編輯  收藏 所屬分類: JAVA相關(guān)

    網(wǎng)上有好多種struts+spring的集成思路,例如 http://dev.csdn.net/author/hql638/35679289a9a94e4f97e999508df064db.html
    這篇文章就介紹得很詳細(xì),介紹了下面三種方法:

    使用 Spring 的 ActionSupport 類整合 Structs
    使用 Spring 的 DelegatingRequestProcessor 覆蓋 Struts 的 RequestProcessor
    將 Struts Action 管理委托給 Spring 框架
    其實在使用spring+struts時,我們往往就是想使用Ioc的特性,減少業(yè)務(wù)邏輯組件之間的依賴關(guān)系,通過高度靈活的XML配置提高業(yè)務(wù)的靈活性和擴(kuò)展性。步驟如下:
    首先依舊加入spring的context plugin到struts-config.xml中

    < struts-config >
    ??
    < plug-in
    ?????????
    className ="org.springframework.web.struts.ContextLoaderPlugIn" >
    ?????
    < set-property? property ="contextConfigLocation"
    ?????????value
    ="/WEB-INF/applicationContext.xml" ? />
    ??
    </ plug-in >
    </ struts-config >


    然后包裝一下struts的DispatchAction,提供一個方法可以直接獲取Spring的WebApplicationContext對象。

    package ?com.cngd.dataview.action;?

    import ?org.apache.struts.actions.DispatchAction;
    import ?org.springframework.web.context.WebApplicationContext;
    import ?org.springframework.web.struts.DelegatingActionUtils;?

    /** ? */ /**
    ?*?Date:?2007-1-11?16:57:48
    ?*
    ?*?
    @author ?midea0978
    ?*?
    @version ?1.0
    ?
    */

    public ? class ?CommDispatchAction? extends ?DispatchAction? {
    ????
    protected ?WebApplicationContext?getAppContext()? {
    ????????WebApplicationContext?context?
    = ?DelegatingActionUtils.findRequiredWebApplicationContext( this .getServlet(),? null );
    ????????
    return ?context;
    ????}

    }
    ?


    然后自己的action可以直接從CommDispatchAction繼承通過this.getAppContext();獲取WebApplicationContext,這樣對原有的
    struts程序架構(gòu)體系幾乎沒有太大的變化,同時可以引入spring的Ioc特性到現(xiàn)有系統(tǒng)中,這個與ActionSupport 中的
    getWebApplicationContext()方法類似了,但是可以不必拘泥于在兩者之間轉(zhuǎn)來轉(zhuǎn)去的。

    package ?com.cngd.dataview.action;?

    import ?com.spring.bo.WeatherService;
    import ?org.apache.log4j.Logger;
    import ?org.apache.struts.action.ActionForm;
    import ?org.apache.struts.action.ActionForward;
    import ?org.apache.struts.action.ActionMapping;
    import ?org.springframework.jdbc.core.JdbcTemplate;
    import ?org.springframework.jdbc.datasource.DriverManagerDataSource;
    import ?org.springframework.web.context.WebApplicationContext;?

    import ?javax.servlet.http.HttpServletRequest;
    import ?javax.servlet.http.HttpServletResponse;?

    /** ? */ /**
    ?*?Date:?2007-1-11?16:19:15
    ?*
    ?*?
    @author ?midea0978
    ?*?
    @version ?1.0
    ?
    */

    public ? class ?DataViewAction? extends ?CommDispatchAction? {
    ????
    static ?Logger?logger? = ?Logger.getLogger(DataViewAction. class .getName());?

    ????
    /** ? */ /**
    ?????*?
    @param ?actionMapping
    ?????*?
    @param ?actionForm
    ?????*?
    @param ?request
    ?????*?
    @param ?response
    ?????*?
    @return
    ?????*?
    @throws ?Exception
    ?????
    */

    ????
    public ?ActionForward?genReport(ActionMapping?actionMapping,?ActionForm?actionForm,?HttpServletRequest?request,?HttpServletResponse?response)
    ????????????
    throws ?Exception? {
    ????????String?yymm?
    = ?request.getParameter( " yymm " );
    ????????String?opname?
    = ?request.getParameter( " opname " );
    ????????logger.info(
    " 參數(shù): " ? + ?yymm? + ? " , " ? + ?opname);
    ????????WebApplicationContext?ctx?
    = ? this .getAppContext();
    ????????WeatherService?srv?
    = ?(WeatherService)?ctx.getBean( " weatherServiceBean " );
    ????????srv.showWeather();
    ????????DriverManagerDataSource?ds?
    = ?(DriverManagerDataSource)?ctx.getBean( " datasource " );
    ????????JdbcTemplate?jt?
    = ? new ?JdbcTemplate(ds);
    ????????String?sql?
    = ? " select?count(*)?from?tab " ;
    ????????
    int ?rows? = ?jt.queryForInt(sql);
    ????????System.out.println(rows);
    ????????
    return ?actionMapping.findForward( " viewresult " );
    ????}
    ?


    }
    ?

    Feedback

    # re: 集成struts+spring的新思路  回復(fù)  更多評論   

    2007-01-12 09:04 by jackhlp
    這樣集成的話,具體的每一個Action都與Spring耦合在一起了,因為你繼承DispatchAction的類里面返回的是一個WebApplicationContext。

    # re: 集成struts+spring的新思路  回復(fù)  更多評論   

    2007-01-13 21:53 by Christ Chang
    這個也算新思路?????????

    # re: 集成struts+spring的新思路  回復(fù)  更多評論   

    2007-01-13 22:47 by 千山鳥飛絕
    同意一樓的說法,你這樣做,并沒有很好的利用spring的輕耦合的特點。
    IOC的目的之一也就是降低耦合。

    所以不覺得你這樣做有多好。

    # re: 集成struts+spring的新思路[未登錄]  回復(fù)  更多評論   

    2007-01-22 14:02 by hiswing
    不管怎么說,還是值得鼓勵的。

    # re: 集成struts+spring的新思路  回復(fù)  更多評論   

    2007-01-27 19:02 by 別出風(fēng)頭了你
    其實這是模仿webwork和springMVC的一種和手段,目的就是為了,讓action中service不需要任何方式,只需要getter和setter的方式就可以得到,其實這也是為病入膏肓的struts1,一種補(bǔ)救,
    其實如果有必要的話,你可以嘗試使用struts2,基于webwork的技術(shù),完全整合如spring,不需要任何東西,其實struts2的好處,不僅僅這么點,具體的需要你自己領(lǐng)悟了。

    # re: 集成struts+spring的新思路  回復(fù)  更多評論   

    2007-01-28 12:50 by 剛才整合兩種
    我也是你這么整合的,但好像他們說這樣不好。具體我也不知道。。郁悶呀。那大家提供一個好的方法來整合咯。。我要 學(xué)習(xí)!

    # re: 集成struts+spring的新思路  回復(fù)  更多評論   

    2007-07-15 12:02 by sclsch
    如果你可繼承一個action,而不是dispatchaction,怎么辦?
    主站蜘蛛池模板: 国产在线观看麻豆91精品免费| 狠狠综合亚洲综合亚洲色| 狠狠色伊人亚洲综合成人| 亚洲人成网站18禁止一区| 免费欧洲美女牲交视频| 国产伦精品一区二区三区免费下载| 青青青免费国产在线视频小草| 0588影视手机免费看片| 精品香蕉在线观看免费| 2021免费日韩视频网| 精品久久久久成人码免费动漫 | 亚洲性天天干天天摸| 亚洲va无码专区国产乱码| 亚洲成a人片77777kkkk| 亚洲AV无码不卡在线播放| 亚洲免费在线视频| 亚洲电影唐人社一区二区| 亚洲a级片在线观看| 亚洲人成电影网站色| 久久亚洲色WWW成人欧美| 黄色免费网站在线看| 窝窝影视午夜看片免费| 在线免费视频你懂的| 久久99青青精品免费观看| 国产成人精品免费视频大| 特级做A爰片毛片免费69 | 免费人成在线观看网站| 777爽死你无码免费看一二区| aⅴ在线免费观看| 成人毛片视频免费网站观看| 国产国产人免费人成免费视频 | 最近中文字幕电影大全免费版| 日本人的色道免费网站| 午夜电影免费观看| 亚洲天堂中文字幕在线| 亚洲av无码精品网站| 亚洲一区二区免费视频| 黄色一级毛片免费| 中文精品人人永久免费 | 一级中文字幕免费乱码专区| 免费无码作爱视频|