1.目录结构
2配置文件
spring:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<!-- mysql -->
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:com/demo/entity/</value>
</list>
</property>
</bean>
<!-- 加载外部配置变量 only mysql need -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:jdbc.properties</value>
</property>
<property name="fileEncoding" value="utf-8" />
</bean>
<!-- 配置数据源,c3p0方式 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- mysql -->
<!-- 数据库连接相关信息 -->
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- spring DI注入 -->
<bean id="personDao" class="com.demo.dao.PersonDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="personService" class="com.demo.service.PersonServiceImpl">
<property name="personDao" ref="personDao"></property>
</bean>
<!-- struts2中action是多例的 -->
<bean id="personAction" class="com.demo.action.PersionAction" scope="prototype">
<property name="personService" ref="personService"></property>
</bean>
<!-- spring框架,AOP配置事务管理 -->
<bean id="txMgr" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- spring框架,AOP配置 -->
<tx:advice id="txAdvice" transaction-manager="txMgr">
<!-- 声明事务规则 主库 -->
<tx:attributes>
<!-- 配置需要进行事务管理的方法,和事务传播行为 -->
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!-- spring框架,切入点配置 -->
<aop:config>
<aop:pointcut id="s28" expression="execution(* com.demo.service..*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="s28" />
</aop:config>
</beans>
struts.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<package name="default" namespace="/" extends="struts-default,json-default">
<action name="personList" class="com.demo.action.PersonAction" method="personList">
<result type="json" name="jsonArray">
<param name="root">jsonObj</param>
</result>
</action>
<action name="addPerson" class="com.demo.action.PersonAction" method="addPerson">
<result type="json" name="jsonArray">
<param name="root">jsonArray</param>
</result>
</action>
<action name="goadd" class="com.demo.action.PersonAction" method="goadd">
<result name="success">/addPerson.jsp</result>
</action>
<action name="deletePerson" class="com.demo.action.PersonAction" method="deletePerson">
<result type="json" name="success">
<param name="root">jsonArray</param>
</result>
</action>
</package>
</struts>
JSP页面:
action方法:
daoImpl方法:查询总条数+查询list集合方法