struts1.2 和struts2 的代理配置不一样。??? 不然数据库里插入不了数据。

本文详细对比了Struts1.2和Struts2框架下事务属性配置的差异,包括配置文件结构、代理模式应用及事务管理策略。重点分析了如何在两个框架中实现事务的统一管理,并通过实际代码示例进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


struts1.2 中的配置:
<bean id="userDao" class="com.MI2SE.ilip.admin.user.dao.UserDao">
        <property name="sessionFactory">
            <ref bean="sessionFactory"></ref>
        </property>
   	  </bean>


	
	<bean id="userManagerService" parent="baseProxy">
        <property name="target">
            <ref bean="userManagerTarget"/>
        </property>
     </bean>
	
	<!-- Manager Service Config -->
	<bean id="userManagerTarget" class="com.MI2SE.ilip.admin.user.UserManageServiceImpl" parent="baseManager">
        <property name="userDao">
            <ref bean="userDao"></ref>
        </property>
        <property name="roleDao">
            <ref bean="roleDao"></ref>
        </property>
	</bean>
    <bean id="baseProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
                <prop key="*">PROPAGATION_REQUIRED,-BusinessException</prop>
            </props>
        </property>
    </bean>


struts1.2在baseProxy 建立一个公用的transactionAttributes,故在各个DAO里就不用再重复写了。
struts2 中的配置:必须使用Proxy代理:
	<bean id="MenuBarDAO" class="com.cssrc.dao.impl.MenuBarDAOImpl">
		<property name="sessionFactory">
			<ref bean="sessionFactory"></ref>
		</property>
	</bean>
	<bean id="MenuBarDAOProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="target">
			<ref local="MenuBarDAO" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert">PROPAGATION_REQUIRED</prop>
				<prop key="modify*">PROPAGATION_REQUIRED</prop>
				<prop key="get">PROPAGATION_REQUIRED</prop>
				<prop key="*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>
   <bean name="LoginAction" class="com.cssrc.web.action.login.Login" scope="prototype">
    <property name="usersDAO">
		<ref bean="UsersDAOProxy" />
  	</property>
  	<property name="menuNavigationDAO">
		<ref bean="MenuNavigationDAOProxy" />
  	</property>
  	<property name="menuBarDAO">
		<ref bean="MenuBarDAOProxy" />
  	</property>
  	<property name="menuItemDAO">
		<ref bean="MenuItemDAOProxy" />
  	</property>
  </bean>


transactionAttributes在各个proxy里写,需要重复写。

对所有的dao都这样。









struts2框架的action在applicationContext_login.xml中配置

<bean id="loginAction" class="com.cdm.action.LoginAction" scope="prototype">			
	   <property name="loginService">
			<ref bean="loginService" />
		</property>
		<property name="usersService">
			<ref bean="usersService" />
		</property>
		<property name="systemParamService">
			<ref bean="systemParamService" />
		</property>
	</bean>


同时,在struts_login.xml中配置跳转,如下:
<action name="Login*Action" method="{1}" class="loginAction">
            <result name="input">/index.jsp</result>
            <result name="main">/main.jsp</result>
            <result name="menuOutLook">/common/menuOutlook.jsp</result>
            
        </action>  




而struts1.2没有在applicationContext_login.xml配置action,而是全部在struts.xml中完成action的配置
如下所示:
<action path="/registers/budgetAction" parameter="method"
			type="com.MI2SE.ilip.registers.budget.struts.BudgetAction"
			name="budgetForm" scope="request">
			<forward name="init"
				path="/registers/budget/budgetQuery.jsp">
			</forward>
			<forward name="part"
				path="/registers/budget/budgetQueryItemPart.jsp">
			</forward>
</action>



 故使用struts2的时候,action.java中的service,dao 要在applicationContext_login.xml
中对应的bean中配置。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值