目录

Eclipse搭建Struts2+Spring4+Hibernate4+MySql

目录

本次搭建为普通的javaweb项目,并未使用maven进行搭建,所以请先下载好响应的jar包

1、需导入的jar包括ssh所需的以及mysql的驱动包

http://catbro.cn/attachment/20170125/9986faccd7894692982ef3f76d68b2b8.png

http://catbro.cn/attachment/20170125/ce2996ca5020409b92c12eecd78c7e2b.png

第二步:在web.xml中配置spring的监听器以及struts2的过滤器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<!-- Spring的框架的核心监听器 -->
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- Struts2的框架的核心过滤器的配置 -->

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

/*表示的是拦截所有请求,struts2拦截请求后获取struts.xml文件查找对应的action,然后再调用相应的action中的方法。

第三步:配置数据库文件在src下创建jdbc.properties文件

内容为

1
2
3
4
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf-8
jdbc.username=xxx
jdbc.password=xxx

第四步:在spring的配置文件中加载数据库文件

1
2
  <!-- 引入外部的属性文件 -->
  <context:property-placeholder location="classpath:jdbc.properties" />

第五步:使用数据库配置文件的字段配置数据库连接池

1
2
3
4
5
6
7
 <!-- 配置C3P0链接池 -->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driverClass}" />
   <property name="jdbcUrl" value="${jdbc.url}" />
   <property name="user" value="${jdbc.username}" />
   <property name="password" value="${jdbc.password}" />
 </bean>

第六步:将数据库连接池注入hibernate的数据库seesionFactory对象中,因为数据库是交由hibernate的seesionFactory对象进行管理的,配置与数据库相关的信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<bean id="sessionFactory"
   class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <!-- 注入连接池 -->
    <property name="dataSource" ref="dataSource" />
   <!-- 配置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">create</prop>
      </props>
    </property>

第七部:配置事务管理器

1
2
3
4
5
6
7
 <!-- 配置事务管理器 -->
  <bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
 </bean>
 <!-- 开始注解事务 -->
 <tx:annotation-driven transaction-manager="transactionManager" />

第八步:(可选)开启baseDao模式

1
2
3
4
5
6
7
8
9

  <!-- 下面三个Bean的配置可有可无,但配置后用处更大,通常用于BaseDao类、其他Dao类或特殊工具类中 -->
  <bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate"
    p:sessionFactory-ref="sessionFactory" />

  <bean id="hibernateDaoSupport" class="org.springframework.orm.hibernate4.support.HibernateDaoSupport"
    p:hibernateTemplate-ref="hibernateTemplate" abstract="true"/>

  <bean id="sessionFactoryUtils" class="org.springframework.orm.hibernate4.SessionFactoryUtils" abstract="true"/>

然后呆baseDao的实现类中就可以这样子用了

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
private SessionFactory sessionFactory;

 public SessionFactory getSessionFactory() {
   return sessionFactory;
  }

 @Autowired
  public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
 }
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
@Repository("baseDAO")
@SuppressWarnings("all")
public class BaseDAOImpl implements BaseDAO {

 private SessionFactory sessionFactory;

  public SessionFactory getSessionFactory() {
   return sessionFactory;
  }

 @Autowired
  public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
 }

 private Session getCurrentSession() {
   return sessionFactory.getCurrentSession();
  }

 public Serializable save(T o) {
   return this.getCurrentSession().save(o);
  }

 public void delete(T o) {
   this.getCurrentSession().delete(o);
 }

 public void update(T o) {
   this.getCurrentSession().update(o);
 }

 public void saveOrUpdate(T o) {
   this.getCurrentSession().saveOrUpdate(o);
 }

 public List find(String hql) {
    return this.getCurrentSession().createQuery(hql).list();
  }

 public List find(String hql, Object[] param) {
    Query q = this.getCurrentSession().createQuery(hql);
    if (param != null && param.length > 0) {
     for (int i = 0; i < param.length; i++) {
       q.setParameter(i, param[i]);
      }
   }
   return q.list();
  }

 public List find(String hql, List

转载请注明原文链接:Eclipse搭建Struts2+Spring4+Hibernate4+MySql