Bienvenido a re-orientation! Esperamos que encuentres lo que buscas

Creación del proyecto web con Maven y configuraciones básicas


Parte del manual paso a paso para desarrollar una aplicación web con Spring Framework + Spring Security contra una base de datos MySQL.

Una vez creadas las tablas MySQL e insertados los datos contra los que se realizará la autenticación de los usuarios, vamos a crear el proyecto web.

Para implementar nuestra funcionalidad partiremos de un entorno de desarrollo j2ee operativo. No entraremos en detalles de instalación y configuración de entorno de trabajo, ya que en la red hay manuales de calidad sobre el tema.

El entorno de pruebas usado para la elaboración este tutorial es el siguiente:

  • Apache-tomcat 6.0.37
  • MySQL 5.6.15
  • JDK 1.7.0_51
  • IDE: Eclipse Platform 3.8.2

Necesitaremos además instalar los siguientes plugins sobre nuestra plataforma eclipse:

  • M2E - Maven Integration for Eclipse
  • WTP - Eclipse Web Tools Platform

Creación del Proyecto Web con Eclipse

Para administrar y gestionar el proyecto utilizaremos Maven, así que el primer paso es crear desde el menú file de eclipse un nuevo proyecto de tipo Maven Project. En el asistente de creación del proyecto, indicamos la ruta del workspace que vamos a usar y seleccionamos una plantilla del catálogo disponible de Maven (arquertipo), en nuestro caso será: maven-archetype-webapp.

Al seleccionar este arquetipo, el proyecto se creará con la estructura y configuraciones básicas para el tipo de aplicación que vamos a programar, en nuestro caso una aplicación web.

En el ejemplo, app01 será nuestro identificador de proyecto; desde el asistente también elegimos el nombre de dominio de alto nivel para el paquetage siguiendo la convención.

Una vez creado el proyecto, la estructura que se creará en eclipse tendrá un aspecto similar a éste:

Estructura de proyecto web eclipse

En el fichero pom.xml (Proyect Object Model) está la definición por defecto de nuestro proyecto, así que el siguiente paso es introducir en este fichero las dependencias que vamos a utilizar.

La lista de librerías que vamos a utilizar es la siguiente:

  Spring Version: 3.2.2.RELEASE
  Spring Security: 3.1.3.RELEASE
  Logger (log4j): 1.2.17
  Java EE / Java SE dependencies; 
      jstl: 1.2
      jsp: 2.1 
      Servlet: 2.5
  Commons DBCP: 1.4 
  Commons Lang: 3.1 
  JUnit: 3.8.1 

Al salvar el fichero pom.xml, automáticamente Maven descargará las librerías indicadas desde el repositorio remoto a nuestro repositorio local. El fichero pom.xml integro se puede descargar desde aquí.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  
  
  <modelVersion>4.0.0</modelVersion>
  <groupId>reor</groupId>
  <artifactId>app01</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>app01 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  <properties>
  	<!-- Spring -->
	<spring.version>3.2.2.RELEASE</spring.version>
	<!-- Spring security -->
	<spring-security.version>3.1.3.RELEASE</spring-security.version>
	<!-- Logger -->
	<log4j.version>1.2.17</log4j.version>
	<!--  Java EE / Java SE dependencies -->
	<jstl.version>1.2</jstl.version>
	<servlet.version>2.5</servlet.version>
    <jsp.version>2.1</jsp.version>
    <!-- Commons DBCP -->
    <commons-dbcp.version>1.4</commons-dbcp.version>
    <!-- Commons Lang -->
    <commons-lang.version>3.1</commons-lang.version>
    <!-- JUnit -->
    <junit.version>3.8.1</junit.version>
  </properties>  
  
  <dependencies>
  
  	<!-- JUnit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    
    <!-- Spring -->    
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-webmvc</artifactId>
    	<version>${spring.version}</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-context</artifactId>
    	<version>${spring.version}</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-jdbc</artifactId>
    	<version>${spring.version}</version>
    </dependency>
    
    <!-- Commons DBCP -->
    <dependency>
    	<groupId>commons-dbcp</groupId>
    	<artifactId>commons-dbcp</artifactId>
    	<version>${commons-dbcp.version}</version>
    </dependency>
	
	<!-- Java EE / Java SE dependencies -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jstl</artifactId>
		<version>${jstl.version}</version>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>servlet-api</artifactId>
		<version>${servlet.version}</version>
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>javax.servlet.jsp</groupId>
		<artifactId>jsp-api</artifactId>
		<version>${jsp.version}</version>
		<scope>provided</scope>
	</dependency>
	
	
	<!-- Spring security -->
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-core</artifactId>
		<version>${spring-security.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-config</artifactId>
		<version>${spring-security.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-web</artifactId>
		<version>${spring-security.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-taglibs</artifactId>
		<version>${spring-security.version}</version>
	</dependency>
	
	<!-- Commons Lang -->
	<dependency>
		<groupId>org.apache.commons</groupId>
		<artifactId>commons-lang3</artifactId>
		<version>${commons-lang.version}</version>
	</dependency>
	
	<!-- Logger -->
	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>${log4j.version}</version>
	</dependency>
    
  </dependencies>

  <build>
    <finalName>app01</finalName>
  </build>
</project>

En el siguiente post configuraremos los frameworks que hemos especificados.

Terminos Tecnología: