Spring2.5+Struts1.+Hibernate3.3完美整合

一、导入spring

1、导入spring  jar文件

2、在src目录下创建beans.xml文件(在其他项目考入相关配置)

3、创建一个TestService类,并启用事务

@Transactional

publicclass TestService {

   private String testName;

   public String getTestName() {

      returntestName;

   }

   publicvoid setTestName(String testName) {

      this.testName = testName;

   }

}

4、在beans.xml文件中配置testService对象

<bean id="testService" class="com.ccms.test.TestService">

   <property name="testName">

      <value>123</value>

   </property>

</bean>

5、创建一个主类MainTest,用于测试spring配置是否成功

publicclass MainTest {

   publicstaticvoid main(String[] args) {

      ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");

      TestService ts=(TestService) ac.getBean("testService");

      System.out.println(ts.getTestName());

   }

}

如果测试成功,将打印出123!

二、导入Hibernate

1、使用MyEclipse导入Hibernate,并生成Hibernate.hbm.xml文件

2、(可选)删除MyEclipse引入的jar包,并引入自己的Hibernate jar  

3、使用MyEclipse的逆向工程生成domian对象

4、配置beans.xml文件

    <!-- 启用注解扫描 -->

    <context:annotation-config/>

    <!-- 配置数据源 -->

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"

        destroy-method="close">

        <property name="driverClassName" value="org.gjt.mm.mysql.Driver" />

           <property name="url" value="jdbc:mysql://localhost:3306/ccms?useUnicode=true&amp;characterEncoding=gbk" />

        <property name="username" value="root" />

        <property name="password" value="123456" />

        <!-- 连接池启动时的初始值 -->

        <property name="initialSize" value="3" />

        <!-- 连接池的最大值 -->

        <property name="maxActive" value="500" />

           <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->

        <property name="maxIdle" value="2" />

           <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->

        <property name="minIdle" value="1" />

    </bean>

    <!-- 配置SessionFactory -->

    <bean id="sessionFactory"

        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

        <!-- 引用上面的数据源(会话工厂依赖于数据源的) spring自带数据源 -->

        <property name="dataSource" ref="dataSource" />

        <!-- 接管了Hibernate的对象映射文件 -->

        <property name="mappingResources">

            <list>

                <!-- 这里面放置domain对象的关系映射文件 -->

                <value>com/ccms/domain/Student.hbm.xml</value>

                <value>com/ccms/domain/Picture.hbm.xml</value>

                <value>com/ccms/domain/Information.hbm.xml</value>

                <value>com/ccms/domain/Consumption.hbm.xml</value>

                <value>com/ccms/domain/Campuscard.hbm.xml</value>

            </list>

        </property>

        <!-- 下面配置方言,制动更新,是否显示HQL语句... -->

        <property name="hibernateProperties">

            <value>

                hibernate.dialect=org.hibernate.dialect.MySQLDialect

                hibernate.hbm2ddl.auto=update

                hibernate.show_sql=true

                hibernate.format_sql=true;

            </value>

        </property>

    </bean>

    <!-- 配置事务管理器 -->

    <bean id="txManager"

        class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        <property name="sessionFactory" ref="sessionFactory" />

    </bean>

    <!-- 启用事务注解 -->

    <tx:annotation-driven transaction-manager="txManager"/>

5、此时spring已经接管了Hibernate

6、编写ServiceTest类如下:

@Transactional

publicclass TestService {

    private SessionFactory sessionFactory;

    public SessionFactory getSessionFactory() {

       returnsessionFactory;

    }

    publicvoid setSessionFactory(SessionFactory sessionFactory) {

       this.sessionFactory = sessionFactory;

    }

    public List showStudent(){

         returnsessionFactory.getCurrentSession().createQuery("from Student").list();

    }

}

8、在beans.xml文件中配置TestServicebean对象

    <bean id="testService" class="com.ccms.test.TestService">

       <property name="sessionFactory" ref="sessionFactory"></property>

    </bean>

9、编写MainText进行测试

publicclass MainTest {

    publicstaticvoid main(String[] args) {

        ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");

        TestService ts=(TestService) ac.getBean("testService");

        List list=ts.showStudent();

        for(int i=0;i<list.size();i++){

            Student s=(Student) list.get(i);

            System.out.println(s.getSname());

        }

    }

}

10、如果测试成功,将打印出Student表的所有信息

三、引入Struts1.3(这里不同版本略有不同)

1、因为我们要使用struts-configurate.xml文件的图像界面,所有需要理MyEclipse导入struts1.3(自选)

2、(可选)删除MyEclipse引入的jar包,自己导入需要的jar文件

3、创建一个Action和一个页面进行测试,这里基本没问题!

4、编写web.xml文件,因为项目启动肯定先访问web.xml文件,这里我们需要让spring接管struts,所以需要配置

      <context-param>

           <param-name>contextConfigLocation</param-name>

           <param-value>classpath:beans.xml</param-value>

      </context-param>

      <!-- Spring容器进行实例化 -->

      <listener>

           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

      </listener>

      <filter>

           <filter-name>encoding</filter-name>

            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

           <init-param>

                 <param-name>encoding</param-name>

                 <param-value>UTF-8</param-value>

           </init-param>

      </filter>

      <filter-mapping>

           <filter-name>encoding</filter-name>

           <url-pattern>/*</url-pattern>

      </filter-mapping>

      <!-- 配置openSessionInView -->

      <filter>

           <filter-name>OpenSessionInViewFilter</filter-name>

            <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>

      </filter>

      <filter-mapping>

           <filter-name>OpenSessionInViewFilter</filter-name>

           <url-pattern>/*</url-pattern>

      </filter-mapping>

5、我们还需要配置struts-config.xml文件,让spring接管struts

    <controller>

       <set-property property="processorClass"

           value="org.springframework.web.struts.DelegatingRequestProcessor" />

    </controller>

6、当我们配置到这里,spring已经接管了struts,此时ssh整合已经基本完   成了

7、接下来我们就应该进行ssh的测试了!

8、创建一个ActionTestAction,并将TestService设置为bean

   TestService设置为bean之后,spring就可以使用了,此时就不需要使用ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");来读beans.xml文件了

publicclass TestAction extends Action {

    @Resource

    private TestService testService;

    public TestService getTestService() {

        returntestService;

    }

    publicvoid setTestService(TestService testService) {

        this.testService = testService;

    }

    public ActionForward execute(ActionMapping mapping, ActionForm form,

            HttpServletRequest request, HttpServletResponse response) {

        List list=testService.showStudent();

        request.setAttribute("list", list);

        return mapping.findForward("show");

    }

}

11、创建一个界面showtest.jsp,用于验证show跳转

    <c:forEach items="${list}" var="student">

       ${student.sno}|${student.sname}<br />

</c:forEach>

12、此时我们使用Tomcat部署项目,然后发布:在浏览器下输入

   http://localhost:8080/项目/test.do

13、如果跳转到showtest.jsp页面。,并且显示学生部分信息证明struts   入成功,于此同时,ssh整合将大功告成。

你可能感兴趣的:(ssh)