使用maven 整合hibernate string struts

1.创建一个java maven web项目,在pom.xml导入对应的核心架包

<!-- mysql核心架包 -->
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!-- Hibernate核心架包 -->
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.4.32.Final</version>
        </dependency>
        <!-- junit核心架包 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!-- spring核心架包 -->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>5.2.9.RELEASE</version>
        </dependency>
        <!-- struts核心架包 -->
        <!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.5.26</version>
        </dependency>
​
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
            <version>2.5.26</version>
        </dependency>
​
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.7</version>
        <scope>runtime</scope>
    </dependency>
​

2.创建applicationcontext.xml配置数据源 连接数据库

<!-- 配置数据源 -->
    <bean
        class="org.springframework.jdbc.datasource.DriverManagerDataSource"
        id="dataSource1">
        <property name="driverClassName"
            value="com.mysql.jdbc.Driver"></property>
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
        <property name="url"
            value="jdbc:mysql://localhost:3306/hr?useUnicode=true&amp;characterEncoding=utf-8"></property>
    </bean>

配置sessionfection

<bean
        class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"
        id="sessionFactory1">
        <property name="dataSource" ref="dataSource1"></property>
        <property name="annotatedClasses">
            <list>
                <!-- 声明对象 -->
                <value>com.lanxin.Bean.Emp</value>
                <value>com.lanxin.Bean.Dept</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
            </props>
        </property>
    </bean>

3.封装对应方法,在applicationcontext.xml中配置

<!-- 配置Dao -->
    <bean class="com.lanxin.Dao.EmpDaoImpl" id="empDaoImpl">
        <property name="sessionFactory" ref="sessionFactory1">
        </property>
    </bean>
    <bean class="com.lanxin.Dao.DeptDaoImpl" id="deptDaoImpl">
        <property name="sessionFactory" ref="sessionFactory1">
        </property>
    </bean>

4.声明事务

声明前事务(实现MethodBeforeAdvice接口,before方法)

public class MyBeroreAdvice implements MethodBeforeAdvice {
    
    public void before(Method method, Object[] args, Object target) throws Throwable {
        // TODO Auto-generated method stub
            
    }
}

声明后事务(实现AfterReturningAdvice接口,afterReturning方法)

public class MyAfterAdvice implements AfterReturningAdvice {
    
    public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {
        // TODO Auto-generated method stub
        
    }   
}

声明环绕事务即前后(实现MethodInterceptor接口,invoke方法)

public class MyAroundAdvice implements MethodInterceptor {
​
    public Object invoke(MethodInvocation invocation) throws Throwable {
        // TODO Auto-generated method stub
        return null;
    }
}
​

5.在applicationcontext.xml中配置

<bean class="com.lanxin.Advice.MyAfterAdvice" id="myAfterAdvice">
    </bean>
    <bean class="com.lanxin.Advice.MyAroundAdvice" id="myAroundAdvice">
    </bean>
    <bean class="com.lanxin.Advice.MyBeroreAdvice" id="myBeroreAdvice">
    </bean>

6.配置自动代理(org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator)

<!-- 自动代理(类) -->
	<bean
		class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
		<property name="interceptorNames">
			<list>
				<value>myBeroreAdvice</value><!-- 代理 -->
			</list>
		</property>
		<property name="beanNames">
			<list><!-- 只代理以Impl结尾的dao -->
				<value>*Impl</value>
			</list>
		</property>
	</bean>

事务管理器(只有hibernate使用HibernateTransactionManager)

<!-- 事务管理器 -->
	<bean
		class="org.springframework.orm.hibernate5.HibernateTransactionManager"
		id="transactionManager">
		<property name="sessionFactory" ref="sessionFactory1"></property>
	</bean>

流行用法

<!-- 通知 -->
	<tx:advice id="txAdvice"
		transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="save*" propagation="REQUIRED" />
			<tx:method name="select*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
		</tx:attributes>
	</tx:advice>

	<!-- aop切面 -->
	<aop:config>
		<aop:advisor advice-ref="txAdvice"
			pointcut="execution(* com.lanxin.Dao.*.*(..))" />
		<aop:advisor advice-ref="myAroundAdvice"
			pointcut="execution(* com.lanxin.Dao.*.*(..))" />
	</aop:config>

6.编写action,配置struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
	<struts>
		<package name="s" extends="struts-default">
			<action name="emp_*" method="{1}" class="empAction">

			<allowed-methods>login,listEmp</allowed-methods>
			</action>
			<action name="dept_*" method="{1}" class="deptAction">
			
			<allowed-methods>selectall,selectempbydid</allowed-methods>
			</action>
		</package>
	</struts>

在applicationcontext.xml中配置action(将action交给IOC容器管理)

<!-- 配置empAction -->
	<bean class="com.lanxin.Action.EmpAction" id="empAction"
		scope="prototype">
		<property name="empDaoImpl" ref="empDaoImpl"></property>
	</bean>
	<!-- 配置deptAction -->
	<bean class="com.lanxin.Action.DeptAction" id="deptAction"
		scope="prototype">
		<property name="deptDao" ref="deptDaoImpl"></property>
	</bean>

7.在web.xml中配置struts过滤器,spring监听器,spring

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 			http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name>Archetype Created Web Application</display-name>
  <!-- 配置struts过滤器 -->
  <filter>
  	<filter-name>struts</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  <!-- 配置spring -->
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <!--配置spring监听-->
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
</web-app>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值