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

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

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

    WebWork2.2中結合Spring:"新的方式"

    本文最后更新為2005-11-28

    請以英文版本為準,謝謝.本文不可能實時更新.

    本文大部分內容來自http://wiki.opensymphony.com/display/WW/Spring,本文主要是把內容翻譯過來并補充一下內容,請以英文版本為準. :) 

    在WebWork2.2中,spring已經作為IOC的支持基礎,原有的Spring結合的方法已經分別溶入到XWork和WebWork的源碼中.XWork的IoC將要被拋棄了.

    當然原有的組合辦法依然有效,一些類改了包名和類名,但是使用方法類似.

    在WebWork2.2中,還有一種新的辦法來結合Spring.


    開啟Spring組合

     在WebWork中開啟Spring支持是非常簡單的,把最新版本的Spring的jar放到你的classpath中,然后在webwork.properties里面設置如下選項:

    webwork.objectFactory = spring 

    此時使用的類是: com.opensymphony.webwork.spring.WebWorkSpringObjectFactory,也可以指定為其他SpringObjectFactory.

    缺省Spring的裝配策略是 by name,可以修改webwork.properties改為其他方式,例如type,name,auto等


     
     這時所有對象都首先來用Spring來創建.如果Spring沒有創建這些對象,WebWork會自己創建這些對象. 然后,你需要在web.xml里面設置Spring的listener:

      <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener> 

    Spring配置示例

     這時,你可以添加一個標準的Spring配置文件:WEB-INF/applicationContext.xml,舉例如下:

    <?xml version="1.0" encoding="UTF-8"?>
                <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
                <beans default-autowire="autodetect">
                <bean id="personManager" class="com.acme.PersonManager"/>
                ...
                </beans>

    使用Spring初始化Action 

    一般來說,你在xwork.xml里面為每個Action指定類.當使用SpringObjectFactory的時候(如果按照上面的方法配置了), 這意味著WebWork會首先請求Spring創建這個Action并按照缺省的自動裝配策略設定依賴的屬性.SpringObjectFactory還會調用所有bean的處理器來處理事務,安全等方面的代理機制.不需要特殊的設置Spring就可以自動確定.對大多數的應用,這會配置你的Action所需的服務和依賴,來達到你的所有要求.

     我們強烈推薦你找到一種聲明的方法來讓spring知道該為你的Action提供什么.這包括把你的Action里的屬性命名為在Spring配子文件里定義的Bean的名字一致,這樣可以實現基于名字的自動裝配,還可以使用JDK5的標注來聲明事務和安全層需要.如果你能找到方法讓Spring知道你的Action需要什么而且不需要在applicationContext.xml里面進行外部配置的話,你就不需要在2個地方維護配置了.

     

    然而,有時你可能想要Spring來完全管理Bean.這是有實際意義的,例如,你如果想對你的Bean使用AOP或者Spring的相關技術,例如Acegi.為了達到這個目的,你僅僅要做的就是在xwork.xml里移除你的WebWork Action的類的屬性,然后在applicationContext.xml里面配置這個Bean.
     
     你的xwork.xml文件里面的action應該這樣定義: 

    <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.1.dtd">
    <xwork>
      <include file="webwork-default.xml"/>
      <package name="default" extends="webwork-default">
        <action name="foo" class="foo">
          <result>foo.ftl</result>
        </action>
      </package>
      <package name="secure" namespace="/secure" extends="default">
        <action name="bar" class="bar">
          <result>bar.ftl</result>
        </action>
      </package>
    </xwork>

    Where you have a Spring bean defined in your applicationContext.xml named "bar". Note that the com.acme.Foo action did not need to be changed, because it can be autowired. 

    (你需要在你的applicationContext.xml里定義一個名字為"bar"的bean. 注意 com.acme.Foo不需要被改變,因為它是自動裝配的.)


     記住:這個不是必須的.僅僅當你需要使用Spring的攔截器或者IoC來修飾Action以便覆蓋Webwork的缺省行為時,這才是必要的.要記住一點,WebWork的Spring組合會執行標準的IoC,使用你指定的自動裝配策略,即使你沒有明確第在Spring中映射每個Action.所以通常你不需要做這個,但是知道怎么做對你是有好處的,如果你需要的話.


    和以前版本的區別

     其實本質上是一樣的,主要區別如下:

    •  可以不配置SpringObjectFactoryListenter,直接在webwork.properties里指定.
    •  在webwork.properties里可以指定autoWire策略.
    •  SpringObjectFactory里面多了一個buildAction,用來根據前面提到的命名習慣查找action. (已經刪除)


    其他 

    其實通過查看源碼可以知道,還有幾個其他的類,可以做其他的設置,例如SpringProxyableObjectFactory,SessionContextSpringProxyableObjectFactory等,至于如何使用,那就慢慢研究吧 :)

     

    posted on 2005-09-21 18:28 Scud(飛云小俠) 閱讀(6361) 評論(13)  編輯  收藏 所屬分類: WEB

    評論

    # re: WebWork2.2中結合Spring:"新的方式" 2005-09-21 19:43 flyingbug

    這次可以在Tomcat5.X上運行嗎?
    webwork2.1.x和Spring結合似乎不能運行在Tomcat5.x下  回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式" 2005-09-21 19:46 scud

    一直都可以啊
    webwork2.1.x也可以的.你的是什么問題哪?  回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式" 2005-09-21 19:53 flyingbug

    在Tomcat5.0和Tomcat5.5的最新release的版本上
    配置好后啟動Tomcat
    Tomcat插件在Eclipse的console中不停的彈出使用apache.common.Digester解析TLD的log
    Tomcat始終無法啟動成功  回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式" 2005-09-21 20:51 scud(飛云小俠)

    那和webwork,spring都沒關系啊. 那應該是tomcat插件的問題.
    單獨發布有沒有問題? 反正我從來沒有遇到過這個問題

    或者試試別的插件,例如eclipse的wtp或者myeclipse  回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式" 2005-09-22 10:46 flyingbug

    恩,我再試一下WTP吧:)  回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式" 2005-09-22 11:17 flyingbug

    WTP下沒問題,用WTP開發了N久的Web Service程序,今天經你提醒才想起它也可以開發J2EE的程序,真是暈啊~人果然是習慣性的動物^_^  回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式"(已更新) 2005-10-17 13:57 gf

    為什么配置成功了,執行了action,但看不到結果啊,在控制臺里也看不到輸出  回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式"(已更新) 2005-10-17 14:23 scud(飛云小俠)

    這個最好貼出你的程序,否則我也不清楚啊 或者把程序發郵件給我,最好能run起來的程序  回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式"(已更新) 2005-10-17 15:29 gf

    好的,飛云小俠,請問你的E-mail多少啊?
    是不是這個?cnscud@gmail.com  回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式"(已更新) 2005-10-17 16:30 scud(飛云小俠)

    是的  回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式"(已更新) 2005-11-17 15:39 to flyingbug

    Tomcat插件在Eclipse的console中不停的彈出使用apache.common.Digester解析TLD的log 是以為你的Log等級為DEBUG,級別很低,所以N多的信息要打印出來,而你的機器配置估計有問題,或者Eclipse截獲這些數據到緩沖中受不了。所以你的程序啟動不了。把LOG的級別設置為ERROR再試一下。  回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式" 2006-05-03 16:24 aaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    在web.xml中一添加
    <listener><listener-class> org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    然后起動tomcat就出現如下錯誤
    2006-5-3 16:17:32 org.apache.catalina.core.StandardContext listenerStart
    嚴重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
    java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1338)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1187)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3640)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4127)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:603)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:535)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1118)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
    at org.apache.catalina.core.StandardService.start(StandardService.java:450)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:680)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:536)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:275)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
    2006-5-3 16:17:32 org.apache.catalina.core.StandardContext listenerStart

    好像是jar包的問題,但我找不出,希望給予幫助!!謝謝
      回復  更多評論   

    # re: WebWork2.2中結合Spring:"新的方式" 2007-03-05 01:13 haike

    spring-web-2.0.1.jar  回復  更多評論   

    <2005年9月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    導航

    統計

    公告

    文章發布許可
    創造共用協議:署名,非商業,保持一致

    我的郵件
    cnscud # gmail


    常用鏈接

    留言簿(15)

    隨筆分類(113)

    隨筆檔案(103)

    相冊

    友情鏈接

    技術網站

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲欧洲无码一区二区三区| 亚洲网站视频在线观看| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 亚洲三级在线观看| 人人狠狠综合久久亚洲| 一区视频免费观看| 日日麻批免费40分钟无码 | 国产亚洲免费的视频看| 亚洲香蕉免费有线视频| 日韩一级免费视频| 亚洲精品美女久久久久99| 亚洲人成777在线播放| 免费国产黄网站在线看| 无码一区二区三区亚洲人妻| 久久久久久国产a免费观看不卡 | 国产日韩成人亚洲丁香婷婷| 亚洲狠狠综合久久| 亚洲国产无线乱码在线观看| 亚洲综合久久精品无码色欲| 成人免费视频一区二区| 每天更新的免费av片在线观看| 国产成人在线观看免费网站| 国产A在亚洲线播放| 亚洲一区二区三区在线观看网站| 国产99久久久久久免费看| 两个人的视频www免费| 无码国产精品一区二区免费式影视| 97公开免费视频| 国产一级淫片免费播放| 亚洲一区二区在线视频| 国产亚洲成在线播放va| 午夜视频免费在线观看| 国产v片免费播放| 久久久久亚洲av无码专区喷水| 亚洲av成人一区二区三区在线播放| 成全视频免费观看在线看| 日韩成人在线免费视频| 亚洲精品视频在线| 一边摸一边桶一边脱免费视频| 4hu四虎最新免费地址| 亚洲区小说区激情区图片区|