Introducción a Spring Web MVC y Configuración con XML y Anotaciones

Spring Web MVC es un marco de trabajo que simplifica el desarrollo de aplicaciones web basadas en la arquitectura MVC. Es una parte integral del framework Spring.

Cinco Componentes Principales

  • DispatcherServlet: Actúa como el controlador frontal.
  • HandleMapping: Mapea solicitudes a controladores específicos.
  • Controller: Maneja la lógica de negocio.
  • ModelAndView: Encapsula el resultado del procesamiento.
  • ViewResolver: Resuelve la vista correspondiente al resultado del procesamiento.

Flujo de Operación:

  1. El DispatcherServlet recibe una solicitud y utiliza HandleMapping para determinar qué controlador manejará la soilcitud.
  2. El controlador procesa la solicitud y devuelve un objeto ModelAndView al DispatcherServlet.
  3. El DispatcherServlet utiliza ViewResolver para determinar qué vista mostrará el resultado.

Pasos para Implementación

  1. Incluir las dependencias necesarias.
  2. Añadir un archivo de configuración de Spring.
  3. Configurar el DispatcherServlet.
  4. Escribir los controladores.
  5. Crear las vistas en formato JSP.

Ejemplo Práctico

src/main/java/controladores/

package controladores;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SaludoControlador implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        System.out.println("handleRequest()");
        return new ModelAndView("saludo");
    }
}

src/main/resources/spring-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/saludo.do">saludoControlador</prop>
            </props>
        </property>
    </bean>
    <bean id="saludoControlador" class="controladores.SaludoControlador"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/vistas/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

src/main/webapp/WEB-INF/vistas/saludo.jsp

<h1>¡Hola, Spring MVC!</h1>

src/main/webapp/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
         version="3.1">
    <servlet>
        <servlet-name>accion</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>accion</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

pom.xml

<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.ejemplo.spring</groupId>
    <artifactId>springmvc-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.2.8.RELEASE</version>
        </dependency>
    </dependencies>
</project>

Etiquetas: Spring WebMVC XML java

Publicado el 9-6 23:10