基于SSH实现员工管理系统之框架整合篇 学习笔记
2017-11-02 10:34
801 查看
视频地址 http://www.imooc.com/learn/586
一、SSH知识回顾
1.web层(struts2)
2.业务层(spring)
3.持久层(Hibernate)
二、SSH环境搭建
1.包
采用 idea 开发工具,maven 导入包
<properties>
<springframework.version>4.2.0.RELEASE</springframework.version>
<spring-data-jpa.version>1.10.2.RELEASE</spring-data-jpa.version>
<hibernate.version>4.3.6.Final</hibernate.version>
<struts.version>2.5.10</struts.version>
<mysql.connector.version>5.1.31</mysql.connector.version>
<lombok-version>1.16.12</lombok-version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>${spring-data-jpa.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency>
<!--c3p0-->
<!-- https://mvnrepository.com/artifac b352
t/com.mchange/mchange-commons-java -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>mchange-commons-java</artifactId>
<version>0.2.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<!--Servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<!-- Struts2和Spring整合依赖 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
<!-- SLF4J依赖 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<!--lombok 插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok-version}</version>
</dependency>
</dependencies>
2.配置文件
1) Struts2 配置文件
web.xml
struts.xml
2) Hibernate 配置文件
hibernate.cfg.xml (ssh整合中,省略该文件)
映射文件
3) Spring 配置文件
web.xml
applicationContext.xml
4) 日志文件
log4j.properties
3.创建包结构
dao
service
action
domain(使用 lombok 插件,@Data,@NoArgsConstructor)
三、.Struts2 整合 Spring 框架
Struts2 和 Spring 整合的2种方式
1) Action 的类由 Struts2 自身去创建
在 struts.xml 配置
2) Action 的类交给 Spring 框架创建
建议使用,因为后续 Spring 可以采用 AOP 方式进行管理
在 applicationContext.xml
四、Spring 整合 Hibernate
1.创建映射文件
Product.hbm.xml
2.整合
1) 数据库文件
jdbc.properties
2) 配置文件
applicationContext.xml
3.编写 dao
1) 使用Hibernate模版,dao 继承 HibernateDaoSupporte类
2) applicationContext.xml 配置 dao
4.事务管理
1) applicationContext.xml 配置事务管理器
注:
使用 idea 工具会产生 class path resource [com/xxxx/domain/Product.hbm.xml] cannot be opened because it does not exist 错误
原因是因为
src文件夹是存放代码的,resource文件夹是存放资源的,因此intellij在编译的时候会忽略src文件夹下面的xml文件,导致最后发布的文件夹下面丢失了这些映射文件。
参考 http://www.cnblogs.com/weishenhong/p/5309430.html
最后把 hbm.xml 移动到 resource
文件夹中,即可解决。
一、SSH知识回顾
1.web层(struts2)
web层来获取service public class BookAction extends AtionSupport implements ModelDriven<Book>{ private Book book = new Book(); public Book getModel(){ return book; } public String save(){ WebApplicationContext wap = WebApplicationContextUtils.getWebApplicationContext(....); BookService bs = wap.getBean("bookService"); bs.save(book); return "success"; } }
2.业务层(spring)
public class BookService{ private BookDao dao; //set 方法,省略..... public void save(Book book){ //调用 dao.save(book); } } //前提是,需要把 service,dao交给 spring去管理,并且service里要注入dao。 //配置 <bean id="bookDao" class="......BookDao"> </bean> <bean id="bookService" class=".....BookService"> <property name="bookDao" ref="bookDao"/> </bean>
3.持久层(Hibernate)
public class BookDao{ public void save(Book book){ //1.加载配置文件 Configuration cfg = new Configuration().configure(); //2.创建 SessionFactory sf = cfg.buildSessionFactory()' //3.得到 Session 对象 Session session = sf.openSession(); //4.事物管理对象 Transaction transaction = session.beginTransaction(); //5.保存数据 session.save(book); //6.提交事物 transaction。commit(); //7.关闭session session.close(); } }
二、SSH环境搭建
1.包
采用 idea 开发工具,maven 导入包
<properties>
<springframework.version>4.2.0.RELEASE</springframework.version>
<spring-data-jpa.version>1.10.2.RELEASE</spring-data-jpa.version>
<hibernate.version>4.3.6.Final</hibernate.version>
<struts.version>2.5.10</struts.version>
<mysql.connector.version>5.1.31</mysql.connector.version>
<lombok-version>1.16.12</lombok-version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>${spring-data-jpa.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency>
<!--c3p0-->
<!-- https://mvnrepository.com/artifac b352
t/com.mchange/mchange-commons-java -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>mchange-commons-java</artifactId>
<version>0.2.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<!--Servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<!-- Struts2和Spring整合依赖 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
<!-- SLF4J依赖 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<!--lombok 插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok-version}</version>
</dependency>
</dependencies>
2.配置文件
1) Struts2 配置文件
web.xml
struts.xml
2) Hibernate 配置文件
hibernate.cfg.xml (ssh整合中,省略该文件)
映射文件
3) Spring 配置文件
web.xml
applicationContext.xml
4) 日志文件
log4j.properties
3.创建包结构
dao
service
action
domain(使用 lombok 插件,@Data,@NoArgsConstructor)
三、.Struts2 整合 Spring 框架
Struts2 和 Spring 整合的2种方式
1) Action 的类由 Struts2 自身去创建
在 struts.xml 配置
<package name="ssh" extends="struts-default" namespace="/"> <action name="product_*" method="{1}" class="com.gizhi.action.ProductAction"/> </package>
2) Action 的类交给 Spring 框架创建
建议使用,因为后续 Spring 可以采用 AOP 方式进行管理
在 applicationContext.xml
<!--配置 action --> <!--Action 的类交给 Spring 框架创建--> <bean id="productAction" class="com.gizhi.action.ProductAction"> <!--需要手动注入 service--> <property name="productService" ref="productService"/> </bean>在 struts.xml 配置
<!--Action 的类交给 Spring 框架创建--> <package name="ssh" extends="struts-default" namespace="/"> <!--class 写入 applicationContext.xml 中 action 的 id --> <action name="product_*" method="{1}" class="productAction"/> </package>
四、Spring 整合 Hibernate
1.创建映射文件
Product.hbm.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.gizhi.domain.Product" table="product"> <id name="id" column="id"> <!--主键生成策略--> <generator class="native"/> </id> <property name="name" column="name"/> <property name="price" column="price"/> </class> </hibernate-mapping>
2.整合
1) 数据库文件
jdbc.properties
jdbc.driverClass = com.mysql.jdbc.Driver jdbc.url= jdbc:mysql://localhost:3306/xxxxxx jdbc.username=root jdbc.password=xxxxx
2) 配置文件
applicationContext.xml
<!--引入外部配置文件--> <context:property-placeholder location="jdbc.properties"></context:property-placeholder> <!--配置连接池--> <!--数据源--> <bean id="dataSourceBase" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <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> <!--配置 Hibernate 相关属性--> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!--注入连接池--> <property name="dataSource" ref="dataSourceBase"/> <!--配置 Hibernate 的属性--> <property name="hibernateProperties"> <props> <!--方言--> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <!--加载 HIbernate 中的映射文件--> <property name="mappingResources"> <list> <value>com/gizhi/domain/*.xml</value> </list> </property> </bean>
3.编写 dao
1) 使用Hibernate模版,dao 继承 HibernateDaoSupporte类
2) applicationContext.xml 配置 dao
<bean id="productDao" class="com.gizhi.dao.ProductDao"> <property name="sessionFactory" ref="sessionFactory"/> </bean>3) 在 dao 中调用模版,来完成保存的操作
this.getHibernateTemplate().save(product);
4.事务管理
1) applicationContext.xml 配置事务管理器
<!--配置事务管理器--> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean>2) 开启注解事务
<!--注解事务--> <tx:annotation-driven transaction-manager="transactionManager"/>
注:
使用 idea 工具会产生 class path resource [com/xxxx/domain/Product.hbm.xml] cannot be opened because it does not exist 错误
原因是因为
src文件夹是存放代码的,resource文件夹是存放资源的,因此intellij在编译的时候会忽略src文件夹下面的xml文件,导致最后发布的文件夹下面丢失了这些映射文件。
参考 http://www.cnblogs.com/weishenhong/p/5309430.html
最后把 hbm.xml 移动到 resource
文件夹中,即可解决。
相关文章推荐
- 【SSH】:基于Struts2+HIbernate3+Spring3实现员工管理系统之框架整合篇
- 基于SSH实现员工管理系统之框架整合篇
- (一)基于SSH实现员工管理系统之框架整合篇
- 基于SSH实现管理系统之框架整合篇
- 基于JavaEE(SSH)实现员工管理系统案例
- 【SSH】:基于Struts2+HIbernate3+Spring3实现员工管理系统之案例实现篇(上)
- 【SSH】:基于Struts2+HIbernate3+Spring3实现员工管理系统之案例实现篇(下)
- 基于SSH实现员工管理系统登录权限的过滤器与拦截器的综合使用
- 黑马程序员 C#学习笔记⑥ 三层架构基础实现员工信息管理
- SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例
- Maven学习笔记(十)-Maven整合SSHSJ(Spring+SpringMVC+Hibernate+Spring Data JPA+JdbcTemplate)框架
- 基于SSH的员工管理系统(一)——包结构
- 基于SSH的员工管理系统(三)——配置文件
- 基于配置实现信息管理系统开发基础框架
- SpringMVC学习系列(11) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
- 学习笔记:spring与hibernate整合(采用aop来管理事务来实现声明式事务)
- SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
- 基于SSH三大框架的员工管理系统——总结
- 基于SSH的员工管理系统(二)——lib详解