最近因为做WebOa系统,我采用了struts+spring+hibernate的整体架构,我按照目前网上流行的这方面的配置文件在web.xml中加入了:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
然后在applicationContext.xml文件中进行了hibernate和相关业务对象的配置,为了在struts中使用这些业务对象,我定义了一个action类
然后所有的action类从这个类中继承,这个类负责查找定义在spring中的业务对象,编写好java文件和xml文件,执行Ant在tomcat4上部署,
运行时发现一个问题,就是每个调用了业务对象的Action类的execute方法都执行了两次,查了不少资料都没有提到这个问题,论坛上也没有
人问到这个问题,好奇怪呀!
最后,决定不依赖web.xml文件,把所有的spring配置文件(现在只有一个applicationContext.xml)放到WEB-INF下的classes目录下的
springconf目录下(该目录要自己创建),写一个类来负责系统对spring中业务对象的查找,action中需要用到业务对象时就调用该类查找,再
把这个类做成单子的形式,部署测试成功!
现在有一个问题,为什么这个问题没有人提到过呢?还是我一开始就把web.xml和applicationContext.xml配置错了?