Spring MVC con vista JSP

La arquitectura Spring MVC utiliza el patrón de diseño «FrontController», que es fundamental para cualquier implementación de diseño MVC. El DispatcherServlet está en el corazón de este diseño mediante el cual las requests HTTP se delegan al controlador, las vistas se resuelven en la tecnología de vista subyacente, además de brindar soporte para cargar archivos. DispatcherServlet, como cualquier servlet normal, se puede configurar junto con asignaciones de controladores personalizadas.

El marco Spring MVC permite la separación de módulos, a saber, Modelo, Vista y Control, y maneja sin problemas la integración de la aplicación. Esto permite al desarrollador crear aplicaciones complejas que también utilizan clases Java sencillas. El objeto modelo se puede pasar entre la vista y el controlador mediante Maps. Además, se proporciona validación de tipos no coincidentes y soporte de enlace de datos bidireccional en la interfaz de usuario. Es posible enviar fácilmente formularios y vincular datos en la interfaz de usuario con etiquetas de formularios de resorte, objetos modelo y anotaciones.

El artículo analiza los pasos necesarios para desarrollar una aplicación web MVC de Spring y explica la configuración inicial del proyecto para una aplicación MVC en Spring. JSP (Java Server Pages) se utiliza como tecnología de visualización.

Las siguientes son las dependencias para Spring web MVC. Si bien Spring-Web MVC jar sería suficiente para todos los requisitos de contenedores para desarrollar la aplicación MVC, JSTL-jar se incluye para JSP:
Dependencias dentro de pom.xml

<dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>4.3.7</version>
            </dependency>
             <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency> 
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
            </dependency>

El DispatcherServlet se configuraría en web.xml de la siguiente manera. La clase de escucha ContextLoaderListener cargaría el contexto de la aplicación raíz y transferiría el identificador al servlet despachador mencionado en el elemento de mapeo de servlet. Todas las requests correspondientes a la asignación de URL ‘/’ serían manejadas por este servlet de despachador.
web.xml

<web-app>
  <display-name>SampleMVC</display-name>
  <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener
  </listener-class>
  </listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>
    
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
  
    <servlet-mapping>
       <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  
      <welcome-file-list>
      <welcome-file>
      /index.html
      </welcome-file>
      </welcome-file-list>

El WebApplicationContext relacionado para un servlet de despachador se puede encontrar en la ubicación predeterminada ‘servletName’-servlet.xml mediante context-param contextConfigLocation . El WebApplicationContext contiene las configuraciones específicas de MVC, incluidos los solucionadores de vistas, fuentes de datos, fuentes de mensajes, solucionadores de varias partes (carga de archivos), etc.

WEB-INF/mvc-despachador-servlet.xml

          
        <context:component-scan base-package="com.springsamples*"/>
      <mvc:annotation-driven/>    
  <!--  this will render home page from index.html-->    
      <mvc:default-servlet-handler/>
      
          
     <bean id = "viewProvider" 
class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name = "prefix" value = "/"/>
        <property name = "suffix" value = ".jsp"/>
           
        </bean>   

En el XML anterior, el elemento componente-escaneo con espacio de nombres de contexto escaneará todas las clases de componentes en busca de anotaciones ( @Component, @Configuration, @Service, @Repository, @Autowired ) en los paquetes base y también inicializará los beans. El elemento controlado por anotaciones dentro del espacio de nombres MVC escaneará e inicializará los componentes anotados de @Controller .
El elemento default-servlet-handler, dentro del espacio de nombres MVC, extiende el servlet de despachador HTTP predeterminado para atender también las requests de recursos estáticos ubicados en la raíz web.

También hemos inicializado un bean con id ‘viewProvider’ para renderizar páginas .jsp. La clase InternalResourceViewResolver aceptaría los parámetros de prefijo y sufijo para construir la ruta para ver la página. Por ejemplo, si la clase del controlador devolvió una vista llamada ‘saludar’, la clase de resolución de vista identificaría la ruta relativa a la raíz web como «/saludar.jsp» agregando las strings de sufijo y prefijo dadas.

Finalmente, el archivo .jsp que será la vista. Estamos enviando un atributo de la clase de controlador a la vista que se mostrará al acceder a la URL correspondiente.

saludo.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-// W3C// DTD HTML 4.01 
 Transitional// EN" "http:// www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
 charset=ISO-8859-1">
<title>Start Spring MVC</title>
</head>
<body>
<h1>Start here</h1>
${greeting}
</body>
</html>

El código de clase del controlador de la siguiente manera.

@GetMapping(value = "/")
public ModelAndView firstView()
{
    ModelAndView mav = new ModelAndView("greet"); 
   // must match the jsp page name which is being requested.
    mav.addObject("greeting", "GeeksForGeeks Welcomes you to Spring!");
    return mav;
}

Consulte la vista a continuación que muestra el valor de «saludo» de la string proporcionado en el controlador.

Publicación traducida automáticamente

Artículo escrito por deepakanduri y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *