您的位置:首页 > 其它

基于SSH实现员工管理系统之框架整合篇 学习笔记

2017-11-02 10:34 801 查看
视频地址  http://www.imooc.com/learn/586

一、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
文件夹中,即可解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