Repository navigation
Servlet
Servlets son clases Java que extienden las capacidades de los servidores web. Procesan peticiones HTTP y generan respuestas dinámicas. Son el Controlador en el patrón MVC.
Características principales:
- Ejecutan en el servidor web (contenedor de servlets)
- Manejan peticiones HTTP (GET, POST, PUT, DELETE)
- Gestionan el ciclo de vida de las peticiones web
- Actúan como intermediarios entre la vista (JSP) y el modelo (DAO/VO)
@WebServlet("/ruta")
public class MiServlet extends HttpServlet {
// código del servlet
}Elementos clave:
-
@WebServlet("/persona"): Define la URL que atiende el servlet -
extends HttpServlet: Hereda funcionalidades HTTP básicas - Sin
@WebServletnecesitas configurar enweb.xml
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Manejar peticiones GET
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Manejar peticiones POST
}¿Cuándo usar cada uno?
- doGet: Mostrar datos, formularios, navegación
- doPost: Procesar formularios, crear/actualizar/eliminar datos
// Obtener parámetros
String action = request.getParameter("action");
String nombre = request.getParameter("nombre");
int codigo = Integer.parseInt(request.getParameter("codigo"));
// Configurar encoding
request.setCharacterEncoding("UTF-8");
// Manejar atributos
request.setAttribute("personas", listaPersonas);
Object obj = request.getAttribute("persona");
// Información de la app
String contextPath = request.getContextPath();El objeto response permite al servlet controlar la respuesta HTTP que se envía de vuelta al navegador.
response.sendRedirect(request.getContextPath() + "/persona");¿Qué hace exactamente?
- Envía al navegador un código de estado HTTP 302 (redirección temporal)
- El navegador recibe la respuesta y automáticamente hace una nueva petición a la URL especificada
- Es una nueva petición HTTP completa - la URL en el navegador cambia
- Se pierden todos los atributos del request anterior
- Usado en PRG: después de procesar un POST, redirigir a un GET (ver Patrón PRG)
Cuándo usar:
- Después de operaciones POST (crear, actualizar, eliminar)
- Cuando quieres que la URL del navegador cambie
- Para evitar reenvío de formularios
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");¿Para qué sirven?
-
setContentType(): Le dice al navegador qué tipo de contenido está recibiendo -
setCharacterEncoding(): Define la codificación de caracteres (importante para acentos y ñ) - Se configuran antes de escribir contenido en la respuesta
- Generalmente no los usamos mucho porque los JSP los manejan automáticamente
El RequestDispatcher permite transferir el control a otro recurso dentro de la misma aplicación.
request.getRequestDispatcher("/WEB-INF/vista/persona-lista.jsp")
.forward(request, response);¿Qué hace exactamente?
- No envía respuesta al navegador todavía
- Transfiere el control internamente al JSP especificado
- El JSP genera el HTML y lo envía al navegador
- La URL del navegador NO cambia (sigue mostrando la URL del servlet)
- Los atributos del request se mantienen (por eso funcionan los
request.setAttribute()) - Es más rápido que redirect porque no hay nueva petición HTTP
Cuándo usar:
- Para mostrar vistas después de operaciones GET
- Cuando necesitas pasar datos del servlet al JSP
- Cuando NO quieres que cambie la URL del navegador
| Aspecto | Forward | Redirect |
|---|---|---|
| Peticiones HTTP | 1 petición | 2 peticiones |
| URL del navegador | No cambia | Cambia |
| Atributos del request | Se mantienen | Se pierden |
| Velocidad | Más rápido | Más lento |
| Alcance | Solo dentro de la app | Puede ir a cualquier URL |
| Uso típico | Mostrar vistas (GET) | Después de procesar (POST) |
Servlet · HttpServlet · @WebServlet · doGet · doPost · HttpServletRequest · HttpServletResponse · getParameter · setAttribute · forward · sendRedirect · init · service · destroy · ciclo de vida · Controlador MVC
- Introducción a VS Code
- Primeros pasos en VS Code
- Preparación del entorno Java Web
- ☁️ Cómo usar GitHub Codespace
Tema 1: Manejo básico de Java Web
- Introducción a Maven
- Ciclo de una petición web
- JSP con Scriptlets
- ¿Qué es un archivo JSP?
- Comparativa JSP Scriptlets vs ELJSTL
- ¿Qué es un Servlet?
- Mi primer formulario con Servlet
- HTTP Sessions
Tema 2: Modelo Vista Controlador (MVC)
- ¿Qué es el MVC?
-
Ejemplo básico MVC (MINI-CRUD)
- VISTA-index
- VISTA- Agregar Persona
- VISTA- Listar Personas
- CONTROLADOR- PersonaControladorServlet
- MODELO- DAO/VO
- CONTROLADOR- PersonaControladorServlet2
- VISTA- Editar Persona
- VISTA- Listar Persona
- Validación de unicidad de código
- Validación de campos obligatorios
- Comparativa persona-form.jsp
- Comparativa JSP puro vs MVC
Tema 3: Conexión a Base de Datos
Tema 4: Base de Datos con herencia
