Maven Multiproyecto Struts2 Spring Hibernate
Short Description
Descripción: Como generar un proyecto de modulos multiples...
Description
Maven multripoyecto para Struts2,Spring y Hibernate Para generar esta estructura de proyecto, parto del supuesto que tiene configurado un repositorio maven local, eclipse ,un servidor de base de datos MySql y un servidor JBoss o Tomcat. Con maven se genera una estructura de multiporyectos un pom.xml padre y los n proyectos hijos con sus respectivos pom.xml que generaran .jar o .war. Se pretende crear un temple con proyecto padre que contenga dos hijos un proyecto backend y otro frontend.En el backend se alojaran las clases entidades del proyecto y en el frontend los action de struts2, beans con spring , y la conexion a la bd y mapeo con hibernate. 1.Crear dos carpetas una llamada multiproyecto y otra workspace_maven(en esta importaremos los proyectos creados con maven y son los que se trabajaran desde eclipse) Desde consola nos situamos en la carpeta multiproyecto: cd /home/mvega/multiproyecto
2.Dentro de /multiproyecto correr el siguiente comando maven para crear el proyecto padre: mvn archetype:create -DgroupId=com.template.main -DartifactId=template-main
El resultado es el siguiente:
3. 3. 3. 3. 3. 3.
Dentro de ej. /home/mvega/multiproyecto/template-main , borrar la carpeta src, y en el archivo pom.xml modificar jar por pom
4.Ingresar al proyecto padre con cd /home/mvega/multiproyecto/template-main
5.Dentro del proyecto padre correr el mando maven para generar el proyecto backend: mvn archetype:create -DgroupId=com.template.backend -DartifactId=template-backend
6.Dentro del proyecto padre correr el mando maven para generar el proyecto frontend: mvn archetype:create -DgroupId=com.template.frontend -DartifactId=template-frontend
7.Dentro del proyecto template-frontend agrega la siguiente linea al pom.xml , war
quedando lo siguiente: com.template.frontend template-frontend war
1.0-SNAPSHOT template-frontend
8.Dentro del proyecto template-frontend agregar dentro del pom.xml la dependencia con el proyecto template-backend: com.template.backend template-backend 1.0-SNAPSHOT
9.Dentro del proyecto template-frontend crear un archivo vacion web.xml, quedando en el siguiente path: template-frontend/src/main/webapp/WEB-INF/web.xml
10.Situarse dentro del proyecto padre tempate-main agregar los modulos y correr el siguiente comando maven: template-backend template-frontend mvn clean install
En este punto se tiene un proyecto que genera un .war, este caso seria el proyecto templatefrontend con dependencia de .jar generado por el proyecto template-backend
11.Hacer el proyecto template-frontend de tipo eclipse, importandolos con comando maven: mvn eclipse:eclipse
Una vez corrido ese comando dentro de eclipse se creara una variable de entorno a maven M2_REPO que hace referencia ej. /home/mvega/.m2/repository/ 12. Hacer el proyecto template-frontend dinamico web para eclipse mvn eclipse:eclipse -Dwtpversion=1.5
13.Ingresar a Eclipse e importar el proyecto recien creado con maven File->New Proyect->Import...
Seleccionar la opcion General->Existing Project into Workspace
Debemos elegir el proyecto template-main que esta dentro del workspace_maven para este ejemplo, se veran dentro de la vista de packege del eclipse los proyectos template-backend y template-frontend con sus respectivos archivos pom.xml 14.Hacer proyecto dinamico para Tomcat o Jboss sobre el proyecto template-frotend hacer click con el boton derecho de mouse elegir Properties->Project Facets presionar el boton Apply y Ok
Nota:en este punto fijarse la solapa Problem, hacer click boton derecho en los proyectos template-backend y template-frontend elegir opcion Quick Fix opcion … facect ..1.6
Hasta aqui se tiene multiproyectos con maven, un proyecto padre como template-main y dos proyectos hijos template-backend y template-frontend Continuando con la creacion de una aplicacion web multiproyecto con struts2,spring y hibernate, configuraremos las dependencias y archivos de los respectivos frameworks. 15. En el archivo pom.xml del proyecto template-frontend vamos a colocar las dependencias de struts2,spring y hibernate. Struts2... 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
Spring... org.springframework spring 2.5.6 org.springframework spring-web 2.5.6
Hibernate.... 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
javax.transaction jta 1.0.1B javassist javassist 3.4.GA compile asm asm 3.1
16. Correr en MySql el siguiente script con esto crearemos una tabla usuario dentro del schema template: DROP TABLE IF EXISTS `template`.`usuario`; CREATE TABLE `template`.`usuario` ( `ID` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `NOMBRE` VARCHAR(45) NOT NULL, `PASSWORD` VARCHAR(45) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8; INSERT INTO template.usuario (NOMBRE,PASSWORD)VALUES ('admin','admin'); INSERT INTO template.usuario (NOMBRE,PASSWORD)VALUES ('root','root'); INSERT INTO template.usuario (NOMBRE,PASSWORD)VALUES ('admin','1234'); 17.Hibernate configuraremos una entidad Usuario.java en el proyecto template-backend package com.template.backend.modelo; import java.io.Serializable; /** * @author mvega * */ public class Usuario implements Serializable { private static final long serialVersionUID = -8261984277322134700L; private Long id; private String nombre; private String password;
//constructor y getters and setters
18.Generamos el jar de template-backend para ser utilizado por el proyecto templatefrontend, en consola ingresamos los siguientes comandos: cd /home/mvega/workspace_maven/template-backend mvn clean install -Dmaven.test.skip=true 19.Desde consola ingresamos al proyecto template-frotend, y corremos el siguiente comando: mvn eclipse:eclipse Esto refrescara las referencias de dependencia entre el template-frontend y el templatebackend y las dependencias de struts2,spring y hibernate configuradas en el pom.xml, si no tenemos los jar automaticamente maven los bajara al repositorio local de la pc.
Dentro de Referend Libreries del proyecto template-frontend se podra ver esto:
Es clase Usuario.java creada en el proyecto template-backend.
20.Dentro del proyecto template-frontend, crearmos el archivo de mapeo Usuario.hbm.xml, , creamos la siguiente estructura de carpetas resource/hibernate y colocar el archivo Usuario.hbm.xml con el siguiente contenido:
Usuario.hbm.xml
21.Continuamos dentro del proyecto template-frontend, vamos a crear una interface y su implementacion para poder conectarnos con la bd en este caso UsuarioDAO.java y UsuarioDAOImpl.java
UsuarioDAO.java package com.template.frontend.dao; /** * @author mvega * */ public interface UsuarioDAO { public boolean validarUsuario(String nombre,String password); } UsuarioDAOImpl.java package com.template.frontend.dao.impl; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.template.backend.modelo.Usuario; import com.template.frontend.dao.UsuarioDAO; public class UsuarioDAOImpl extends HibernateDaoSupport implements UsuarioDAO{ public boolean validarUsuario(String nombre,String password) { boolean usuarioValido = false; Criteria criteria = this.getSession().createCriteria(Usuario.class); criteria.add(Restrictions.eq("nombre", nombre)); criteria.add(Restrictions.eq("password", password)); Usuario usuario =(Usuario)criteria.uniqueResult(); if(usuario!=null){ usuarioValido = true; } } }
return usuarioValido;
22.Procedemos a crear la capa BO que sera inyectada al action que recibe los datos del formulario y es un intermediario en el action y la capa dao. UsuarioBO.java y UsuarioBOImpl.java
UsuarioBO.java package com.template.frontend.bo; /** * @author mvega * */ public interface UsuarioBO { public boolean validarUsuario(String nombre, String password); } UsuarioBOImpl.java package com.template.frontend.bo.impl; import com.template.frontend.bo.UsuarioBO; import com.template.frontend.dao.UsuarioDAO; /** * @author mvega * */ public class UsuarioBOImpl implements UsuarioBO { private UsuarioDAO usuarioDAO; public boolean validarUsuario(String nombre, String password) { password);
boolean usuarioValido = this.usuarioDAO.validarUsuario(nombre, return usuarioValido;
}
public void setUsuarioDAO(UsuarioDAO usuarioDAO) { this.usuarioDAO = usuarioDAO; } }
23.En el proyecto template-frontend dentro de webapp creamos una estructura de carpetas para alojar las paginas login.jsp, login_ok.jsp y login_error.jps, quedando esto de la siguiente manera:
login.jsp Login al sistema con struts2, spring y hibernate
login_ok.jsp Login al sistema con struts2, spring y hibernate Bienvenido
!!!
login_error.jsp Login al sistema con struts2, spring y hibernate El usuario o password ingresado es invalido, o no esta registrado en el sistema!!!
24.Creamos el archivo struts.xml que contiene la deficinion de action y navegabilidad de las paginas. Dicho archivo lo colocamos dentro de src/main/resources
struts.xml pages/login.jsp pages/login_ok.jsp pages/login_error.jsp
25.Creamos el archivo de configuracion de la base de datos database.properties dentro de la estructura de carpetas WEB-INF/conf/database/properties
database.properties jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/template jdbc.username=root jdbc.password=root
26.Crearemos los archivos de configuracion de spring que crearan los bean de conexion a la base de datos action bo y dao. Se crea la carpeta spring dentro de WEB-INF/conf/spring en el se alojaran los archivos action-spring.xml bo-spring.xml dao-spring.xml data-source.xml hibernate-session-factory.xml
data-source.xml WEB-INF/conf/database/properties/database.properties
hibernate-session-factory.xml org.hibernate.dialect.MySQLDialect true hibernate/Usuario.hbm.xml
dao-spring.xml
bo-spring.xml
action-spring.xml
27.Creamos el archivo de contexto de spring applicationContext.xml que levantara todos los archivos xml creados con anterioridad, debe esta dentro de WEB-INF
applicationContext.xml
28.Por ultimo vamos a configurar el servlet de struts y el contecxto de spring dentro del archivo web.xml Template Struts 2 Web Application struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* org.springframework.web.context.ContextLoaderListener
29.Agregar el proyecto dinamico al servidor, en este caso tenemos configurado un servidor jboss 4.2,pero tambien se puede probar el proyecto en otro servidor como el tomcat, para ellos sobre el sevidor hacemos boton derecho del mouse Add and Remove.. y seleccionamos el proyecto template-frontend
30.Corremos el servidor y se desplegara en el la carpeta deploy del server el templatefrontend.war, y accedemos a la aplicacion para ingresar los datos al fomularios a la siguiente url http://localhost:8082/template-frontend/Usuario/Login.action ingresamos : usaurio:admin password: admin
Pantalla de login
Pantalla de bienvenida
Para el caso que se ingrese un usuario o password invalido se mostrara la pantalla de error
View more...
Comments