Exemple d’intégration avec Struts 2 + Spring + Hibernate

Exemple d'intégration de Struts 2 + Spring + Hibernate

Téléchargez-le -Struts2-Spring-Hibernate-Integration-Example.zip

Dans ce tutoriel, il montre l'intégration entre «Struts2 + Spring + Hibernate». Assurez-vous de vérifier les didacticiels suivants avant de continuer.

Voir le résumé des étapes d'intégration:

  1. Obtenez toutes les bibliothèques de dépendances (beaucoup).

  2. Enregistrez lesContextLoaderListener de Spring pour intégrer Struts 2 et Spring.

  3. Utilisez lesLocalSessionFactoryBean de Spring pour intégrer Spring et Hibernate.

  4. Terminé, tous connectés.

Voir la relation:

Struts 2 <-- (ContextLoaderListener) --> Spring <-- (LocalSessionFactoryBean) --> Hibernate

Ce sera un très long tutoriel avec peu d'explications, assurez-vous de vérifier les 3 articles ci-dessus pour plus de détails.

Début des didacticiels…

Il va créer une page client, avec une fonction d'ajout de client et de liste de clients. Le serveur frontal utiliseStruts 2 pour afficher,Spring comme moteur d'injection de dépendances etHibernate pour effectuer l'opération de base de données. Commençons…

1. Structure du projet

Structure du dossier du projet.

Struts2 Spring Hibernate Project Structure

Struts2 Spring Hibernate Project Structure

2. Script de table MySQL

Script de table du client.

