Рубрики
Без рубрики

Пример интеграции Struts 2 + гибернация

– Распорки 2 + Пример интеграции в спящий режим

В Struts2 нет официальных плагинов для интеграции платформы Hibernate. Но вы можете обойти это с помощью следующих шагов:

  1. Зарегистрируйте пользовательский ServletContextListener .
  2. В классе ServletContextListener инициализируйте сеанс гибернации и сохраните его в контексте сервлета .
  3. В классе действий получите сеанс гибернации из servletcontext и выполните задачу гибернации как обычно.

Посмотрите на отношения:

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

В этом руководстве показан простой клиентский модуль (функция добавления и списка), разработанный в Struts 2 , и выполнение операции с базой данных с помощью Гибернации . Часть интеграции использует описанный выше механизм (сохранение и извлечение сеанса гибернации в контексте сервлета).

1. Структура проекта

Посмотрите эту полную структуру папок проекта.

2. Скрипт таблицы MySQL

Создайте таблицу клиентов для демонстрации. Вот сценарий таблицы SQL.

DROP TABLE IF EXISTS `mkyong`.`customer`;
CREATE TABLE  `mkyong`.`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. Зависимость

Получите библиотеки зависимостей Struts2, Hibernate и MySQL.

//...
	
	
	        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. Материалы для зимней спячки

Модель и конфигурация гибернации загружаются.

Customer.java – Создайте класс для таблицы клиентов.

package com.mkyong.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 – Файл отображения гибернации для клиента.





    

        
            
            
        
        
            
        
        
            
        
        
            
        
    

hibernate.cfg.xml – Файл конфигурации базы данных гибернации.





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

5. Спящий режим ServletContextListener

Создайте ServletContextListener , инициализируйте сеанс гибернации и сохраните его в контексте сервлета .

Спящий режим прослушивателя.java

package com.mkyong.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());
	   }
	}
}

0 Зарегистрируйте слушателя в web.xml файл.t]0[/ 0 Зарегистрируйте слушателя в web.xml файл.t]0[/





  Struts 2 Web Application
  
  
	struts2
	
	  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
	
  
  
  
	struts2
	/*
  
 
  
    
	  com.mkyong.listener.HibernateListener
    
  
 

6. Действие

В классе действий получите сеанс гибернации из servletcontext и выполните задачу гибернации как обычно.

В классе действий ||получите сеанс гибернации из servletcontext || и выполните задачу гибернации как обычно.

package com.mkyong.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.mkyong.customer.model.Customer;
import com.mkyong.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

Страница JSP для добавления и перечисления клиентов.

Страница JSP для добавления и перечисления клиентов.

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



 

Struts 2 + Hibernate integration example

Add Customer

All Customers

Customer Id Name Address Created Date


8. Страница JSP для добавления и перечисления клиентов.

Свяжите все это~




 

  
 	
  
		
    
       pages/customer.jsp
    
	
    
        pages/customer.jsp
    		

  	

9. Демонстрация

Доступ к клиентскому модулю: http://localhost:8080/Struts2Example/listCustomerAction.action

Заполните поля имени и адреса, нажмите кнопку “Отправить”, введенные данные клиента будут немедленно перечислены.

Ссылка

  1. Интеграция Struts 2 + Hibernate с “Плагином для полной гибернации”
  2. Документация ServletContextListener
  3. Пример интеграции Struts + гибернация

Оригинал: “https://mkyong.com/struts2/struts-2-hibernate-integration-example/”