Struts 2 + Integrationsbeispiel für den Ruhezustand

Beispiel für die Integration von Struts 2 + Hibernate

Laden Sie es herunter -Struts2-Hibernate-Integration-Example.zip

In Struts2 gibt es keine offiziellen Plugins, um das Hibernate-Framework zu integrieren. Sie können dies jedoch mit den folgenden Schritten umgehen:

  1. Registrieren Sie ein benutzerdefiniertesServletContextListener.

  2. Initialisieren Sie in der KlasseServletContextListenerHibernate session and store it into the servlet context.

  3. In der Aktionsklasseget the Hibernate session from the servlet context und führen Sie die Aufgabe "Ruhezustand" wie gewohnt aus.

Siehe die Beziehung:

Struts 2 <-- (Servlet Context) ---> Hibernate <-----> Database

In diesem Lernprogramm wird ein einfaches Kundenmodul (Funktion zum Hinzufügen und Auflisten) gezeigt, das inStruts 2 entwickelt wurde, und die Datenbankoperation mitHibernate ausgeführt. Der Integrationsteil verwendet den oben angegebenen Mechanismus (Speichern und Abrufen der Ruhezustandssitzung im Servlet-Kontext).

Diese Problemumgehung ist den klassischenStruts 1.x and Hibernate integrationehr ähnlich. Nur die klassischen Struts 1.x verwenden die Struts-Plugins. Während der Struts 2 den generischen Servlet-Listener verwendet.

1. Projektstruktur

Diese vollständige Projektordnerstruktur anzeigen.

Struts 2 Hibernate integration example

2. MySQL-Tabellenskript

Erstellen Sie eine Kundentabelle für die Demonstration. Hier ist das SQL-Tabellenskript.

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. Abhängigkeit

Holen Sie sich die Struts2-, Hibernate- und MySQL-Abhängigkeitsbibliotheken.

//...
    
    
            org.apache.struts
        struts2-core
        2.1.8
        

    
    
        mysql
        mysql-connector-java
        5.1.9
    

    
    
        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. Hibernate Stuffs

Das Hibernate-Modell und Konfigurationsmaterial.

Customer.java - Erstellen Sie eine Klasse für die Kundentabelle.

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 - Zuordnungsdatei für den Kunden im Ruhezustand.




    

        
            
            
        
        
            
        
        
            
        
        
            
        
    

hibernate.cfg.xml - Datenbankkonfigurationsdatei im Ruhezustand.




  
    false
    password
    jdbc:mysql://localhost:3306/example
    root
    org.hibernate.dialect.MySQLDialect
    true
    true
    false
    
  

5. Hibernate ServletContextListener

Erstellen Sie einServletContextListener und initialisieren Sie dasHibernate session and store it into the servlet context.

HibernateListener .java

package com.example.listener;

import java.net.URL;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateListener implements ServletContextListener{

    private Configuration config;
    private SessionFactory factory;
    private String path = "/hibernate.cfg.xml";
    private static Class clazz = HibernateListener.class;

    public static final String KEY_NAME = clazz.getName();

    public void contextDestroyed(ServletContextEvent event) {
      //
    }

    public void contextInitialized(ServletContextEvent event) {

     try {
            URL url = HibernateListener.class.getResource(path);
            config = new Configuration().configure(url);
            factory = config.buildSessionFactory();

            //save the Hibernate session factory into serlvet context
            event.getServletContext().setAttribute(KEY_NAME, factory);
      } catch (Exception e) {
             System.out.println(e.getMessage());
       }
    }
}

Registrieren Sie den Listener in der Datei web.xml.
web.xml




  Struts 2 Web Application

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

  
    struts2
    /*
  

  
    
      com.example.listener.HibernateListener
    
  

6. Aktion

In der Aktionsklasseget the Hibernate session from the servlet context und führen Sie die Aufgabe "Ruhezustand" wie gewohnt aus.

CustomerAction.java

package com.example.customer.action;

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

import org.apache.struts2.ServletActionContext;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.example.customer.model.Customer;
import com.example.listener.HibernateListener;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class CustomerAction extends ActionSupport
    implements ModelDriven{

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

    public String execute() throws Exception {
        return SUCCESS;
    }

    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{

        //get hibernate session from the servlet context
        SessionFactory sessionFactory =
             (SessionFactory) ServletActionContext.getServletContext()
                     .getAttribute(HibernateListener.KEY_NAME);

        Session session = sessionFactory.openSession();

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

        session.beginTransaction();
        session.save(customer);
        session.getTransaction().commit();

        //reload the customer list
        customerList = null;
        customerList = session.createQuery("from Customer").list();

        return SUCCESS;

    }

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

        //get hibernate session from the servlet context
        SessionFactory sessionFactory =
             (SessionFactory) ServletActionContext.getServletContext()
                     .getAttribute(HibernateListener.KEY_NAME);

        Session session = sessionFactory.openSession();

        customerList = session.createQuery("from Customer").list();

        return SUCCESS;

    }
}

7. JSP-Seite

JSP-Seite zum Hinzufügen und Auflisten des Kunden.

customer.jsp

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





Struts 2 + Hibernate integration example

Add Customer

All Customers

Customer Id Name Address Created Date


8. struts.xml

Verknüpfe alles ~





  

  

    
       pages/customer.jsp
    

    
        pages/customer.jsp
    

  

9. Demo

Struts 2 Hibernate Add Customer

Füllen Sie die Felder für Name und Adresse aus, klicken Sie auf "Senden" und die eingegebenen Kundendaten werden sofort aufgelistet.

Struts2 Hibernate List Customer