<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 在路上... 閱讀(2207) 評論(7)  編輯  收藏 所屬分類: JAVA相關

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

    使用 Spring 的 ActionSupport 類整合 Structs
    使用 Spring 的 DelegatingRequestProcessor 覆蓋 Struts 的 RequestProcessor
    將 Struts Action 管理委托給 Spring 框架
    其實在使用spring+struts時,我們往往就是想使用Ioc的特性,減少業務邏輯組件之間的依賴關系,通過高度靈活的XML配置提高業務的靈活性和擴展性。步驟如下:
    首先依舊加入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程序架構體系幾乎沒有太大的變化,同時可以引入spring的Ioc特性到現有系統中,這個與ActionSupport 中的
    getWebApplicationContext()方法類似了,但是可以不必拘泥于在兩者之間轉來轉去的。

    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(
    " 參數: " ? + ?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的新思路  回復  更多評論   

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

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

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

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

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

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

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

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

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

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

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

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

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

    2007-07-15 12:02 by sclsch
    如果你可繼承一個action,而不是dispatchaction,怎么辦?
    主站蜘蛛池模板: 8888四色奇米在线观看免费看| 青青青免费国产在线视频小草| 国产精品深夜福利免费观看| 亚洲va久久久噜噜噜久久男同| MM1313亚洲精品无码久久| 99国产精品视频免费观看| 亚洲色欲久久久久综合网| 亚洲中文字幕久久久一区| 亚洲第一成年网站大全亚洲| a级毛片免费网站| 免费看无码自慰一区二区| 亚洲AV无码一区二区三区在线观看 | 亚洲无成人网77777| 一级有奶水毛片免费看| 成人免费视频77777| 亚洲不卡AV影片在线播放| avtt天堂网手机版亚洲| 亚洲国产精品一区二区久| 中文字幕看片在线a免费| 免费一级毛片在级播放| 亚洲阿v天堂在线| 深夜久久AAAAA级毛片免费看| 成年女人视频网站免费m| 亚洲成人动漫在线观看| 69视频免费观看l| 亚洲AV日韩AV永久无码久久 | 久久夜色精品国产亚洲AV动态图 | 亚洲国产系列一区二区三区| 97公开免费视频| 亚洲国产精品无码久久SM| caoporm碰最新免费公开视频| 国产不卡免费视频| 亚洲精品无码人妻无码| 久久午夜免费视频| 亚洲国产精品综合一区在线| 91福利免费视频| 久久久久亚洲AV成人片| 男人j进女人p免费视频| 国产又大又黑又粗免费视频 | 亚洲精品国产精品乱码不卡| 国产成人精品日本亚洲网址|