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

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

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

    隨筆-34  評論-1965  文章-0  trackbacks-0

    IoC(Inversion of Control,以下譯為控制反轉)隨著Java社區中輕量級容器(Lightweight Contianer)的推廣而越來越為大家耳熟能詳。在此,我不想再多費唇舌來解釋“什么是控制反轉”和“為什么需要控制反轉”。因為互聯網上已經有非常多的文章對諸如此類的問題作了精彩而準確的回答。大家可以去讀一下Rod Johnson和Juergen Hoeller合著的《Expert one-on-one J2EE Development without EJB》或Martin Fowler所寫的《Inversion of Control Containers and the Dependency Injection pattern》。

    言歸正傳,本文的目的主要是介紹在Struts 2中實現控制反轉。

    歷史背景

    眾所周知,Struts 2是以Webwork 2作為基礎發展出來。而在Webwork 2.2之前的Webwork版本,其自身有一套控制反轉的實現,Webwork 2.2在Spring 框架的如火如荼發展的背景下,決定放棄控制反轉功能的開發,轉由Spring實現。值得一提的是,Spring確實是一個值得學習的框架,因為有越來越多的開源組件(如iBATIS等)都放棄與Spring重疊的功能的開發。因此,Struts 2推薦大家通過Spring實現控制反轉。

    具體實現

    首先,在開發環境中配置好Struts 2的工程。對這部分仍然有問題的朋友,請參考我的早前的文章。

    然后,將所需的Spring的jar包加入到工程的構建環境(Build Path)中,如下圖1所示:

    圖1 所依賴的Spring的jar包
    圖1 所依賴的Spring的jar包

    本文使用的是Spring 2.0,Spring強烈建議大家在使用其jar包時,只引用需要的包,原因是Spring是一個功能非常強大的框架,其中有些功能是您不需要的;而且Spring提倡的是“按需所取”,而不是EJB的“愛我就要愛我的一切”。當然,如果你怕麻煩或者是不清楚每個包的作用,引用一個Spring的總包也未嘗不可。

    接下來,就要修改WEB-INF\web.xml文件了,內容為:

    <? xml version="1.0" encoding="UTF-8" ?>
    < web-app version ="2.4" xmlns ="http://java.sun.com/xml/ns/j2ee"
    ? ? xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    ? ? xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee?
    ? ? http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    >

    ? ?
    < display-name > Struts 2 IoC Demo </ display-name >

    ? ?
    < filter >
    ? ? ? ?
    < filter-name > struts-cleanup </ filter-name >
    ? ? ? ?
    < filter-class >
    ? ? ? ? ? ? org.apache.struts2.dispatcher.ActionContextCleanUp
    ? ? ? ?
    </ filter-class >
    ? ?
    </ filter >

    ? ?
    < filter >
    ? ? ? ?
    < filter-name > struts2 </ filter-name >
    ? ? ? ?
    < filter-class >
    ? ? ? ? ? ? org.apache.struts2.dispatcher.FilterDispatcher
    ? ? ? ?
    </ filter-class >
    ? ?
    </ filter >

    ? ?
    < filter-mapping >
    ? ? ? ?
    < filter-name > struts-cleanup </ filter-name >
    ? ? ? ?
    < url-pattern > /* </ url-pattern >
    ? ?
    </ filter-mapping >

    ? ?
    < filter-mapping >
    ? ? ? ?
    < filter-name > struts2 </ filter-name >
    ? ? ? ?
    < url-pattern > /* </ url-pattern >
    ? ?
    </ filter-mapping >

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

    ? ?
    < welcome-file-list >
    ? ? ? ?
    < welcome-file > index.html </ welcome-file >
    ? ?
    </ welcome-file-list >
    </ web-app >
    清單1 WEB-INF\web.xml

    大家一看便知道,主要是加入Spring的ContextLoaderListener監聽器,方便Spring與Web容器交互。

    緊接著,修改Struts.properties文件,告知Struts 2運行時使用Spring來創建對象(如Action等),內容如下:

    struts.objectFactory = spring
    清單2 classes\struts.properties

    再下來,遵循Spring的原則——面向接口編程,創建接口ChatService,代碼如下:

    package tutorial;

    import java.util.Set;

    public interface ChatService {
    ? ?Set
    < String > getUserNames();
    }
    清單3 tutorial.ChatService.java

    然后,再創建一個默認實現ChatServiceImpl,代碼如下:

    package tutorial;

    import java.util.HashSet;
    import java.util.Set;

    public class ChatServiceImpl implements ChatService {

    ? ?
    public Set < String > getUserNames() {
    ? ? ? ?Set
    < String > users = new HashSet < String > ();
    ? ? ? ?users.add(
    " Max " );
    ? ? ? ?users.add(
    " Scott " );
    ? ? ? ?users.add(
    " Bob " );
    ? ? ? ?
    return users;
    ? ?}


    }
    清單4 tutorial.ChatServiceImpl.java

    接下來,就該新建Action了。tutorial.ChatAction.java的代碼如下:

    package tutorial;

    import java.util.Set;

    import com.opensymphony.xwork2.ActionSupport;

    public class ChatAction extends ActionSupport {
    ? ?
    private static final long serialVersionUID = 8445871212065L ;?
    ? ?
    ? ?
    private ChatService chatService;
    ? ?
    private Set < String > userNames;

    ? ?
    public void setChatService(ChatService chatService) {
    ? ? ? ?
    this .chatService = chatService;
    ? ?}

    ? ?
    ? ?
    public Set < String > getUserNames() {
    ? ? ? ?
    return userNames;
    ? ?}

    ? ?
    ? ?@Override
    ? ?
    public String execute() {
    ? ? ? ?userNames
    = chatService.getUserNames();
    ? ? ? ?
    return SUCCESS;
    ? ?}

    ? ?
    }
    清單5 tutorial.ChatAction.java

    ChatAction類使用屬性(Getter/Setter)注入法取得ChatService對象。

    然后,配置Spring的applicationContext.xml(位于WEB-INF下)文件,內容如下:

    <? xml version="1.0" encoding="UTF-8" ?>
    < beans xmlns ="http://www.springframework.org/schema/beans"
    ? ? xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    ? ? xsi:schemaLocation
    ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" >
    ? ?
    < bean id ="chatService" class ="tutorial.ChatServiceImpl" />
    ? ?
    < bean id ="chatAction" class ="tutorial.ChatAction" scope ="prototype" >
    ? ? ? ?
    < property name ="chatService" >
    ? ? ? ? ? ?
    < ref local ="chatService" />
    ? ? ? ?
    </ property >
    ? ?
    </ bean >
    </ beans >
    清單6 WEB-INF\applicationContext.xml

    上述代碼有二點值得大家注意的:

    1. Struts 2會為每一個請求創建一個Action對象,所以在定義chatAction時,使用scope="prototype"。這樣Spring就會每次都返回一個新的ChatAction對象了;
    2. 因為ChatServiceImpl被配置為默認的scope(也即是singleton,唯一的),所以在實現時應保證其線程安全(關于編寫線程安全的代碼的討論已經超出本文的范圍,更超出了本人的能力范圍,大家可以參考Addison Wesley Professional出版的《Java Concurrency in Practice》)。

    接下來,在classes/struts.xml中配置Action,內容如下:

    <! DOCTYPE struts PUBLIC
    ? ? ? ? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    ? ? ? ? "http://struts.apache.org/dtds/struts-2.0.dtd"
    >
    < struts >
    ? ?
    < include file ="struts-default.xml" /> ? ?
    ? ??
    ? ?
    < package name ="Struts2_IoC" extends ="struts-default" >
    ? ? ? ?
    < action name ="Chat" class ="chatAction" >
    ? ? ? ? ? ?
    < result > /UserList.jsp </ result >
    ? ? ? ?
    </ action >
    ? ?
    </ package > ? ?
    </ struts >
    清單7 classes\struts.xml

    這里的Action和平常不同的就是class屬性,它對應于Spring所定義的bean的id,而不是它的類全名。

    最后,讓我們看看/UserList.jsp,內容如下:

    <% @ page contentType = " text/html; charset=UTF-8 " %>
    <% @ taglib prefix = " s " uri = " /struts-tags " %>
    < html >
    < head >
    ? ?
    < title > User List </ title >
    </ head >

    < body >
    ? ?
    < h2 > User List </ h2 >
    ? ?
    < ol >
    ? ?
    < s:iterator value ="userNames" >
    ? ? ? ?
    < li >< s:property /></ li >
    ? ?
    </ s:iterator >
    ? ?
    </ ol >
    </ body >
    </ html >
    清單8 /UserList.jsp

    大功告成,分布運行應用程序,在瀏覽器中鍵入http://localhost:8080/Struts2_IoC/Chat.action,出現如圖2所示頁面:

    圖2 /ListUser.jsp
    圖2 /ListUser.jsp

    總結

    通過Spring在Struts 2上實現控制反轉是強烈推薦的做法,當然您也可以組合其它的實現(如Pico等)。

    posted on 2006-12-28 17:37 Max 閱讀(33786) 評論(139)  編輯  收藏 所屬分類: Struts 2.0系列
    評論共2頁: 1 2 下一頁 

    評論:
    # re: 在Struts 2中實現IoC 2007-04-13 10:30 | fff
    @AlleNny
    老大怎么能把借口配到配置文件里面的,接口是不能實現的.  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-04-18 10:51 | liujian
    你好,我也想要一份代碼,我懷疑自己的包有問題
    我的郵箱是:film911@163.com ,非常感謝  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-04-18 14:07 | liujian
    已經調試成功,原來放錯了一個包,謝謝您的分享  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-04-20 15:05 | look
    ????  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-04-20 15:09 | look
    誰有源碼發給我一份謝謝!cbz_com0826@163.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-04-21 16:24 | look
    感謝max發送的源碼包!
    原來我少導了一個包,struts2-spring-plugin-2.0.6,這個包是不是就是相當也spring中的plugin的作用吧!  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-04-25 09:35 | ddd
    剛看完你的文章, 有幾點不太明白。。

    Action里面有chatService的setter, 和getUserName(感覺這個是否不需要)

    使用注入的方法, 是否Action里面, 就不需要對chatService進行New啥的,

    就可以得到chatService的Instance了?  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-04-25 09:41 | ddd
    Dependency Injection 與 IoC又有什么區別呢?  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-04-27 16:28 | Max
    @ddd
    請參考Martin Fowler所寫的《Inversion of Control Containers and the Dependency Injection pattern》  回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2007-04-30 05:15 | free
    不需要如此麻煩,當你定義了setter和spring的factory,并不需要任何配置就可以析取出Spring中的bean  回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2007-05-12 19:56 | lucky
    404錯誤,有如下錯誤提示,大家能幫看看大概是什么地方什么錯誤嗎?謝謝了

    2007-5-12 19:40 org.apache.catalina.core.ApplicationContext log
    嚴重: Exception starting filter struts2
    Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]

    ......

    2007-5-12 19:40 org.apache.catalina.core.StandardContext star
    嚴重: Error filterStart
    2007-5-12 19:40 org.apache.catalina.core.StandardContext start
    嚴重: Context startup failed due to previous errors  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-05-12 22:21 | cookie
    請教各位
    為什么把包含jar包的文件夾copy到WEB-INF/lib目錄下在Eclipse工程中顯示出來不出這些jar包來呢
    用MyEclipse建的web工程中把包含jar包的文件夾復制到lib下就可以顯示這些jar包
    那Spring包下lib文件夾下的那么多文件夾怎么才能把他們在工程下顯示出來呀?
    各位老大都是怎么解決這個問題的呀?  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-05-12 22:48 | cookie
    那個web.xml中的struts-cleanup的<filter>是做什么用的呀
    以前的教程里沒有呀
    能解釋一下嗎?謝謝  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-05-15 09:39 | Max
    # re: 在Struts 2中實現IoC 2007-05-15 09:44 | Max
    @lucky
    應該是沒有加struts2-spring-plugin-2.0.6.jar包  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-05-16 17:39 | zlyyi
    要是我有多個入注 怎么辦  可不可以 指定那個入注呢 謝謝 我也是初學
      回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-05-18 09:12 | Max
    @zlyyi
    “多個入注”是什么意思?你可以看看Spring框架。  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-06-06 15:19 | small.sprite
    照著寫了,可是運行不了,能發一份源碼嗎?
    117148038@qq.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-06-18 17:48 | 想飛就飛
    少說了一個包 struts2-spring-plugin-2.0.6.jar
    btw:
    樓主的代碼是不是用什么工具調整過?
    < html >
    < head >
    < title > User List </ title >
    </ head >

    < > 或者 ( )兩邊都存在空格,如此工整?

    如果是的話,用什么工具調整過代碼啊?
    推薦一下,俺也用用  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-06-19 00:54 | Max
    @想飛就飛
    我沒有用任何工具,只是使用了Blogjava的“添加新隨筆”中的“插入代碼”功能。  回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2007-06-19 13:18 | yang
    我的服務器 WebLogic 9.2 中總顯示:

    <2007-6-19 下午12時58分01秒 CST> <Error> <HTTP> <BEA-101165> <Could not load user defined filter in web.xml: org.apache.struts2.dispatcher.FilterDispatcher.
    Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]
    at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:224)
    at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:195)
    at org.apache.struts2.config.BeanSelectionProvider.register(BeanSelectionProvider.java:155)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:131)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
    Truncated. see log file for complete stacktrace
    >

    我沒有你們說的 struts2-spring-plugin-2.0.6.jar

    能否發一份源碼給我,謝謝了!

      回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-06-21 20:30 | jezz
    @yang
    你的問題好像是缺少那個struts2-spring-plugin-2.0.6.jar包
    你下載那個struts2的框架時候里面帶的example!
    就有這個包你自己找找!  回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2007-07-06 01:36 | xy
    上面的例子做成功后,在配置中添加了SPRING2.0的AOP,結果報以下的錯誤:
    2007-07-06 01:26:20,218 - Caught OgnlException while setting property 'excludeMethods' on type '$Proxy7'.
    ognl.NoSuchPropertyException: $Proxy7.excludeMethods

    2007-07-06 01:26:20,218 - Caught OgnlException while setting property 'excludeMethods' on type '$Proxy8'.
    ognl.NoSuchPropertyException: $Proxy7.excludeMethods

    不知道是什么原因,請幫忙分析一下.  回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2007-07-06 04:06 | xy
    在加AOP后總是出現如下異常,不知是何原因:
    2007-07-06 04:00:55,968 - ... initialized Struts-Spring integration successfully
    2007-07-06 04:01:08,328 - Caught OgnlException while setting property 'excludeMethods' on type '$Proxy7'.
    ognl.NoSuchPropertyException: $Proxy7.excludeMethods
    at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:132)
    at com.opensymphony.xwork2.util.OgnlValueStack$ObjectAccessor.setProperty(OgnlValueStack.java:68)
    at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1656)
    at ognl.ASTProperty.setValueBody(ASTProperty.java:101)
    at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
    at ognl.SimpleNode.setValue(SimpleNode.java:246)
    at ognl.Ognl.setValue(Ognl.java:476)
    at com.opensymphony.xwork2.util.OgnlUtil.setValue(OgnlUtil.java:186)
    at com.opensymphony.xwork2.util.OgnlUtil.internalSetProperty(OgnlUtil.java:360)
    at com.opensymphony.xwork2.util.OgnlUtil.setProperties(OgnlUtil.java:76)
    at com.opensymphony.xwork2.util.OgnlUtil.setProperties(OgnlUtil.java:103)
    at com.opensymphony.xwork2.util.OgnlUtil.setProperties(OgnlUtil.java:90)
    at com.opensymphony.xwork2.ObjectFactory.buildInterceptor(ObjectFactory.java:183)
    at com.opensymphony.xwork2.config.providers.InterceptorBuilder.constructInterceptorReference(InterceptorBuilder.java:57)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.lookupInterceptorReference(XmlConfigurationProvider.java:864)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadInterceptorStack(XmlConfigurationProvider.java:699)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadInterceptorStacks(XmlConfigurationProvider.java:712)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadInterceptors(XmlConfigurationProvider.java:733)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:365)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:239)
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:398)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:455)
    at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:225)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:308)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:79)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3502)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4071)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:755)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:886)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:849)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1079)
    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:1011)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1003)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:437)
    at org.apache.catalina.core.StandardService.start(StandardService.java:450)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:2010)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
    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:271)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-07-06 12:24 | huiyino
    我照你寫的做了一遍 。。。OK。。。
    可是我加了些Bean進去就不行了。。。。。部署的時候出了這錯誤。。。。
    服務器報的錯誤部署不成功。。。。
    麻煩幫忙看看呀 。。。。

    2007-7-6 12:12:50 org.apache.struts2.spring.StrutsSpringObjectFactory <init> 信息: ... initialized Struts-Spring integration successfully 2007-7-6 12:12:50 org.apache.catalina.core.StandardContext start 嚴重: Error filterStart 2007-7-6 12:12:50 org.apache.catalina.core.StandardContext start 嚴重: Context [/Struts_spring] startup failed due to previous errors 2007-7-6 12:12:50 org.springframework.context.support.AbstractApplicationContext doClose


    struts.xml
    <action name="login" class="userLogin">
    <result>success.jsp</result>
    <result type="input">failed.jsp</result>
    </action>

    applicationContext.xml
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
    <property name="url"><value>jdbc:mysql://127.0.0.1:3306/usertest</value></property>
    <property name="username"><value>root</value></property>
    <property name="password"><value>123</value></property>
    </bean>
    <bean id="userBase" class="com.struts.spring.UserBase">
    <property name="dataSource">
    <ref local="dataSource"/>
    </property>
    </bean>
    <bean id="userLogin" class ="com.struts.spring.UserLogin">
    <property name ="userBase" >
    <ref local ="userBase" />
    </property >
    </bean>

    我是在搭建環境。。。。   回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-07-09 23:50 | Max
    @xy
    ognl.NoSuchPropertyException: $Proxy7.excludeMethods 你只貼出錯誤信息,我很難判斷什么錯誤。
    @huiyino
    我很難判斷什么錯誤。
    Sorry!  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-07-11 10:21 | mashiguang
    見意max把需要struts2-spring-plugin-2.0.6.jar這個包也寫到文章里,不然會在啟動是出錯,像我搞了半天才知道原來是缺這個包的緣故.
    我開始還以為是spring版本的問題.  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-07-11 22:39 | Max
    @mashiguang
    對不起,寫的時候忘了所這個包的依賴寫進去了。  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-08-06 10:06 | jueqinguzhu
    能不能給我發份源碼啊 小弟萬分感謝
    我自己配置了好久都沒成功
    jueqinguzhu@yahoo.com.cn  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-08-07 14:26 | jueqinguzhu
    MAX先生:
    謝謝你的代碼,為什么要在ACTION里面加上private static final long serialVersionUID = 8445871212065L 呢?  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-08-07 14:34 | jueqinguzhu
    而且這個serialVersionUID是可以自動生成,還是自己隨意寫的一個LONG值  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-08-07 16:03 | shengguolong
    404錯誤,我看了下,工程起不來。。。
    能否發一份源碼,十分感謝!!!
    郵箱:long2317479@gmail.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-08-08 09:31 | pn2007
    請發份源碼,謝謝! sailsoft@tom.com.  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-08-08 09:36 | Max
    @jueqinguzhu
    serialVersionUID用于串行化(Serialize)對象時,加上標識。我是使用Eclipse生成的值。  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-08-08 14:44 | liy
    你好!Max大哥,我運行Struts 2中實現Ioc的例子老是報404錯誤.
    能否發一份你的源碼給我比較一下?
    我的郵箱是followmephoe@yahoo.com.cn謝謝  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-08-09 21:46 | shengguolong
    我發現我的每個struts2+spring+hibernate都有這個問題,我有把spring-web.jar這個包加進去啊,郁悶了。
    能否幫我解答下。。。多謝了!!!
    2007-8-9 21:37:42 org.apache.catalina.core.StandardContext listenerStart
    嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.web.context.ContextLoader.<init>(ContextLoader.java:145)
    at org.springframework.web.context.ContextLoaderListener.createContextLoader(ContextLoaderListener.java:57)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:48)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4336)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:448)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
    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:589)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
    2007-8-9 21:37:42 org.apache.catalina.core.StandardContext start
    嚴重: Error listenerStart  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-08-20 13:15 | edzhh
    能否發我一份,我的配置后站點總是啟動不了,我的郵箱是:edzhh@163.com,
    Thank you!
      回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-08-20 16:39 | edzhh
    haha,我的問題:
    java.lang.SecurityException: class "org.apache.commons.collections.SequencedHashMap"'s signer information does not match signer information of other classes in the same package
    解決了,原因是:我的cglib-2.1.3.jar和hibernate3.jar兩個文件是在MyEclipse6.0下自動生成的,只要在MyEclipse5.0或5.5下生成拷貝到工程下覆蓋掉6.0下生成的就是了.  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-08-27 09:00 | sshzhangwg
    大哥,你把你的文章整理下,出本書,可能對整個軟件行業的幫助會更大些。  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-09-17 15:19 | sanjin2482
    我也發現了問題--可否也給我發份源代碼---sanjin2482@sina.com.cn
    x謝謝!!  回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2007-09-18 13:35 | yingjie
    max兄,看了你的文章十分收益,有個問題想請教一下,就是把struts1.2的項目改成struts2.0,請問要注意哪些方面啊?還有就是action要怎么寫合適,沒有了ActionForm那么數據存放到action中要怎么存啊?總之就是有很多的問題要請教你,希望你能教我,我的郵箱是yingjie853@163.com,MSN:yingjie_853@hotmail.com
    QQ:278537061,希望能和你交流一下
      回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-09-30 12:06 | origo
    @shengguolong
    你的錯誤是沒有添加commons logging的jar  回復  更多評論
      
    # 學習過程中也出現這種提示,請問什么原因?[未登錄] 2007-09-30 15:26 | Spring
    學習過程中也出現這種提示,請問什么原因?
    嚴重: Exception starting filter struts2
    Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]
    at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:223)
    at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:194)
    at org.apache.struts2.config.BeanSelectionProvider.register(BeanSelectionProvider.java:153)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:131)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
    at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3693)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4340)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
    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:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)  回復  更多評論
      
    # 學習過程中也出現這種提示,請問什么原因?[未登錄] 2007-09-30 15:33 | Spring
    @lucky
    我也碰到這種問題?請問你是如何解決的?
    嚴重: Exception starting filter struts2
    Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]
    at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:223)
    at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:194)
    at org.apache.struts2.config.BeanSelectionProvider.register(BeanSelectionProvider.java:153)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:131)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-10-09 15:57 | sanjin
    同志們:
    我也發現了問題--可否也給我發份源代碼---sanjin2482@sina.com.cn  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-11-06 21:18 | Cowboy
    想請教一個小問題:
    在Web.xml文件里,下面的代碼有什么作用?
    < filter >
    < filter-name > struts-cleanup </ filter-name >
    < filter-class >
    org.apache.struts2.dispatcher.ActionContextCleanUp
    </ filter-class >
    </ filter >

    < filter-mapping >
    < filter-name > struts-cleanup </ filter-name >
    < url-pattern > /* </ url-pattern >
    </ filter-mapping >

    我只是知道,filter與filter-mapping是通過filter-name來對應起來的。  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-11-23 12:59 | 謝謝大哥指導
    謝謝大哥指導謝謝大哥指導謝謝大哥指導
      回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-11-26 12:21 | ryou

    我也碰到這種問題?請問你是如何解決的?
      回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-11-26 12:22 | ryou
    我也碰到這種問題?請問你是如何解決的?
    at com.opensymphony.xwork2.ObjectFactory.buildInterceptor(ObjectFactory.java:206)
    at com.opensymphony.xwork2.config.providers.InterceptorBuilder.constructInterceptorReference(InterceptorBuilder.java:57)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.lookupInterceptorReference(XmlConfigurationProvider.java:905)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadInterceptorStack(XmlConfigurationProvider.java:743)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadInterceptorStacks(XmlConfigurationProvider.java:756)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadInterceptors(XmlConfigurationProvider.java:777)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:410)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:239)
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-11-26 12:27 | ryou
    不知是何原因:
    at com.opensymphony.xwork2.ObjectFactory.buildInterceptor(ObjectFactory.java:206)
    at com.opensymphony.xwork2.config.providers.InterceptorBuilder.constructInterceptorReference(InterceptorBuilder.java:57)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.lookupInterceptorReference(XmlConfigurationProvider.java:905)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadInterceptorStack(XmlConfigurationProvider.java:743)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadInterceptorStacks(XmlConfigurationProvider.java:756)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadInterceptors(XmlConfigurationProvider.java:777)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:410)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:239)
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
    at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3696)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4343)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)  回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2007-12-04 22:40 | haha~~~~
    寫的不錯,都是我想要的,謝謝。  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-12-27 20:43 | way

    max:
    我的可以出來.jsp頁面
    但是卻顯示不出iterator標簽內的內容 代碼跟你的一樣啊 請問怎么回事   回復  更多評論
      
    # re: 在Struts 2中實現IoC 2007-12-27 20:51 | way
    我想要一份源代碼 謝謝
    郵箱是86322989@qq.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-01-04 10:17 | fgfggf
    gfdgfdg  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-01-04 13:29 | 小徐
    嚴重: Exception starting filter struts2
    Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]

    少放了個包struts2-spring-plugin-2.0.11.jar

      回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2008-01-07 12:02 | jet
    @小徐
    嚴重: Exception starting filter struts2
    Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]

    少放了個包struts2-spring-plugin-2.0.11.jar
      回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-01-08 17:04 | ardy
    參照另一個實例寫了一個,可是訪問action就總是404,嘗試在那個實例里訪問他的action,也是404,但是那個實例的jsp實面卻能用ajax正常訪問到。不知道為什么?請指教一下。另請發一份源碼給我,謝謝 ardy.studio@163.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-01-29 10:55 | xiluoshen
    我也遇到問題,實在調試不過去了,請也給我發一份代碼,非常感謝!  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-01-29 10:55 | xiluoshen
    我的郵箱是xiluoshen@163.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-02-03 14:59 | 驍勇
    我的所有的配置和上面的描述的都是一樣的,可是最終還是沒有成功!
    嚴重: Error filterStart
    2008-2-3 14:50:42 org.apache.catalina.core.StandardContext start
    嚴重: Context [/struts_loc] startup failed due to previous errors
    2008-2-3 14:50:43 org.apache.coyote.http11.Http11BaseProtocol start

    請問各位大哥。是怎么回事啊。如果誰有寫好的,可以運行的例子給我共享以下可以嗎?我的郵箱: xiaoyong601@163.com   回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-02-03 15:03 | 驍勇
    很想找一些正在研究2.0的朋友交流以下

    我的msn:xiaoyong_601@hotmail.com

    QQ:274474040  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-02-09 21:22 | mycoy
    我也是404錯誤,想要您的源碼,zw_z7@hotmail.com.
    多謝了。  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-02-14 15:25 | 驍勇
    @驍勇
    該問題已經解決,是因為版主少寫了一個包
    struts2-spring-plugin-2.0.11.jar  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-02-29 15:48 | dyw31415926
    哪位朋友有該例子的源碼的,麻煩發一份到我郵箱好嗎?
    dyw31415926@163.com
    謝謝  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-03-04 23:44 | Dechengtju
    請問MAX先生,我照著您的代碼做了一遍,為什么運行時報如下錯誤
    我的郵箱是 dechengtju@yahoo.com.cn
    嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableListableBeanFactory.registerResolvableDependency(Ljava/lang/Class;Ljava/lang/Object;)Vat org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.postProcessBeanFactory(AbstractRefreshableWebApplicationContext.java:162)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:331)at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261)at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
    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:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-03-18 11:37 | hnliqinpeng
    org.apache.catalina.core.StandardContext listenerStart
    嚴重的: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.BeanDefinitionStoreException: Line 4 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null".
    org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null".

    Struts2+ spring2.0 + hibernate3
    我的 程序 也是 出 這個問題 ,調了 幾天 也沒有 好.
    請 老師 指導. 我的 郵箱: hnliqinpeng@163.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2008-03-25 18:49 | Robin
    非常感謝Max先生,我正在學習這個框架技術.您能將原代碼發到我郵箱里一份嗎?zhangyuming422@126.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-04-01 12:56 | 金昌
    謝謝Max,我也想要一份
    yjc121@163.com  回復  更多評論
      
    # spsbedlm 2008-04-02 08:30 | spsbedlm
    mimmihnd http://fiqqjytt.com vaoilxat zqtpqfey  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-04-02 11:56 | jc
    謝謝MAX 我也想要一份  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-04-02 12:01 | jc
    郵箱:owenchao_121@163.com  回復  更多評論
      
    # 同樣的問題 404 錯誤 2008-04-23 13:32 | alan
    我訪問不了jsp頁面 報404 錯誤, 并且在后臺報
    2008-4-23 13:04:53 org.apache.catalina.core.StandardContext start
    嚴重: Error filterStart
    2008-4-23 13:04:53 org.apache.catalina.core.StandardContext start
    嚴重: Context startup failed due to previous errors

    各位大蝦們請指點,請問是什么原因?我的郵箱是:285330436@qq.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2008-05-08 18:34 | andy
    謝謝Max,我也想要一份原代碼
    like.hao@ge.com
    Thanks  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-06-13 16:00 | hover
    @yangdamao
    @Max
    兩位大哥,這個spring的例子始終跳不出來,出錯信息是:嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.BeanDefinitionStoreException: Line 4 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null".
    org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null".


    我的郵箱:sxliang_531@163.com
    能發份源碼嗎?
    多謝了!  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-06-13 16:29 | hover
    問題解決了, 我估計是因為我導入的一些jar包是spring1.2下的,所以會出錯。  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-06-25 12:29 | Kuzi
    前輩,我寫的報錯!
    是否有時間把源碼發給我一下.小弟在這謝了.

    Email: 153642484@qq.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2008-07-09 11:50 | 1
    sdfdsf  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-07-11 14:12 | godo
    測試可用  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-07-24 15:11 | mozart
    max先生
    能給我發個么 或者手上有成功的給我發個
    我的總是項目不能運行
    mozart@vip.qq.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-09-09 18:55 | ffgames
    把struts.xml分成二個文件,action會有找不到的問題。是不是要把新加入的文件在哪里配置一下。請指教。
    ffgames@163.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-09-10 16:58 | 木瓜
    tutorial.ChatAction.java
    類中少了 如下方法,找了好久才發現!希望BZ改正以下,以免讓他人再走轉路。
    public Set<String> getUserNames() {
    return userNames;
    }  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-09-18 15:08 | sebatinsky
    希望哪位好心的給我傳一份,怎么做都有錯,自己雖然發現少了前面說的那個包,但是后來加上之后又出錯了,研究了好久還是不行,
    警告: Settings: Could not parse struts.locale setting, substituting default VM locale
    2008-9-18 15:03:03 org.apache.catalina.core.StandardContext filterStart
    嚴重: Exception starting filter struts2
    java.lang.NoClassDefFoundError: Lcom/opensymphony/xwork2/util/logging/Logger;
    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Class.java:2291) at java.lang.Class.getDeclaredFields
    2008-9-18 15:03:03 org.apache.catalina.core.StandardContext start
    嚴重: Error filterStart
    2008-9-18 15:03:03 org.apache.catalina.core.StandardContext start
    嚴重: Context [/ioc] startup failed due to previous errors
    2008-9-18 15:03:03 org.apache.catalina.core.ApplicationContext log

    我知道上面肯定沒有那個class,但是不知道為什么會報這樣的錯誤,  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-09-18 15:09 | sebatinsky
    sebatinsky@163.com
    都忘記說郵箱了,哪位好心的傳一份給我,謝謝  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-09-18 15:12 | sebatinsky
    而且我一把struts.xml和properties文件放到classes下面就會編譯就會消失,不知道是為什么.哎,  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-10-08 16:06 | ahaiyg
    @sebatinsky
    你得將它們放到src目錄下,那樣就不會消失了  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-10-10 11:25 | neusoft_fool
    我作spring也 遇到這個問題了 我怎么改不好使 我不活了
      回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2008-11-20 10:44 | 啊啊
    我也要源代一份阿
    bobliuwei@hotmail.com
    嘎嘎  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2008-12-09 16:10 | hjtu
    致命的: Context initialization failed
    java.lang.NoClassDefFoundError: org/springframework/core/SmartClassLoader
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    .................

    E-Mail:javasir2007@qq.com
    能發一份source嗎?
      回復  更多評論
      
    # re: 在Struts 2中實現IoC 2009-01-19 12:35 | shuzigui
    你好!我想請問一下,我的配置跟你的一樣,包也是下載你所說的哪些包,并加載到了工程里面,但是運行不起來,就連UserList.jsp也出現HTTP Status 404 -錯誤,Chat.action也是出現同類錯誤。能幫我解釋一下原因嗎  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2009-02-17 16:49 | Andy_long
    應該是 struts.xml配置文件里 弄錯了 這么寫試試 :
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

    <struts>
    <include file ="struts-default.xml"/>

    <package name="struts2_IoC" extends="struts-default">
    <action name="Chat" class="tutorial.ChatAction">
    <result>UserList.jsp</result>
    </action>
    </package>
    </struts> @shuzigui
      回復  更多評論
      
    # re: 在Struts 2中實現IoC 2009-02-18 10:17 | Andy_long
    樓主 為什么 我的jsp頁面 刷新的時候 只出現了 一個“1.”后面沒有內容了
    還請樓主有時間的時候 幫我解決一下  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2009-03-20 10:41 | linice
    尊敬的Max,我已經花了快3天時間,整這個程序了,遺憾的是一直沒有結果。
    所以,還想麻煩你給我發一份源代碼,不過,請發到csdn.net上去好么?
    因為,我剛實習,在公司里面是對外部郵箱禁止的。
    外部郵件也同樣禁止。  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2009-04-21 00:24 | 葛珂
    我的跟你一樣,沒有反應,郁悶。。@shuzigui
      回復  更多評論
      
    # Action class [chatAction] not found錯誤![未登錄] 2009-05-13 16:12 | phoenix
    嚴重: Exception starting filter struts2
    Action class [chatAction] not found - action - file:/D:/tomcat-6.0.18/webapps/Struts2_IoC/WEB-INF/classes/struts.xml:7:42
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:374)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:329)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:429)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:239)
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
    at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4363)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
    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:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
    2009-5-13 16:07:23 org.apache.catalina.core.StandardContext start
    嚴重: Error filterStart
    2009-5-13 16:07:23 org.apache.catalina.core.StandardContext start
    嚴重: Context [/Struts2_IoC] startup failed due to previous errors
    2009-5-13 16:07:23 org.apache.catalina.core.ApplicationContext log  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2009-05-15 11:06 | miaomiao
    還是直接使用Spring,比較容易理解。  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2009-07-16 18:46 | struts
    嚴重: Context initialization failed
    java.lang.NoClassDefFoundError: org/springframework/core/SmartClassLoader
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1850)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
    at java.lang.Class.getConstructor0(Class.java:2699)
    at java.lang.Class.getDeclaredConstructor(Class.java:1985)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:62)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:249)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
    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:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
    Caused by: java.lang.ClassNotFoundException: org.springframework.core.SmartClassLoader
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 31 more
    2009-7-16 18:39:28 org.apache.catalina.core.StandardContext listenerStart
    Max先生為什么我按你寫的做總會出現上面的錯誤,可以發份源碼給我嗎,我的郵箱:qinshengliao@163.com  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2009-08-29 11:01 | 白雪峰
    我也碰到了上面的問題,能不能把源代碼發我一份。
    baimimi@126.com
    謝謝  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2009-11-08 13:01 | 莫名其妙
    博主知道什么叫IOC嗎? 難道IOC就是依賴注入?  回復  更多評論
      
    # re: 在Struts 2中實現IoC 2009-12-14 10:10 | dj861212
    跟著做實驗,發現了這個問題,其實這樣寫就對了,為什么,嘻嘻,我就不知道了

    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    <init-param>
    <param-name>actionPackages</param-name>
    <param-value>org.springside.examples.miniweb.web</param-value>
    </init-param>
    </filter>
      回復  更多評論
      
    # re: 在Struts 2中實現IoC[未登錄] 2010-11-14 17:20 |
    @Max
    I TOO.I WANT. BUT .TODAY IS NOV 14,2010  回復  更多評論
      
    評論共2頁: 1 2 下一頁 
    主站蜘蛛池模板: 亚洲最大在线观看| 久久精品国产亚洲av影院| 高潮内射免费看片| 亚洲高清中文字幕| 精品久久洲久久久久护士免费| 中文在线免费视频| 黄色网址免费在线| 国产亚洲玖玖玖在线观看| 亚洲影院在线观看| 国产亚洲精品成人a v小说| a级成人毛片免费视频高清| 亚洲欧洲国产精品你懂的| 亚洲午夜精品第一区二区8050| 日本免费在线观看| 国产成人精品日本亚洲专| 免费一级大黄特色大片| 久久精品无码一区二区三区免费| 日本在线免费播放| 视频免费在线观看| 两个人看的www视频免费完整版| 午夜在线免费视频 | 亚洲综合色自拍一区| 免费无码VA一区二区三区| 亚洲一区二区三区写真 | 最近免费中文字幕大全免费| 欧洲亚洲综合一区二区三区| 亚洲高清国产拍精品26U| 永久免费毛片在线播放| 一本一道dvd在线观看免费视频 | 一级毛片aaaaaa免费看| 久草福利资源网站免费| 成人网站免费看黄A站视频| 亚洲欧美日韩中文字幕在线一区| 国产成人亚洲合集青青草原精品| 亚洲精品在线免费观看视频| 亚洲女人被黑人巨大进入| 国产免费私拍一区二区三区| 国产91久久久久久久免费| va亚洲va日韩不卡在线观看| 亚洲成av人片在线观看天堂无码 | 老司机免费午夜精品视频|