1.使用Spring 的 ActionSupport 。
2.使用Spring 的 DelegatingRequestProcessor 类。
3.全权委托。
无论用那种方法来整合第一步就是要为struts来装载spring的应用环境。 就是在> <set-property></plug-in>
spring 的配置文件被作为参数配置进来。这样可以省略对web.xml 文件中的配置。确保你的applicationContext.xml 在WEB-INF目录下面
1,使用Spring的ActionSupport .
Spring 的ActionSupport 继承至>
- public class LoginAction extends> (LoginForm)> this.getWebApplicationContext();
- LoginDao> (LoginDao)> new User();
- u.setName(loginForm.getName());
- u.setPwd(loginForm.getPwd());
- if(dao.checkLogin(u)){
- return> DelegatingRequestProcessor 类
DelegatingRequestProcessor 继承自><controller>- public class LoginAction extends Action {
- //利用spring来注入这个对象。
- private LoginDao>> (LoginForm)>
- //LoginDao>
- User> new User();
- >
<property><ref local=”loginDao”/>
</property>
</bean>
</beans>这里name=”/login”与struts中的path匹配class=”com.cao.struts.action.LoginAction”与struts中的type匹配还要为LoginAction提供必要的setXXX方法。获得ApplicationCotext和依赖注入的工作都在DelegatingRequestProcessor中完成。
3,全权委托:
Action 的创建和对象的依赖注入全部由IOC容器来完成。使用Spring的DelegatingAcionProxy来帮助实现代理的工作
org.springframework.web.struts.DelegatingActiongProxy继承于org.apache.struts.action.Action.全权委托的配置方式同 方式 2 类似 (applcationContext.xml文件的配置和 Action类的实现方式相同)。
1, <action>中> name=”loginForm”
path=”/login”
scope=”request”
type=”org.springframework.web.struts.DelegatingActionProxy” >
<forward><forward> </action>
</action-mappings>
<message-resources><plug-in> <set-property></plug-in>
</struts-config>2, 去掉struts-config.xml中 <controller >
三种整和方式中我们优先选用 全权委托的方式。
理由:
1,第一种使得过多的耦合了Spring和Action .
2,RequestProcessor类已经被代理 如果要再实现自己的实现方式(如:编码处理)怕有点麻烦。总结一下:
整合工作中的步骤:
1.修改struts-config.xml
2. 配置applicationContext.xml
3.为Action添加get/set方法 来获得依赖注入的功能。