为了在Struts中加载Springcontext需要在struts-config.xml文件中加入如下部分 为了在Struts中加载Spring context需要在struts-config.xml文件中加入如下部分 通过Struts的plug-in在Struts和Spr
为了在Struts中加载Springcontext需要在struts-config.xml文件中加入如下部分
为了在Struts中加载Spring context需要在struts-config.xml文件中加入如下部分
通过Struts的plug-in在Struts和Spring之间提供了良好的结合点。通过plug-in我们实现了Spring context的加载不过仅仅加载Spring context并没有什么实际的意义还应该经过配置将Struts的Action交给Spring容器进行管理。 type"org.springframework.web.struts.DelegatingActionProxy" name"loginForm"> 在form bean这个节点上与传统的Struts配置没有什么区别而在Action上面则发生了变化。在传统的action节点上type属性写入action类的完整类名而和Spring结合后在这点上是使用了Spring提供的DelegatingActionProxy作为action的type属性DelegatingActionProxy同样是org.apache.struts.action.Action的一个子类它将把调用请求转交给真正的Action实现。通过这样的方式Spring获得了Action实例的管理权它将对Action进行调度并为Struts提供所需的Action实例。这样就可以将Action看作是Spring的一个bean它就可以享受Spring的所有服务如依赖注入、实例管理、事务管理等。 在applicationContext.xml中相应的配置如下的节点....... 最后这个bean的配置是关键这个名为“/login”的bean与Struts中的……
节点相对应这样Spring Bean Name与Struts Action Path相关联当Struts加载对应的Action时DelegatingActionProxy就根据传入的path属性在Spring Context寻找对应bean并将其实例返回给Struts。与此同时还可以看到"/login" bean 中包含了一个userDAO 引用Spring 在运行期将根据配置为其提供userDAO 实例以及围绕userDAO 的事务管理服务。这样一来对于Struts 开发而言我们既可以延续Struts 的开发流程也可以享受Spring 提供的事务管理服务。而bean 的另外一个属性singleton"false"指明了Action 的实例获取方式为每次重新创建。这也解决了Struts中令人诟病的线程安全问题。 至此SS组合已经将Struts MVC以及Spring中的Bean管理、事务管理融为一体。如果算上userDAO 中的Hibernate 部分我们就获得了一个全面、成熟、高效、自顶而下的Web 开发框架。