8. Estructura y despliegue de aplicaciones web
Hasta ahora hemos preparado el servidor y hemos puesto en funcionamiento Tomcat. El siguiente paso es comprender qué contiene una aplicación web Java y cómo podemos desplegarla para que Tomcat la ejecute.
En Tomcat una aplicación puede desplegarse como una carpeta con la estructura adecuada o empaquetada en un archivo WAR.
Una aplicación web puede contener páginas, hojas de estilo, JavaScript, imágenes, clases Java, librerías y archivos de configuración.
Para que Tomcat pueda reconocerla correctamente, estos recursos deben seguir una estructura determinada.
8.1. Estructura de una aplicación web Java
Una aplicación web Java dispone de un directorio raíz que representa la propia aplicación. Dentro de él podemos encontrar recursos públicos y una zona especial denominada WEB-INF.
Una estructura simplificada podría ser:
miapp/
├── index.html
├── css/
│ └── estilos.css
├── js/
│ └── app.js
├── img/
│ └── logo.png
└── WEB-INF/
├── classes/
├── lib/
└── web.xml
Recursos públicos
Los archivos situados en la raíz de la aplicación o en carpetas como css, js o img pueden ser entregados directamente al cliente mediante una URL.
Por ejemplo:
miapp/index.html
miapp/css/estilos.css
miapp/img/logo.png
El directorio WEB-INF
WEB-INF tiene un significado especial dentro de una aplicación web Java. Sus recursos no se sirven directamente al navegador.
Dentro de él podemos encontrar:
WEB-INF/classes/. Contiene clases Java compiladas y otros recursos de la aplicación.WEB-INF/lib/. Contiene librerías empaquetadas como archivos JAR.WEB-INF/web.xml. Puede contener el descriptor de despliegue de la aplicación.
También puede existir un directorio META-INF, utilizado para determinados metadatos y configuraciones del paquete.
Si nuestra aplicación utiliza el contexto /miapp, un recurso público podría solicitarse así:
http://IP_DE_DEBIAN:8080/miapp/img/logo.png
Sin embargo, una petición como:
http://IP_DE_DEBIAN:8080/miapp/WEB-INF/web.xml
no debe permitir descargar ese archivo.

8.2. El archivo WAR y el descriptor web.xml
Qué es un archivo WAR
WAR significa Web Application Archive.
Es un archivo que reúne en una sola unidad los recursos necesarios para desplegar una aplicación web Java manteniendo su estructura interna.
Un WAR puede contener:
- Recursos HTML, CSS, JavaScript e imágenes.
- Páginas JSP.
- Clases Java compiladas.
- Servlets.
- Librerías JAR.
- Archivos de configuración.
Por ejemplo:
biblioteca.war
├── index.html
└── WEB-INF/
├── classes/
├── lib/
└── web.xml
El empaquetado facilita el despliegue porque podemos trasladar una aplicación completa mediante un único archivo.
El descriptor de despliegue web.xml
El archivo:
WEB-INF/web.xml
se denomina descriptor de despliegue.
Es un documento XML que puede declarar información sobre la aplicación, como:
- Servlets y sus rutas.
- Filtros.
- Parámetros de inicialización.
- Configuración de sesiones.
- Restricciones de seguridad.
web.xml sigue siendo válido, pero ya no es obligatorio en todas las aplicaciones.
Desde Servlet 3.0 muchos componentes pueden declararse mediante anotaciones, por ejemplo @WebServlet.
En aplicaciones actuales podemos encontrar configuración mediante anotaciones, mediante web.xml o combinando ambos mecanismos.
Tomcat 10 utiliza las APIs Jakarta (jakarta.*).
En documentación antigua encontraremos referencias a Java EE, J2EE o paquetes javax.*. Una aplicación antigua puede necesitar adaptación antes de ejecutarse en Tomcat 10.
8.3. Desplegar una aplicación en Tomcat
Desplegar una aplicación significa instalarla en Tomcat para que el contenedor pueda reconocerla, iniciarla y hacerla accesible mediante una URL.
Tomcat admite:
- Una aplicación en forma de directorio expandido.
- Un archivo
.war.
En nuestra instalación de Debian, el directorio habitual de aplicaciones es:
/var/lib/tomcat10/webapps
El nombre de la aplicación y su contexto
Tomcat asigna a cada aplicación una ruta de contexto (context path).
Si desplegamos:
biblioteca.war
la aplicación utilizará normalmente el contexto:
/biblioteca
y podremos acceder mediante:
http://IP_DE_DEBIAN:8080/biblioteca/
El nombre ROOT tiene un significado especial. Una aplicación denominada ROOT.war representa el contexto raíz:
http://IP_DE_DEBIAN:8080/

Despliegue mediante Tomcat Manager
En el apartado anterior configuramos Tomcat Manager. Esta interfaz permite desplegar aplicaciones desde el navegador.
Accedemos desde la máquina anfitriona a:
http://IP_DE_DEBIAN:8080/manager/html
Nos autenticamos con el usuario que configuramos con el rol manager-gui.
En la sección de despliegue podemos seleccionar y subir un archivo WAR.
Para realizar esta práctica utilizaremos una aplicación web mínima preparada para comprobar el proceso de despliegue. Descargar biblioteca.war
El proceso general es:
- Seleccionar el archivo
.war. - Enviarlo al servidor.
- Comprobar que Tomcat ha reconocido la aplicación.
- Acceder a su ruta de contexto desde el navegador.


Tomcat también puede detectar aplicaciones situadas directamente en su directorio webapps.
Por ejemplo:
/var/lib/tomcat10/webapps/biblioteca.war
Cuando el despliegue automático está habilitado, Tomcat puede reconocer el archivo y poner en marcha la aplicación.
Para nuestras primeras prácticas utilizaremos Tomcat Manager, porque permite observar con claridad qué aplicación hemos desplegado.
En esta unidad nos interesa comprender qué es una aplicación desplegable y cómo ponerla en funcionamiento.
La administración detallada de aplicaciones —detenerlas, recargarlas, retirarlas, actualizar versiones y gestionar su ciclo de vida— se trabajará en la unidad dedicada a la instalación y administración de aplicaciones web en servidores de aplicaciones.
Comprueba que puedes explicar:
- Qué diferencia existe entre los recursos públicos de una aplicación y
WEB-INF. - Para qué sirven
WEB-INF/classesyWEB-INF/lib. - Qué contiene un archivo WAR.
- Qué es el descriptor de despliegue
web.xml. - Qué relación existe entre
biblioteca.war, el contexto/bibliotecay su URL. - Cómo podemos desplegar un WAR mediante Tomcat Manager.
8.4. Para saber más
Si quieres ampliar los conceptos de este apartado, puedes consultar:
- Tomcat 10.1 — guía para desarrollar una primera aplicación web.
- Tomcat Manager — despliegue y administración de aplicaciones.
- Configuración de Context en Tomcat.
- Jakarta Servlet 6.0.
Estos recursos son complementarios y no es necesario estudiarlos en profundidad para seguir la unidad.