Spring MVC – Mapeo de resolución múltiple

Spring MVC Framework proporciona la característica de View Resolver a través de la cual puede asignar una vista a su vista respectiva y representar el modelo en su navegador. View Resolver elimina el uso de tecnologías de visualización como Velocity y JSP . Hay muchos solucionadores de vista disponibles en InternalResourceViewResolver , XmlViewResolver , ResourceBundleViewResolver , etc. , todos con una forma diferente de manejar la vista. Spring MVC también admite resolutores de vistas múltiples para confiar en otros si uno falla, en caso de resolutores de vistas múltiples, debemos mencionar el orden o la prioridad de esos resolutores de vista con los que queremos que funcionen.

Implementación: aquí crearemos un proyecto Spring MVC simple e implementaremos varios solucionadores de vista para una sola página de vista.

Nota: se requiere Spring MVC como requisito previo

Paso 1: Cree un proyecto maven usando crear un nuevo proyecto, ahora agregue maven-archetype-webapp a su proyecto mientras creamos una aplicación web. 

Paso 2: agregue la identificación del grupo, la identificación del artefacto y haga clic en finalizar.

El proyecto se crearía con un archivo de configuración pom.xml, la estructura de su proyecto se vería así:

El archivo de configuración pom.xml define las dependencias que Maven obtiene y administra para su proyecto. Después de crear el proyecto, nuestro pom.xml se ve así:

Archivo: pom.xml

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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mkyong.common</groupId>
  <artifactId>SpringMVC</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>SpringMVC Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
      
    <!-- Spring framework --> 
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring</artifactId>
        <version>2.5.6</version>
    </dependency>
   
    <!-- Spring MVC framework --> 
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>2.5.6</version>
    </dependency>
      
    <!-- JSTL --> 
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.1.2</version>
    </dependency>
      
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
   
  </dependencies>
  <build>
    <finalName>SpringMVC</finalName>
  </build>
</project>

El archivo web.xml define la asignación con diferentes URL y servlets para gestionar las requests de esas URL. En este archivo de configuración, usamos el detector para el inicio de la aplicación, configuramos el servlet y agregamos un servlet-mapping para mapear la URL.

Archivo: web.xml

XML

<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  
  <display-name>Spring MVC</display-name>
    
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
    
  <servlet>
      <servlet-name>gfg</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
    
  <servlet-mapping>
     <servlet-name>gfg</servlet-name>
    <url-pattern>*.htm</url-pattern>
  </servlet-mapping>
  
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/gfg-servlet.xml</param-value>
  </context-param>
    
</web-app>

El gfg-servlet.xml ubicado en “ /src/main/webapp/WEB-INF/gfg.servlet.xml ” son los archivos donde definimos los beans y el mapeo para nuestro proyecto. Este es el archivo donde hemos definido la vista Resolvers. InternalResolverViewResolver es una subclase de UrlBasedViewResolver que admite InternalResourceView . El XmlViewResolver admite archivos escritos en xml.

Archivo: gfg-servlet.xml

XML

<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-2.5.xsd">
  
    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
    <bean class="com.gfg.controller.WelcomeController" />
  
  <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
          <property name="prefix">
              <value>/WEB-INF/pages/</value>
           </property>
          <property name="suffix">
             <value>.jsp</value>
          </property>
          <property name="order" value="1" />
    </bean>
  
    <bean class="org.springframework.web.servlet.view.XmlViewResolver">
       <property name="location">
           <value>/WEB-INF/spring-views.xml</value>
       </property>
       <property name="order" value="0" />
    </bean>
    
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/welcomePage.htm">welomecontroller</prop>
            </props>
        </property>
    </bean>
      
    <bean id="welcomeController" 
        class="org.springframework.web.servlet.mvc.ParameterizableViewController">
        <property name="viewName" value="welcomepage" />
    </bean>
  
      
</beans>

La página spring-views.xml es la página de vista basada en xml para que la maneje nuestro XmlViewResolver, esta página define el bean para la página de bienvenida.

Archivo: spring-views.xml

XML

<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-2.5.xsd">
  
    <bean id="welcomeRedirect" 
       class="org.springframework.web.servlet.view.RedirectView">
       <property name="url" value="welcomepage.htm" />
    </bean>
      
</beans>

La clase WelcomeController en com.gfg.controller maneja la solicitud de URL entrante y la asigna a la página de vista, aquí usamos ModelAndView y redirigimos a la página de bienvenida.

Archivo: WelcomeController.java

Java

// Java Program to Illustrate WelcomeController Class
  
package com.gfg.controller;
  
// Importing required classes
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
  
// Class
// Extending AbstractController interface
public class WelcomeController extends AbstractController {
  
    @Override
    protected ModelAndView
    handleRequestInternal(HttpServletRequest request,
                          HttpServletResponse response)
        throws Exception
    {
  
        return new ModelAndView("redirect:welcomepage.htm");
    }
}

Paso 3: Después de completar la solicitud, la estructura de su proyecto se vería así:

Ahora es el momento de ejecutar su proyecto en el servidor Tomcat , después de ejecutar el servidor Tomcat, escriba la URL http://localhost:8080/SpringMvcMultipleViewResolver/welcomepage.htm en su navegador favorito.

Publicación traducida automáticamente

Artículo escrito por ashutosh44 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 *