Implementación de Registro e Inicio de Sesión con Spring MVC y Anotaciones

@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>

Etiquetas: Spring MVC anotaciones Registro inicio de sesión java

Publicado el 7-21 15:07