SSH之单独整合Struts2

 

目录

SSH之单独整合Struts2

单独配置spring容器

导入约束beans|context|aop|tx  appliactionContext.xml

配置Spring随项目启动Listener web.xml

单独配置Struts2

配置struts2主配置文件struts.xml

配置struts2核心过滤器  web.xml

Spring与Struts2整合

配置常量

整合方案一(不推荐,半整合)

整合方案二(推荐,全整合)


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>

猜你喜欢

转载自blog.csdn.net/mmake1994/article/details/81867669
今日推荐