Maven Multiproyecto Struts2 Spring Hibernate



Comments



Description

Maven multripoyecto para Struts2,Spring y HibernatePara 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 <packaging>jar</packaging> por <packaging>pom</packaging> 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 , <packaging>war</packaging> quedando lo siguiente: <groupId>com.template.frontend</groupId> <artifactId>template-frontend</artifactId> <packaging>war</packaging> quedando en el siguiente path: template-frontend/src/main/webapp/WEB-INF/web.Situarse dentro del proyecto padre tempate-main agregar los modulos y correr el siguiente comando maven: <modules> <module>template-backend</module> <module>template-frontend</module> </modules> mvn clean install .0-SNAPSHOT</version> <name>template-frontend</name> 8.<version>1.backend</groupId> <artifactId>template-backend</artifactId> <version>1.xml 10.template.Dentro del proyecto template-frontend agregar dentro del pom.0-SNAPSHOT</version> </dependency> 9.xml la dependencia con el proyecto template-backend: <!-.xml.Dentro del proyecto template-frontend crear un archivo vacion web.dependency to template-backend project --> <dependency> <groupId>com. jar generado por el proyecto template-backend 11.Ingresar a Eclipse e importar el proyecto recien creado con maven File->New Proyect->Import..m2/repository/ 12.En este punto se tiene un proyecto que genera un . Hacer el proyecto template-frontend dinamico web para eclipse mvn eclipse:eclipse -Dwtpversion=1.war.5 13. 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.. Seleccionar la opcion General->Existing Project into Workspace . este caso seria el proyecto templatefrontend con dependencia de .Hacer el proyecto template-frontend de tipo eclipse. /home/mvega/. se veran dentro de la vista de packege del eclipse los proyectos template-backend y template-frontend con sus respectivos archivos pom.Debemos elegir el proyecto template-main que esta dentro del workspace_maven para este ejemplo.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 .xml 14. hacer click boton derecho en los proyectos template-backend y template-frontend elegir opcion Quick Fix opcion … facect .1.6 .Nota:en este punto fijarse la solapa Problem.. Struts2.Hasta aqui se tiene multiproyectos con maven..1.Struts 2 --> <dependency> <groupId>org.1.xml del proyecto template-frontend vamos a colocar las dependencias de struts2.apache.8</version> </dependency> MySql.apache..spring y hibernate. <!-. <!-. 15. En el archivo pom.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.spring y hibernate.1.. configuraremos las dependencias y archivos de los respectivos frameworks.8</version> </dependency> <!-.struts</groupId> <artifactId>struts2-core</artifactId> <version>2..MySQL database driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.9</version> </dependency> .Struts 2 + Spring plugins --> <dependency> <groupId>org. 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. ga</version> </dependency> <!-.1</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.7</version> </dependency> .6</version> </dependency> <dependency> <groupId>org.Hibernate core --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> <version>3.6.7..1</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.springframework</groupId> <artifactId>spring</artifactId> <version>2.2</version> </dependency> <!-.1.5.Hibernate core library dependency start --> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1..7.5.2.Spring framework --> <dependency> <groupId>org..2.. <!-.Hibernate core library dependency end --> <!-.springframework</groupId> <artifactId>spring-web</artifactId> <version>2.6</version> </dependency> Hibernate. <!-.Hibernate query library dependecy start --> <dependency> <groupId>antlr</groupId> <artifactId>antlr</artifactId> <version>2..Spring.1</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3. `PASSWORD` VARCHAR(45) NOT NULL.Hibernate query library dependecy end --> 16.PASSWORD)VALUES ('admin'.java en el proyecto template-backend package com.'admin'). INSERT INTO template.Hibernate configuraremos una entidad Usuario. Correr en MySql el siguiente script con esto crearemos una tabla usuario dentro del schema template: DROP TABLE IF EXISTS `template`.template.0. CREATE TABLE `template`. `NOMBRE` VARCHAR(45) NOT NULL.backend.'1234').usuario (NOMBRE.usuario (NOMBRE.modelo.usuario (NOMBRE. private Long id. import java.PASSWORD)VALUES ('root'. PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8. private String password.Serializable. INSERT INTO template. private String nombre. .<dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.PASSWORD)VALUES ('admin'.'root').`usuario` ( `ID` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT. 17.io.GA</version> <scope>compile</scope> </dependency> <dependency> <groupId>asm</groupId> <artifactId>asm</artifactId> <version>3. /** * @author mvega * */ public class Usuario implements Serializable { private static final long serialVersionUID = -8261984277322134700L.1</version> </dependency> <!-.`usuario`. INSERT INTO template.4.1B</version> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3. si no tenemos los jar automaticamente maven los bajara al repositorio local de la pc.Desde consola ingresamos al proyecto template-frotend.spring y hibernate configuradas en el pom. 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. .test.//constructor y getters and setters 18.skip=true 19. en consola ingresamos los siguientes comandos: cd /home/mvega/workspace_maven/template-backend mvn clean install -Dmaven.Generamos el jar de template-backend para ser utilizado por el proyecto templatefrontend.xml. xml con el siguiente contenido: .java creada en el proyecto template-backend.Dentro de Referend Libreries del proyecto template-frontend se podra ver esto: Es clase Usuario. . 20.hbm.Dentro del proyecto template-frontend. creamos la siguiente estructura de carpetas resource/hibernate y colocar el archivo Usuario.hbm.xml. crearmos el archivo de mapeo Usuario. backend.Long"> <column name="ID" /> <generator class="identity" /> </id> <property name="nombre" type="string"> <column name="NOMBRE" length="45" not-null="true" /> </property> <property name="password" type="string"> <column name="PASSWORD" length="45" not-null="true" /> </property> </class> </hibernate-mapping> 21.net/hibernate-mapping-3.hbm.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.dtd"> <hibernate-mapping> <class name="com.0.0//EN" "http://hibernate.template.sourceforge.Usuario" table="usuario" catalog="template"> <id name="id" type="java.java y UsuarioDAOImpl. vamos a crear una interface y su implementacion para poder conectarnos con la bd en este caso UsuarioDAO.java .modelo.xml <?xml version="1.Usuario.lang.Continuamos dentro del proyecto template-frontend. frontend.frontend.criterion.template.frontend.UsuarioDAO. password)).impl. /** * @author mvega * */ public interface UsuarioDAO { public boolean validarUsuario(String nombre.java package com. criteria.HibernateDaoSupport.java package com.UsuarioDAO.add(Restrictions.createCriteria(Usuario. Criteria criteria = this.template.template.add(Restrictions. Usuario usuario =(Usuario)criteria. .backend.class).Restrictions.dao.orm. import org.Usuario.String password).dao. import org.hibernate.modelo.hibernate3. if(usuario!=null){ usuarioValido = true.getSession(). public class UsuarioDAOImpl extends HibernateDaoSupport implements UsuarioDAO{ public boolean validarUsuario(String nombre.dao.uniqueResult(). nombre)). import com. import org.springframework. import com.String password) { boolean usuarioValido = false.Criteria. criteria.hibernate. } } } return usuarioValido.support.eq("nombre". } UsuarioDAOImpl.template.eq("password". dao.22. public boolean validarUsuario(String nombre.java UsuarioBO. } UsuarioBOImpl. } .bo. String password).bo.frontend. import com.frontend. String password) { password).template.UsuarioBO.frontend.UsuarioDAO. UsuarioBO.validarUsuario(nombre.java package com.template.bo. /** * @author mvega * */ public class UsuarioBOImpl implements UsuarioBO { private UsuarioDAO usuarioDAO. boolean usuarioValido = this.template. /** * @author mvega * */ public interface UsuarioBO { public boolean validarUsuario(String nombre.template.impl.usuarioDAO.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. import com.java y UsuarioBOImpl.java package com. return usuarioValido.frontend. jps.jsp y login_error. login_ok. quedando esto de la siguiente manera: .usuarioDAO = usuarioDAO.En el proyecto template-frontend dentro de webapp creamos una estructura de carpetas para alojar las paginas login. } } 23.jsp.public void setUsuarioDAO(UsuarioDAO usuarioDAO) { this. charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head></head> <body> <h1>Login al sistema con struts2.login. spring y hibernate</h1> <s:form action="Usuario"> <s:textfield name="nombre" label="Nombre:"/> <s:password name="password" label="Password"/> <s:submit label="Enviar" name="Enviar"/> </s:form> </body> </html> .jsp <%@ page contentType="text/html. login_ok.jsp <%@ page contentType="text/html. charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head></head> <body> <h1>Login al sistema con struts2. spring y hibernate</h1> <h4>El usuario o password ingresado es invalido. charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head></head> <body> <h1>Login al sistema con struts2. spring y hibernate</h1> <h4>Bienvenido <s:property value="nombre"/> !!!</h4> </body> </html> login_error.jsp <%@ page contentType="text/html. o no esta registrado en el sistema!!!</h4> </body> </html> . 24.xml que contiene la deficinion de action y navegabilidad de las paginas. Dicho archivo lo colocamos dentro de src/main/resources .Creamos el archivo struts. 0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0.jsp</result> <result name="error">pages/login_error.frontend.apache.xml <?xml version="1.action.jsp</result> </action> <action name="Usuario" class="com.struts.properties dentro de la estructura de carpetas WEB-INF/conf/database/properties .UsuarioAction"> <result name="success">pages/login_ok.org/dtds/struts-2.0//EN" "http://struts.Creamos el archivo de configuracion de la base de datos database.template.dtd"> <struts> <package name="login" namespace="/Usuario" extends="struts-default"> <action name="Login"> <result>pages/login.jsp</result> </action> </package> </struts> 25. driverClassName=com.jdbc.database.xml hibernate-session-factory.xml data-source.Crearemos los archivos de configuracion de spring que crearan los bean de conexion a la base de datos action bo y dao.xml bo-spring.username=root jdbc. Se crea la carpeta spring dentro de WEB-INF/conf/spring en el se alojaran los archivos action-spring.mysql.properties jdbc.url=jdbc:mysql://localhost:3306/template jdbc.xml .Driver jdbc.xml dao-spring.password=root 26. . factory.5.config.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.springframework.org/schema/beans http://www.springframework.springframework.springframework.properties</value> </property> </bean> <bean id="dataSource" class="org.jdbc.xsd"> <bean class="org.xml <beans xmlns="http://www.springframework.data-source.datasource.w3.url}" /> .PropertyPlaceholderConfigurer"> <property name="location"> <value>WEB-INF/conf/database/properties/database.beans.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.driverClassName}" /> <property name="url" value="${jdbc.org/schema/beans" xmlns:xsi="http://www.org/schema/beans/spring-beans-2. 5.springframework.springframework.dao.org/schema/beans" xmlns:xsi="http://www.impl.org/schema/beans/spring-beans-2.frontend.springframework.<property name="username" value="${jdbc.org/schema/beans/spring-beans-2.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans http://www.username}" /> <property name="password" value="${jdbc.xml <?xml version="1.dialect">org.org/schema/beans http://www.org/schema/beans" xmlns:xsi="http://www.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xml <?xml version="1.hibernate.springframework.password}" /> </bean> </beans> hibernate-session-factory.hibernate3.xsd"> <bean id="usuarioDAO" class="com.MySQLDialect</prop> <prop key="hibernate.5.springframework.w3.orm.xml</value> </list> </property> </bean> </beans> dao-spring.springframework.UsuarioDAOImpl" > <property name="sessionFactory" ref="sessionFactory" /> </bean> </beans> .dialect.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"/> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="mappingResources"> <list> <value>hibernate/Usuario.Hibernate session factory --> <bean id="sessionFactory" class="org.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.0" encoding="UTF-8"?> <beans xmlns="http://www.hbm.xsd"> <!-.template.w3. template.UsuarioAction"> <property name="usuarioBO" ref="usuarioBO" /> </bean> </beans> 27.org/schema/beans" xmlns:xsi="http://www.0" encoding="UTF-8"?> <beans xmlns="http://www.xsd"> <bean id="usuarioAction" class="com.template.springframework.org/schema/beans/spring-beans-2.xml <?xml version="1.bo-spring.impl.UsuarioBOImpl" > <property name="usuarioDAO" ref="usuarioDAO" /> </bean> </beans> action-spring.frontend.springframework.org/schema/beans" xmlns:xsi="http://www.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.frontend.xsd"> <bean id="usuarioBO" class="com.org/schema/beans http://www.springframework.org/schema/beans http://www.bo. debe esta dentro de WEB-INF .w3.0" encoding="UTF-8"?> <beans xmlns="http://www.action.springframework.org/schema/beans/spring-beans-2.Creamos el archivo de contexto de spring applicationContext.5.w3.xml que levantara todos los archivos xml creados con anterioridad.xml <?xml version="1.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.springframework.5. xml"/> <!-.applicationContext.xml"/> <!-.xml <beans xmlns="http://www.Beans Action Declaration --> <import resource="conf/spring/action-spring.w3.springframework.org/schema/beans http://www.xml"/> <import resource="conf/spring/hibernate-session-factory.Database Configuration --> <import resource="conf/spring/data-source.xml"/> <!-.org/schema/beans" xmlns:xsi="http://www.springframework.5.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xsd"> <!-.org/schema/beans/spring-beans-2.xml"/> </beans> .Beans DAO Declaration --> <import resource="conf/spring/dao-spring.springframework.Beans BO Declaration --> <import resource="conf/spring/bo-spring. web.28.Servlet de struts2 --> <filter> <filter-name>struts2</filter-name> <filter-class> org. para ellos sobre el sevidor hacemos boton derecho del mouse Add and Remove.apache.sun.struts2. y seleccionamos el proyecto template-frontend .ContextLoaderListener </listener-class> </listener> </web-app> 29.Agregar el proyecto dinamico al servidor. en este caso tenemos configurado un servidor jboss 4.springframework.Por ultimo vamos a configurar el servlet de struts y el contecxto de spring dentro del archivo web.filter.ng.dtd" > <web-app> <display-name>Template Struts 2 Web Application</display-name> <!-.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-. Inc.Contexto de spring --> <listener> <listener-class> org.xml <!DOCTYPE web-app PUBLIC "-//Sun Microsystems.//DTD Web Application 2.pero tambien se puede probar el proyecto en otro servidor como el tomcat.dispatcher.2..3//EN" "http://java.com/dtd/web-app_2_3.context. 30. y accedemos a la aplicacion para ingresar los datos al fomularios a la siguiente url http://localhost:8082/template-frontend/Usuario/Login.Corremos el servidor y se desplegara en el la carpeta deploy del server el templatefrontend.war.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 .
Copyright © 2024 DOKUMEN.SITE Inc.