DROP TABLE IF EXISTS `example`.`customer`;
CREATE TABLE  `example`.`customer` (
  `CUSTOMER_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `NAME` varchar(45) NOT NULL,
  `ADDRESS` varchar(255) NOT NULL,
  `CREATED_DATE` datetime NOT NULL,
  PRIMARY KEY (`CUSTOMER_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

3.Dependency libraries

Ces didacticiels nécessitent de nombreuses bibliothèques de dépendances.

Struts 2…

        
        
        org.apache.struts
        struts2-core
        2.1.8
        
    
    
            org.apache.struts
        struts2-spring-plugin
        2.1.8
        

MySQL…

        
    
        mysql
        mysql-connector-java
        5.1.9
    

Printemps…

    
    
        org.springframework
        spring
        2.5.6
    
    
        org.springframework
        spring-web
        2.5.6
    

Hiberner…

    
    
        org.hibernate
        hibernate
        3.2.7.ga
    

    
    
        dom4j
        dom4j
        1.6.1
    

    
        commons-logging
        commons-logging
        1.1.1
    

    
        commons-collections
        commons-collections
        3.2.1
    

    
        cglib
        cglib
        2.2
    
    

    
    
        antlr
        antlr
        2.7.7
    
    

4. Hiberner…

Seuls les fichiers de modèle et de mappage sont requis, car Spring gérera la configuration Hibernate.

Customer.java - Crée une classe pour la table client.

package com.example.customer.model;

import java.util.Date;

public class Customer implements java.io.Serializable {

    private Long customerId;
    private String name;
    private String address;
    private Date createdDate;

    //getter and setter methods
}

Customer.hbm.xml - Fichier de mappage Hibernate pour le client.




    
        
            
            
        
        
            
        
        
            
        
        
            
        
    

5. Struts 2…

Implémente le modèle de conception Bo et DAO. Tous les Bo et DAO seront DI par Spring dans le fichier de configuration du bean Spring. Dans le DAO, make it étend lesHibernateDaoSupport de Spring pour intégrer l'intégration Spring et Hibernate.

CustomerBo.java

package com.example.customer.bo;

import java.util.List;
import com.example.customer.model.Customer;

public interface CustomerBo{

    void addCustomer(Customer customer);
    List listCustomer();

}

CustomerBoImpl.java

package com.example.customer.bo.impl;

import java.util.List;
import com.example.customer.bo.CustomerBo;
import com.example.customer.dao.CustomerDAO;
import com.example.customer.model.Customer;

public class CustomerBoImpl implements CustomerBo{

    CustomerDAO customerDAO;
    //DI via Spring
    public void setCustomerDAO(CustomerDAO customerDAO) {
        this.customerDAO = customerDAO;
    }

    //call DAO to save customer
    public void addCustomer(Customer customer){
        customerDAO.addCustomer(customer);
    }

    //call DAO to return customers
    public List listCustomer(){
        return customerDAO.listCustomer();
    }
}

CustomerDAO.java

package com.example.customer.dao;

import java.util.List;
import com.example.customer.model.Customer;

public interface CustomerDAO{

    void addCustomer(Customer customer);
    List listCustomer();

}

CustomerDAOImpl.java

package com.example.customer.dao.impl;

import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.example.customer.dao.CustomerDAO;
import com.example.customer.model.Customer;

public class CustomerDAOImpl extends HibernateDaoSupport
    implements CustomerDAO{

    //add the customer
    public void addCustomer(Customer customer){
        getHibernateTemplate().save(customer);
    }

    //return all the customers in list
    public List listCustomer(){
        return getHibernateTemplate().find("from Customer");
    }

}

CustomerAction.java - L'action Struts2 n'est plus nécessaire pour étendre lesActionSupport, Spring le gérera.

package com.example.customer.action;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.example.customer.bo.CustomerBo;
import com.example.customer.model.Customer;
import com.opensymphony.xwork2.ModelDriven;

public class CustomerAction implements ModelDriven{

    Customer customer = new Customer();
    List customerList = new ArrayList();

    CustomerBo customerBo;
    //DI via Spring
    public void setCustomerBo(CustomerBo customerBo) {
        this.customerBo = customerBo;
    }

    public Object getModel() {
        return customer;
    }

    public List getCustomerList() {
        return customerList;
    }

    public void setCustomerList(List customerList) {
        this.customerList = customerList;
    }

    //save customer
    public String addCustomer() throws Exception{

        //save it
        customer.setCreatedDate(new Date());
        customerBo.addCustomer(customer);

        //reload the customer list
        customerList = null;
        customerList = customerBo.listCustomer();

        return "success";

    }

    //list all customers
    public String listCustomer() throws Exception{

        customerList = customerBo.listCustomer();

        return "success";

    }

}

6. Printemps…

Presque toute la configuration se fait ici, du tout, Spring est spécialisé dans le travail d'intégration :).

CustomerBean.xml - Déclarez les beans Spring: Action, BO et DAO.



    
        
    

    
        
    

    
        
    

database.properties - Déclarez les détails de la base de données.

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/example
jdbc.username=root
jdbc.password=password

DataSource.xml - Crée un bean de source de données.



 
   
     WEB-INF/classes/config/database/properties/database.properties
   


  
    
    
    
    
  

HibernateSessionFactory.xml - Créez un beansessionFactory pour intégrer Spring et Hibernate.






    
      
    

    
       
         org.hibernate.dialect.MySQLDialect
         true
       
    

    
        
          com/example/customer/hibernate/Customer.hbm.xml
        
    


SpringBeans.xml - Créez un fichier de configuration de bean Spring principal, agissez comme la gestion centrale du bean.



    
    
    

    
    

7. Page JSP

Page JSP pour afficher l'élément avec les balises Struts 2.

customer.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>





Struts 2 + Spring + Hibernate integration example

Add Customer

All Customers

Customer Id Name Address Created Date


8. struts.xml

Liez le tout ~




    

    

        
            pages/customer.jsp
        

        
            pages/customer.jsp
        

    

9. Struts 2 + Spring

Pour intégrer Struts 2 et Spring, enregistrez simplement la classe d'écouteContextLoaderListener, définissez un paramètre «contextConfigLocation» pour demander au conteneur Spring d'analyser le «SpringBeans.xml» au lieu du paramètre par défaut «applicationContext.xml) s ».

web.xml




  Struts 2 Web Application

  
    struts2
    
      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    
  

  
    struts2
    /*
  

  
    contextConfigLocation
    /WEB-INF/classes/SpringBeans.xml
  

  
    
      org.springframework.web.context.ContextLoaderListener