项目总结
第一天 maven
使用maven构建Struts2的项目**
	1. 创建maven的项目
	2. 导入web.xml配置文件
	3. 导入jdk的编译版本
	4. 导入struts的依赖jar包
	5. 在web.xml配置文件中配置struts的过滤器
	6. 导入struts.xml的配置文件
	7. 编写Action程序,完成Action的配置
	8. 启动服务器,测试程序
第二天 maven
**传递依赖冲突产生和解决**
	
	1. 传递依赖:A依赖于B,而B依赖于C,那么C就可以称为A的传递依赖。
		* 例如:项目依赖于struts的jar包,而struts又依赖xwork的jar包,并且xwork这些jar包也出现在了项目中,这种现象称为传递依赖。
	
	2. 传递依赖冲突
		* 使用maven创建web项目,引入struts-spring-plugin的插件坐标,再引入spring-context的坐标,会发现这个jar包都依赖了spring-beans的jar包
		* spring-beans的版本不同,这个时候就产生了传递依赖冲突。
	
 3. 解决传递依赖冲突
		* 第一种方式:maven自己调节原则
			* 第一声明者优先原则:谁先传递依赖进来的使用谁的传递依赖。
				* 效果如下
					<dependency>
						<groupId>org.apache.struts</groupId>
						<artifactId>struts2-spring-plugin</artifactId>
						<version>2.3.24.1</version>
					</dependency>
					<dependency>
						<groupId>org.springframework</groupId>
						<artifactId>spring-context</artifactId>
						<version>4.2.4.RELEASE</version>
					</dependency>
			
			* 路径近者优先原则:如果自己导入了依赖,那么就使用自己的依赖,不会使用传递依赖。
				* 效果如下
					<dependency>
						<groupId>org.springframework</groupId>
						<artifactId>spring-beans</artifactId>
						<version>4.2.4.RELEASE</version>
					</dependency>
 第二种方式:排除依赖
			* 打开pom.xml --> 选择dependency hierarchy --> 在要排除依赖的jar包上右键 --> 选择excude maven artifact --> 点击OK
				* 效果如下
					<dependency>
						<groupId>org.apache.struts</groupId>
						<artifactId>struts2-spring-plugin</artifactId>
						<version>2.3.24.1</version>
						<exclusions>
							<exclusion>
								<artifactId>spring-beans</artifactId>
								<groupId>org.springframework</groupId>
							</exclusion>
						</exclusions>
					</dependency>
* 第三种方式:版本锁定(推荐使用的方式) 
			* 在pom的配置文件配置版本锁定,效果如下
				<dependencyManagement>
					<dependencies>
						<dependency>
							<groupId>org.springframework</groupId>
							<artifactId>spring-beans</artifactId>
							<version>4.2.4.RELEASE</version>
						</dependency>
					</dependencies>
				</dependencyManagement>
			
			* 在版本锁定的基础上,可以定义常量,锁定版本,下面都可以引用该常量。	
				<!-- 定义版本常量 -->
				<properties>
					<!-- 标签自定义的 -->
					<spring-version>4.2.4.RELEASE</spring-version>
				</properties>
				
				<!-- 版本锁定 -->
				<dependencyManagement>
					<dependencies>
						<dependency>
							<groupId>org.springframework</groupId>
							<artifactId>spring-beans</artifactId>
							<version>${spring-version}</version>
						</dependency>
					</dependencies>
				</dependencyManagement>
**使用maven搭建SSH框架的项目**
	
	1. 使用maven创建web项目,导入web.xml配置文件,导入jdk编译版本等。
	2. 导入pom.xml的配置文件
	3. 创建数据库
		* create database itheima51
	4. 编写JavaBean和映射的配置文件
	5. 引入hibernate.cfg.xml的配置文件
	6. 导入struts.xml的配置文件
	7. 导入applicationContext.xml的配置文件
	8. 使用Spring整合Struts2框架
		* 编写CustomerAction类
			public class CustomerAction extends ActionSupport implements ModelDriven<Customer>{
				private static final long serialVersionUID = -7111907817761614217L;
				private Customer customer = new Customer();
				public Customer getModel() {
					return customer;
				}
				/**
				 * 保存用户
				 * @return
				 * @throws Exception
				 */
				public String save() throws Exception {
					return SUCCESS;
				}
			}
		
		* 把CustomerAction交给Spring的IOC容器进行管理。创建applicationContext-action.xml配置文件,在applicationContext.xml配置文件引入该配置文件。
			<import resource="applicationContext-action.xml"/>
			<bean id="customerAction" class="com.itheima.action.CustomerAction" scope="prototype"></bean>
		
		* 配置Struts.xml,配置action
			<package name="default" namespace="/" extends="struts-default">
				<action name="customerAction_*" class="customerAction" method="{1}">
					<result>/index.jsp</result>
				</action>
			</package>
	
	9. 编写service的接口和实现类,交给IOC容器管理。
		* 创建applicationContext-service.xml配置文件,在applicationContext.xml配置文件引入该配置文件
			<import resource="applicationContext-service.xml"/>
			<bean id="customerService" class="com.itheima.service.CustomerServiceImpl"></bean>
		
		* 在action中注入service
			<bean id="customerAction" class="com.itheima.action.CustomerAction" scope="prototype">
		    	<property name="customerService" ref="customerService"/>
		    </bean>
	
	10. 编写dao的接口和实现类,交给IOC容器管理。
		* 创建applicationContext-dao.xml配置文件,在applicationContext.xml配置文件引入该配置文件
			<import resource="applicationContext-dao.xml"/>
			<bean id="customerDao" class="com.itheima.dao.CustomerDaoImpl"></bean>
		
		* 在service中注入dao
			<bean id="customerService" class="com.itheima.service.CustomerServiceImpl">
		    	<property name="customerDao" ref="customerDao"/>
		    </bean>
	
	11. Spring整合Hibernate框架
		* Spring整合Hibernate框架
			<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
				<property name="dataSource" ref="dataSource"/>
				<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
			</bean>
		
		* 在dao中注入sessionFactory对象
			<bean id="customerDao" class="com.itheima.dao.CustomerDaoImpl">
		    	<property name="sessionFactory" ref="sessionFactory"/>
		    </bean>
	
	12. 使用Spring声明式事务管理,采用注解的方式
		* 配置平台事务管理器对象
			<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
				<property name="sessionFactory" ref="sessionFactory"/>
			</bean>
		
		* 开启事务注解
			<tx:annotation-driven transaction-manager="transactionManager"/>
		
		* 在service上添加事务注解
			@Transactional
	
----------
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号