项目总结

第一天 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

----------

 

posted @ 2017-06-08 22:59  changfengdunhaung  阅读(140)  评论(0)    收藏  举报