基于Myeclipse的三大框架(SSH)整合

  文中主要基于Myeclipse进行配置,配置流程为:Hibernate --> Spring --> 整合 --> struts2 -->整合。注意:在此文中,主要讲述基于注解方式配置Bean。

  在配置三大部件时,都需要导入各自的jar包。基于Myeclipse,可右击“项目”,点击“Myeclipse”,找到“Project Facets[Capabilities]”,然后导入jar包。

  配置HIbernate:首先创建实体类,然后配置实体关系映射表 .hbm.xml文件,最后创建Hibernate配置文件 Hibernate.cfg.xml。在配置 .hbm.xml文件时,可寻找一个插件,由系统自动生成,这里不再说明;也可跟创建一般配置文件一般,手动创建,然后根据数据库表字段逐一配置(右键“项目”,file > xml[Basic Tamplates] > "命名" > "选择第一个DTD" > "选择第二个,找到 HIbernate Mapping DTD 3.0 //en" >finish)。在配置Hibernate.cfg.xml时,数据库连接可由Spring配置,所以文件中只需配置一些Hibernate基础配置。另外创建Hibernate配置文件只需右键“项目”,在“File”中寻找Hibernate configuration file即可。

  1.Hibernate配置文件中信息可有:

    <session-factory>
      <!-- 配置数据库方言 -->
      <!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> -->
      <!-- 配置Hibernate 事务隔离级别 -->
      <property name="connection.isolation">2</property>
      <!-- 运行时是否打印sql -->
      <property name="show_sql">true</property>
      <!-- 运行时是否格式化 sql-->
      <property name="format_sql">true</property>
      <!-- 生成数据库表的策略 --自动生成-->
      <property name="hbm2ddl.auto">update</property>
    </session-factory>

  2.配置Spring并整合Hibernate:创建Spring配置文件只需右键”项目”,在”File”中寻找“Struts Configuration file”即可。配置中基于注解方式注入。 

  <Beans>

    <context:component-scan base-package="com.shymain.webwork"></context:component-scan>  <!-- 配置IOC 容器扫描范围 -->
    <!-- 导入资源文件 -->
    <context:property-placeholder location="classpath:db.properties"/>
    <!-- 配置C3P0数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
      <property name="user" value="${jdbc.user}"></property>
      <property name="password" value="${jdbc.password}"></property>
      <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
      <property name="driverClass" value="${jdbc.driverClass}"></property>
      <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
      <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
    </bean>

    <!-- 配置Hibernate 的SessionFactory 实例: 通过Spring 提供的 LocalSessionFactoryBean 进行配置 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <!-- 配置数据源属性 -->
      <property name="dataSource" ref="dataSource"></property>
      <!-- Hibernate 配置文件及名称 -->
      <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
      <!-- 配置Hibernate 映射文件的位置及名称,可以使用通配符 -->
      <property name="mappingLocations"
       value="classpath:com/shymain/webwork/entity/*.hbm.xml"></property>
      <property name="hibernateProperties">
        <props>
          <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
          <prop key="hibernate.autoReconnect">true</prop>
        </props>
      </property>
    </bean>
    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager" />  <!-- 启动事物 -->
    <!-- proxy-target-class属性值决定是基于接口的还是基于类的代理被创建。具体意义为:
    当要使用实现了某个接口的类让Spring来生成bean时,无需在aop配置中添加proxy-target-class,因为它默认为false.
    但如果要使用一个指定的类,让Spring来生成bean,并使用它的某个方法时,需要在aop配置上加上一句proxy-target-class="true",否则用JUnit时,会出现:
    Java.lang.ClassCastException: com.sun.proxy.$Proxy6 cannot be cast to daoImp.DAOImp类似的错误. -->
    <aop:aspectj-autoproxy proxy-target-class="true"/>

  </Beans>  

  注意:在使用注解注入Bean时,各类之前应加入@Component,@Respository,@Service,@Action等进行注释。对于各类中实体对象,使用@Autowire自动注入。对于事物管理,可在事务处理类之前需要申明事务,使用@Transactional注释。如果使用 .XMl配置文件配置,需要配置切入点,如下:

    <!-- 配置事务属性,需要事务管理器 -->
       <tx:advice id="txadvice" transaction-manager="transactionManager">
        <tx:attributes>
          <tx:method name="*" propagation="SUPPORTS"/>
        </tx:attributes>
      </tx:advice>
    <!-- 配置事务切入点,以及把事务切入点与事务属性关联起来 -->
    <aop:config>
      <aop:pointcut expression="execution(* com.shymain.webwork.service.*.*(..))"  id="txPointcut"/>
      <aop:advisor advice-ref="txadvice" pointcut-ref="txPointcut"/>
    </aop:config>

  3.配置Struts并与Spring整合:使用注解配置JavaBean,与一般Bean的配置相同。需要注意的是,Struts与Spring整合时,在Struts中action的配置属性class需要指向Spring中相对应Bean的id属性。另外,整合过程中,对应Action的JavaBean配置需指定Scope属性值为“prototype”,基于注解使用@Scope("prototype")。struts配置文件的创建只需右键“项目”,在“File”中寻找即可。

    

  struts配置文件中配置: 

  <struts>
    <!-- 配置Action的可延续后缀名 -->
    <constant value="action,do," name="struts.action.extension"></constant>
    <!-- 指定由Spring创建实例 -->
    <constant name="struts.objectFactory" value="spring" />
    <package name="default" extends="struts-default" namespace="/">
      <!-- action中class属性指定在spring配置中Action相对应的id -->
      <action class="customerAction" name="CustomerAction" method="save">
      <result name="success">/success.jsp</result>
      </action>
    </package>
  </struts>

  练习时个人教训: 创建项目时,注意将连接数据库jar包导入项目中,确保在 WEB-INF 下的 lib 中存在,不然出现各种错误,最后还是不知道错在哪里。。。。

  修改:在配置Struts时,需要在web.xml 中配置filter过滤器,由于此前是基于Myeclipse整合,在配置Struts时,系统会自动配置。

posted @ 2017-08-04 11:04  shymain  阅读(157)  评论(0编辑  收藏  举报