Inicio

Mi primer Hello World con Maven

¿Qué es Spring?

Spring es un framework de código abierto para la creación de aplicaciones empresariales Java, que nos permite implementar diferentes tipos de arquitecturas según la necesidad de la aplicación que vayamos a desarrollar. Como framework Spring define desde la estructura hasta el nombre de algunos archivos, así como la forma en la que estos se van a ejecutar para que la aplicación funcione correctamente. Spring es de carácter general y sirve para crear diferentes tipos de aplicaciones y no solo en Java si no también usando Kotlin o Groovy.

¿Qué es Maven?

Maven es una herramienta de softwares que sirven para la gestión y construcción de proyectos java en este sentido estandariza algunas configuraciones y procedimientos de un proyecto java que serán usadas en su ciclo de vida, por ejemplo, Maven se encarga de estructurar las dependencias. Con Maven las dependencias y librerías se descargan automáticamente desde un repositorio llamado Maven central (https://mvnrepository.com/) que está en internet. Otro problema que soluciona Maven es la compilación del proyecto. Maven estructura las dependencias que usa nuestro proyecto de forma ordenada en un archivo llamado pom.xml y usa este archivo para luego compilar todo nuestro proyecto con las dependencias que necesita.

¿Qué es Spring Tool Suite?

Es un entorno de desarrollo o IDE basado en Eclipse para el desarrollo de aplicaciones java usando el framework Spring.

Entonces ahora ya conocemos las tres herramientas básicas Spring como un framework de carácter general, Maven como una herramienta que nos ayudará a gestionar la estructura del proyecto java y eventualmente ayudará en la compilación de nuestro proyecto, y STS como el IDE basado en eclipse que nos proporciona todo el entorno grafico para desarrollar nuestras aplicaciones de manera sencilla y fácil.

Cómo instalar Spring Tool Suite 3.9.9 en Ubuntu

Vamos a instalar STS 3.9.9 en ubuntu, para esto vasta con ingresar a la siguiente página (https://spring.io/tools3/sts/all) y descargar la versión para linux de STS.

Creando nuestro espacio de trabajo en STS

Cuando ingresemos a Sprint Tool Suite nos pedirá ingresar o crear nuestro entorno de trabajo o Workspace. Este es muy importante ya que aquí es donde se almacenarán todos nuestros proyectos.

Creando nuestro primer proyecto Maven

Comenzaremos con la creación de un nuevo proyecto Maven (Maven Project) para este tutorial comenzaremos seleccionado Create a simple project para crear un proyecto simple y saltarnos la parte de configuración de la arquitectura del proyecto Maven, ya hablaremos de ellos en un tutorial más adelante.

Las configuraciones iniciales que escogeremos serán bastante básicas y solo las necesarias para nuestro Hello World. El groupId es el identificador del grupo de nuestro proyecto, es de buena práctica que este identificador sea de la forma com.companyname.project-group. El artifactId es el identificador del proyecto. El nombre que le coloques no debe contener espacios. En la versión nosotros podemos colocar el número que queramos sin embargo por defecto nos coloca 0.0.1-SNAPSHOT que significa que vamos a trabajar en la instantánea 0.0.1 ósea una versión que aún está en desarrollo y que en este instante tiene ese número. Cuando salga a producción ya será tal vez, según sea el caso, la versión 1.0.0. Es importante seleccionar que el tipo de empaquetado de nuestra aplicación será en archivos del tipo war.. A diferencia del empaquetado .jar que es usada para empaquetar múltiples archivos para usarlo como librería, plugin o cualquier otra aplicación Java de propósito general. Las aplicaciones .war son específicamente para crear aplicaciones Web, de ahí su nombre Web Application Resource. En nombre del proyecto colocaremos Hello World y finalizamos el asistente de creación de proyectos Maven.

Corrigiendo el error del pom.xml

Project Object Model(Pom) es un fichero XML de Maven que contiene toda la información a cerca del proyecto, fuentes, test, dependencias, plugins, version, etc.

Este error es causado por qué no tenemos el archivo web.xml dentro de /src/main/webapp/WEB-INF para esto solo es necesario usar el comando Generate Deployment Descriptor Stub el cual generará dicho archivo.

Creando nuestros primeros archivos JSP

Java Server Pages (JSP) es una tecnología que ayuda a los desarrolladores de software a crear páginas web dinámicas basadas en HTML y XML utilizando código Java. Para poder correr estos archivos es necesario un servidor compatible con contenedores servlet como Apache Tomcat.

Ahora pasaremos a crear nuestros primeros archivos en JSP para hacer nuestro Hello world y calcular el promedio de tres números.

Nuestro archivo index.jsp contendrá el siguiente código.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body>
	<h1>Hello World</h1>
	<h1>Average</h1>
	<form action="result.jsp">
	<p>Number 1: <input type="text" name="number1"/> </p>
	<p>Number 2: <input type="text" name="number2"/> </p>
	<p>Number 3: <input type="text" name="number3"/> </p>
	<input type="submit"/>
	</form>
</body>
</html>

Las primeras líneas de código son conocidas como Directivas JSP y sirve para decirle al Web Container o al Servlet Container que se trata de un archivo JSP y que lo ejecute como tal.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

Lo demás es código HTML puro y en este caso estamos creando un pequeño formulario con atributo action donde colocamos el nombre del archivo al que se le pasará las acciones de este formulario al presionar el botón de submit. Estos datos, en este caso números se enviarán con el nombre de variables que se colocó en cada atributo name de la etiqueta input.

El siguiente archivo result.jsp contendrá la lógica que seguirán los datos enviados a este desde a página anterior. Nuestra lógica sacará el promedio de los números enviados y lo imprimirá en la pantalla de la página.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Result</title>
</head>
<body>
	<%
	int number1 = Integer.parseInt(request.getParameter("number1"));
	int number2 = Integer.parseInt(request.getParameter("number2"));
	int number3 = Integer.parseInt(request.getParameter("number3"));
	float average;
	
	average = (number1 + number2 + number3)/(3);
	out.println("The average is: " + average);
	%>
<a href="index.jps"></a>
</body>
</html>

Usando Spring podemos colocar código JAVA dentro de los caracteres <% %> es ahí donde colocaremos la lógica de nuestra aplicación, en este caso calcularemos el promedio de los números que fueron enviados desde la página anterior. Para obtener esos valores usamos request.getParameter("number1") donde number1 es el nombre del parámetro name de la etiqueta input de la página anterior. Todo este código ya es Java puro así que aquí utiliza todos tus conocmientos de Java. Nosotros imprimiremos este resultado en la pantalla usando out.println() Spring ya se encargará de renderizar el resultado y de convertirlo en formato HTML para mostrarlo en la página. Ahi rádica la mágia de Spring, que hace junto a Java una potente herramienta para crear aplicaciones webs.

Corrigiendo error de los archivos JSP

Luego de crear los archivos jsp, obtendremos un error causado por no tener el Java Build Path correctamente instalado. Lo que tenemos que hacer es configurar un entorno en tiempo de ejecución de Java que es el que nos permitirá ejecutar nuestro código Java de las páginas Jsp que creemos. Para esto tenemos que agregar nuestro Runtime de Apache Tomcat 7.0 en nuestro proyecto. Para eso seguimos los siguientes pasos.

Creamos nuestro servidor y ejecutamos nuestra Web

Ahora pasamos a crear el servidor ApacheTomcat 7.0 y luego a ejecutar nuestro programa en dicho servidor. Cuando ejecutemos nuestra web primero comenzará a correr el servidor Apache y solo después comenzará con la ejecución de nuestra web.

¡¡Listo tenemos nuestra primera página usando Maven!!