Desarrollo y Configuración de Servlets en Java Web

Conceptos fundamentales de los Servlets

Un Servlet es un componente de software basado en Java que amplía las capacidades de un servidor. Aunque pueden responder a cualquier tipo de solicitud, su uso principal es la gestión de peticiones HTTP en aplicaciones web. En términos técnicos, un Servlet es una clase que implementa la interfaz javax.servlet.Servlet, permitiendo generar contenido dinámico y gestionar la lógica de negocio en el lado del servidor de forma independiente a la plataforma.

Configuración del proyecto con Maven

Para construir una aplicación web basada en Servlets, es recomendable utilizar una estructura de proyecto gestionada por Maven. A continuación se presenatn las configuraciones necesarias para los archiovs POM.

Archivo POM Principal (Parenet)

Este archivo gestiona las dependencias globales y la versión de Java utilizada en el proyecto.

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.desarrollo.web</groupId>
    <artifactId>ProyectoBaseWeb</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

Archivo POM del Módulo (WAR)

Define la empaquetación específica para el despliegue web.

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.desarrollo.web</groupId>
        <artifactId>ProyectoBaseWeb</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>modulo-servlet</artifactId>
    <packaging>war</packaging>

    <build>
        <finalName>app-servlet</finalName>
    </build>
</project>

Implementación de la Clase Servlet

La lógica del servidor se define extendiendo la clase HttpServlet. En este ejemplo, sobrescribimos el método doGet para procesar peticiones de lectura.

package com.webapp.servlets;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class DemoServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest solicitud, HttpServletResponse respuesta) 
            throws ServletException, IOException {
        
        // Establecer el tipo de contenido de la respuesta
        respuesta.setContentType("text/html;charset=UTF-8");
        
        PrintWriter out = respuesta.getWriter();
        try {
            System.out.println("Ejecutando proceso doGet en DemoServlet");
            out.println("<h1>Servidor Java Activo</h1>");
            out.println("<p>El Servlet se ha ejecutado correctamente.</p>");
        } finally {
            out.close();
        }
    }

    @Override
    protected void doPost(HttpServletRequest solicitud, HttpServletResponse respuesta) 
            throws ServletException, IOException {
        // Redirigir peticiones POST al método GET para este ejemplo
        doGet(solicitud, respuesta);
    }
}

Configuración del Descriptor de Despliegue (web.xml)

Para que el contenedor de Servlets (como Tomcat) reconozca nuestra clase, debemos registrarla y mapearla a una URL específica en el archivo situado en src/main/webapp/WEB-INF/web.xml.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>miDemoServlet</servlet-name>
        <servlet-class>com.webapp.servlets.DemoServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>miDemoServlet</servlet-name>
        <url-pattern>/demo</url-pattern>
    </servlet-mapping>

</web-app>

Despliegue y Pruebas

Para ejecutar la aplicación, es necesario configurar un servidor como Apache Tomcat. Se recomienda el uso de Tomcat 9 para asegurar la compatibilidad con las librerías javax.servlet, ya que Tomcat 10 utiliza el espacio de nombres jakarta.servlet.

  1. Configure el "Application Context" en su IDE (por ejemplo, /app-servlet).
  2. Inicie el servidor Tomcat.
  3. Acceda mediante el navegador a la dirección: http://localhost:8080/app-servlet/demo.

Si la configuración es correcta, el navegador mostrará el mensaje generado por la clase Java.

Etiquetas: java servlet maven tomcat JavaEE

Publicado el 7-13 18:16