本文主要是介绍Structs 整合Spring,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
之前在学写SSH框架的时候 每个部分是分开学的,所以在Struts下用 Spring 也想当然的用了配置文件 还自作聪明的使用了static 来避免配置文件反复加载
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class ApplicationContextUtil {static ApplicationContext applicationContext;static{applicationContext = new ClassPathXmlApplicationContext("app*.xml");}public static synchronized Object getBean(String target){return applicationContext.getBean(target);}}
= =然后Action里面就出现了很多奇怪的 ApplicationContextUtil.getBean 来获取对象
现在需要使用到Spring中task 来实现定时任务才发现 Spring可以被整合到Struts中 Struts的action对象也可以交给Spring实现 来达到IOC 控制反转的效果
背景扯完了 下面来点干货吧
首先是配置web.xml 这部的目的是在web项目启动的时候扫描配置文件,配置的内容就是给web项目加一个监听器
<context-param><param-name>contextConfigLocation</param-name><!-- 固定的 --><param-value>classpath:applicationContext.xml</param-value><!--指定spring配置文件的位置--></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
第二步指定struct 的objectFactory ,实现的目的是 告诉struts 是用Spring配置文件来生成对象
这一步需要加包 struts2-spring-plugin.jar 分析配置项也能知道需要这个包
<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
这样我们的配置工作就完成了
最后放上demo
spring 中配置bean
<!-- 配置 action--><bean id="loginAction" class="com.yueguang.actions.LoginAction"> <property name="baseDao" ref="baseDao"> </property> </bean><bean id="testAction" class="com.yueguang.actions.TestAction"> </bean>
structs 中使用
<package name="test" namespace="/test" extends="struts-default"> <action name="haha" class="testAction" method="test"><result name="success">/Error.jsp</result> <result name="fail" type="chain"><param name="actionName">kaka</param><param name="namespace">/test</param></result></action><action name="kaka" class="testAction" method="testkaka"><result name="success">/Error.jsp</result> <result name="fail">/Login.jsp</result></action></package> <package name="struts2" namespace="/" extends="struts-default"> <global-results> <result name="login">/Login.jsp</result> <result name="input">/Error.jsp</result> </global-results> <action name="Login_*Login" class="loginAction" method="{1}Login"><result name="success" type="redirectAction"><param name="actionName">haha</param><param name="namespace">/test</param></result> <result name="fail">/Login.jsp</result></action><action name="Upload" class="com.yueguang.actions.Upload"><result name="success">/index.jsp</result> <result name="fail">/Error.jsp</result></action></package>
这篇关于Structs 整合Spring的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!