以前用Struts1.1 Spring2.0 Hibernate3的时候,  ApplicationContext是如下配置的.ApplicationContext.xml
         <bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
</property>
<property name="url"
value="jdbc:sqlserver://localhost:1433;databaseName=">
</property>
<property name="username" value="sa"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/xxx/entity/User.hbm.xml</value>
</list>
</property>
</bean> <bean id="userDao" class="com.xxx.dao.impl.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean name="/user" class="com.xxx.struts.action.UserAction">
<property name="userDao" ref="userDao" />
</bean> <!-- <bean id="userDao" class="com.xxx.dao.impl.UserDaoImpl"-->
<!-- autowire="byName" />-->
<!-- <bean name="/user" class="com.xxx.struts.action.UserAction"-->
<!-- autowire="byName" />-->
struts-config.xml<struts-config>
<data-sources />
<form-beans>
<form-bean name="userForm" type="com.xxx.struts.form.UserForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="userForm" name="userForm" parameter="type"
path="/user" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy" validate="false">
<forward name="toShow" path="/show.jsp" />
<forward name="toLogin" path="/login.jsp" />
<forward name="toEdit" path="/edit.jsp" />
<forward name="toAdd" path="/add.jsp" />
</action> </action-mappings> <message-resources parameter="com.xxx.struts.ApplicationResources" />
</struts-config>
在ApplicationContext中 放了Dao.在Action中 定义一个userDao给它Set的方法,就可以用了.
现在换了以后.不知道  怎么在ApplicationContext中放Dao,用以前的肯定是不行了.会报空指针.有谁会,请说下,感谢万分!

解决方案 »

  1.   

    Tomcat启动没有问题,一切都对,就是在Action里的Dao是个空指针
      

  2.   

    这个有点复杂,struts1与struts2有很大的区别,
    告诉你步骤吧:
    1、在struts.xml中加  <constant name="struts.objectFactory" value="spring"/>
    2、在struts.xml中加ACTION配置:
    <action name="user" method="调用执行的方法" class="userAction">
     3、在ApplicationContext.xml文件中配置
    <bean id="userAction" class="com.xxx.struts.action.UserAction">
    <property name="userDao" ref="userDao" />
    </bean>
      

  3.   


    还是不对的,这样写完以后,出现如下错误
    严重: Exception starting filter struts2
    Unable to load configuration. - [unknown location]
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:428)
    at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
    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)
    Caused by: Unable to load configuration. - [unknown location]
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:371)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:415)
    ... 29 more
    Caused by: Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]
    at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:293)
    at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:264)
    at org.apache.struts2.config.BeanSelectionProvider.register(BeanSelectionProvider.java:202)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:180)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
    ... 31 more