@Controllre
Indica que una clase es un controlador.
@RequestMapping
Define el mapeo de URLs a métodos de cotnrolador.
@RequestParam
Permite vincular parámetros de la solicitud a parámetros del método.
Definición del Objeto de Dominio - Usuario
Clase utilizada para recibir y encapsular datos enviados desde la interfaz.
package com.ejemplo.dominio;
import java.io.Serializable;
// Implementación de la interfaz Serializable
public class Usuario implements Serializable {
// Campos privados
private String nombreUsuario;
private String contrasena;
private String nombreCompleto;
// Constructor público
public Usuario(){
super();
}
// Métodos getter y setter
public String getNombreUsuario() {
return nombreUsuario;
}
public void setNombreUsuario(String nombreUsuario) {
this.nombreUsuario = nombreUsuario;
}
public String getContrasena() {
return contrasena;
}
public void setContrasena(String contrasena) {
this.contrasena = contrasena;
}
public String getNombreCompleto() {
return nombreCompleto;
}
public void setNombreCompleto(String nombreCompleto) {
this.nombreCompleto = nombreCompleto;
}
}
Definición del Controlador - ControladorUsuario
Clase encargada de manejar las diferentes peticiones relacionadas con los usuarios.
package com.ejemplo.controlador;
import com.ejemplo.dominio.Usuario;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.ArrayList;
import java.util.List;
// Anotación @Controller para marcar esta clase como controlador
@Controller
// @RequestMapping a nivel de clase para definir prefijo de URL
@RequestMapping(value = "/usuario")
public class ControladorUsuario {
// Lista estática para almacenar usuarios registrados (simulando base de datos)
private static List<usuario> listaUsuarios;
// Constructor para inicializar la lista
public ControladorUsuario(){
super();
listaUsuarios = new ArrayList<>();
}
// Instancia de logger para registrar eventos
private static final Log logger = LogFactory.getLog(ControladorUsuario.class);
// Método para mostrar el formulario de registro (GET)
@RequestMapping(value = "/registro", method = RequestMethod.GET)
public String mostrarFormularioRegistro(){
logger.info("Método GET de registro invocado");
// Retorna la vista del formulario de registro
return "formularioRegistro";
}
// Método para procesar el registro (POST)
@RequestMapping(value = "/registro", method = RequestMethod.POST)
public String procesarRegistro(
// Vinculación de parámetros de la solicitud
@RequestParam("nombreUsuario") String nombreUsuario,
@RequestParam("contrasena") String contrasena,
@RequestParam("nombreCompleto") String nombreCompleto){
logger.info("Método POST de registro invocado");
// Crear objeto Usuario
Usuario nuevoUsuario = new Usuario();
nuevoUsuario.setNombreUsuario(nombreUsuario);
nuevoUsuario.setContrasena(contrasena);
nuevoUsuario.setNombreCompleto(nombreCompleto);
// Almacenar el usuario (simulación de base de datos)
listaUsuarios.add(nuevoUsuario);
// Redirigir al formulario de inicio de sesión
return "formularioInicioSesion";
}
// Método para procesar el inicio de sesión
@RequestMapping("/inicio")
public String iniciarSesion(
@RequestParam("nombreUsuario") String nombreUsuario,
@RequestParam("contrasena") String contrasena,
Model modelo){
logger.info("Intento de inicio de sesión para: " + nombreUsuario);
// Buscar el usuario en la lista (simulación de consulta a base de datos)
for (Usuario usuario : listaUsuarios){
if (usuario.getNombreUsuario().equals(nombreUsuario)
&& usuario.getContrasena().equals(contrasena)){
// Usuario encontrado, añadir al modelo y redirigir
modelo.addAttribute("usuario", usuario);
return "paginaBienvenida";
}
}
// Credenciales incorrectas, volver al formulario de inicio de sesión
return "formularioInicioSesion";
}
}
</usuario>
formularioRegistro.jsp
Página JSP para el formulario de registro. Los datos se envían mediante POST al endpoint /usuario/registro.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Formulario de Registro</title>
</head>
<body>
<form action="registro" method="post">
<label for="nombreUsuario">Nombre de usuario:</label>
<input type="text" id="nombreUsuario" name="nombreUsuario">
<label for="contrasena">Contraseña:</label>
<input type="password" id="contrasena" name="contrasena">
<label for="nombreCompleto">Nombre completo:</label>
<input type="text" id="nombreCompleto" name="nombreCompleto">
<input type="submit" value="Registrarse">
</form>
</body>
</html>
formularioInicioSesion.jsp
Página JSP para el formulario de inicio de sesión. Los datos se envían mediante POST al endpoint /usuario/inicio.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Formulario de Inicio de Sesión</title>
</head>
<body>
<form action="inicio" method="post">
<label for="nombreUsuario">Nombre de usuario:</label>
<input type="text" id="nombreUsuario" name="nombreUsuario">
<label for="contrasena">Contraseña:</label>
<input type="password" id="contrasena" name="contrasena">
<input type="submit" value="Iniciar Sesión">
</form>
</body>
</html>
paginaBienvenida.jsp
Página de bienvenida que se muestra después de un inicio de sesión exitoso.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Bienvenido</title>
</head>
<body>
<h3>Bienvenido, <strong>${requestScope.usuario.nombreCompleto}</strong>!</h3>
</body>
</html>