目录
导入约束beans|context|aop|tx appliactionContext.xml
SSH之单独整合Struts2
-
单独配置spring容器
导入约束beans|context|aop|tx appliactionContext.xml
配置Spring随项目启动Listener web.xml
使Spring随容器创建而启动,配置监听器listener
<!-- 让Spring随容器创建而启动,配置监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置Spring文件位置参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
-
单独配置Struts2
配置struts2主配置文件struts.xml
<struts>
<package name="crm" namespace="/" extends="struts-default">
<action name="UserAction_*" class="com.mark.web.action.UserAction" method="{1}">
<result name="success">seccess.jsp</result>
</action>
</package>
</struts>
配置struts2核心过滤器 web.xml
<!-- 配置Struts核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-
Spring与Struts2整合
配置常量
将action的创建交给spring容器,由spring负责装配Action依赖属性
<struts>
<!-- 配置常量 -->
<constant name="struts.objectFactory" value="spring"></constant>
<package name="crm" namespace="/" extends="struts-default">
<action name="UserAction_*" class="com.mark.web.action.UserAction" method="{1}">
<result name="success">seccess.jsp</result>
</action>
</package>
</struts>
整合方案一(不推荐,半整合)
方案一:class属性上配置完整类名
struts2自己创建action,spring自动负责组装依赖属性
缺点:最好由spring完整管理action的生命周期,spring中功能才应用到Action上
<struts>
<!-- 配置常量 -->
<constant name="struts.objectFactory" value="spring"></constant>
<package name="crm" namespace="/" extends="struts-default">
<!-- 方案一:class属性上配置完整类名 -->
<action name="UserAction_*" class="com.mark.web.action.UserAction" method="{1}">
<result name="success">seccess.jsp</result>
</action>
</package>
</struts>
<bean name="userAction" class="com.mark.web.action.UserAction"></bean>
<bean name="userService" class="com.mark.service.impl.UserServiceImpl"></bean>
public class UserAction extends ActionSupport{
public UserAction() {
System.out.println("UserAction空参构造!");
}
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
//....
}
整合方案二(推荐,全整合)
方案二:class属性上配置spring中action对象的bean name属性值
注意:action的作用范围,每个Action都要创建新的请求,scope是多例的
优点:spring完整管理action的生命周期
<struts>
<!-- 配置常量 -->
<constant name="struts.objectFactory" value="spring"></constant>
<package name="crm" namespace="/" extends="struts-default">
<!-- 方案二:class属性上配置spring中action对象的bean name属性值 -->
<action name="UserAction_*" class="userAction" method="{1}">
<result name="success">success.jsp</result>
</action>
</package>
</struts>
<bean name="userAction" class="com.mark.web.action.UserAction" scope="prototype">
<property name="userService" ref="userService"></property>
</bean>
<bean name="userService" class="com.mark.service.impl.UserServiceImpl"></bean>