Spring @RequestMapping Anotación con ejemplo

Una de las anotaciones más importantes en primavera es la anotación @RequestMapping que se usa para asignar requests HTTP a métodos de manejo de controladores MVC y REST. En las aplicaciones Spring MVC, DispatcherServlet (controlador frontal) es responsable de enrutar las requests HTTP entrantes a los métodos de manejo de los controladores. Al configurar Spring MVC, debe especificar las asignaciones entre las requests y los métodos del controlador. Para configurar el mapeo de requests web, usamos el @RequestMappinganotación. La anotación @RequestMapping se puede aplicar al nivel de clase y/o al nivel de método en un controlador. La anotación de nivel de clase asigna una ruta o patrón de solicitud específica a un controlador. A continuación, puede aplicar anotaciones adicionales a nivel de método para que las asignaciones sean más específicas para los métodos de controlador. Entonces, comprendamos la anotación @RequestMapping a nivel de método y de clase con ejemplos. 

Requisitos: 

  • Eclipse (versión EE)/STS IDE
  • Archivos JAR de primavera
  • Tomcat Apache última versión

@RequestMapping Anotación a nivel de método

Configuración del proyecto

Nota : Vamos a utilizar Spring Tool Suite 4 IDE para este proyecto. Consulte este artículo para instalar STS en su máquina local ¿Cómo descargar e instalar Spring Tool Suite (Spring Tools 4 para Eclipse) IDE? 

Paso 1: cree un proyecto web dinámico en su STS IDE. Puede consultar este artículo para crear un proyecto web dinámico en STS: ¿Cómo crear un proyecto web dinámico en Spring Tool Suite?

Paso 2: descargue el archivo Spring JAR desde este enlace y vaya a la carpeta src> main> webapp> WEB-INF> lib y pase estos archivos JAR.

Paso 3: Consulte este artículo Configuración del servidor Apache Tomcat y configure el servidor Tomcat con su aplicación. 

Ahora estamos listos para ir.

Configuración del servlet de despachador

Se sugiere pasar por Dispatcher Servlet en Spring , ya que sirve como requisito previo para comprender este tema. Ahora vamos a configurar Dispatcher Servlet con nuestra aplicación Spring MVC. 

Paso 4: vaya al archivo src> main> webapp> WEB-INF> web.xml y el código completo para el archivo web.xml se proporciona a continuación:

A. Archivo: web.xml 

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_4_0.xsd" id="WebApp_ID" version="4.0">
   
  <display-name>myfirst-mvc-project</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    <welcome-file>default.htm</welcome-file>
  </welcome-file-list>
   
  <absolute-ordering/>
   
  <servlet>
      <!-- Provide a Servlet Name -->
    <servlet-name>frontcontroller-dispatcher</servlet-name>
    <!-- Provide a fully qualified path to the DispatcherServlet class -->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
   
  <servlet-mapping>
      <!-- Provide a Servlet Name that you want to map -->
    <servlet-name>frontcontroller-dispatcher</servlet-name>
    <!-- Provide a url pattern -->
    <url-pattern>/student.com/*</url-pattern>
  </servlet-mapping>
   
</web-app>

Paso 5: Ahora ve a   src > main > webapp > WEB-INF  y crea un archivo XML. En realidad, este es un archivo de configuración de Spring como el archivo beans.xml. Y el nombre del archivo debe estar en este formato.

YourServletName-servlet.xml  

Por ejemplo, para este proyecto, el nombre del archivo debe ser

frontcontroller-dispatcher-servlet.xml

Entonces, puede crear un archivo de configuración de Spring o simplemente puede crear un archivo XML simple y agregar las siguientes líneas de código dentro de ese archivo. Entonces, el código para frontcontroller-dispatcher-servlet.xml se proporciona a continuación. 

B. Archivo: frontcontroller-dispatcher-servlet.xml

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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
   
  <context:component-scan base-package="com.student.controllers"></context:component-scan>
 
</beans>

Cree sus clases de controlador

Paso 6: Ahora, creemos algunos controladores. Vaya a src/main/java y cree un nuevo paquete de controladores (por ejemplo, com.student.controllers) según su elección. Y dentro de eso, cree una clase Java y nombre la clase como DemoController. Ahora, cómo decirle a Spring que esta es nuestra clase de controlador. Entonces, la forma en que vamos a decirle a Spring es marcándolo con una anotación @Controller .

@Controller
public class DemoController {}

Nota: Spring inicializará automáticamente la clase que tenga una anotación @Controller y registrará esa clase con el contenedor Spring.

Ahora vamos a crear un método simple dentro de la clase Controller y usar la anotación @RequestMapping antes del método, algo como esto.

// Annotation
@RequestMapping("/hello")

// Method  
public String helloWorld() 
{
    return "Hello World!";
}

Este es el ejemplo de la anotación @RequestMapping a nivel de método. 

Ahora entendamos la anotación. @RequestMapping(“/hola”), entonces, ¿qué significa? Esta línea significa que, en la URL, si alguien accede a student.com/hello , este método en particular se ejecutará y realizará la operación que está escrita dentro de ese método en particular.

C. Archivo: DemoController.java

Java

package com.student.controllers;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
@Controller
public class DemoController {
     
    @ResponseBody
    @RequestMapping("/hello")
    public String helloWorld() {
        return "Hello World!";
    }
 
}

Ejecute el controlador Spring MVC

Paso 7: para ejecutar su aplicación Spring MVC , haga clic con el botón derecho en su proyecto> Ejecutar como> Ejecutar en el servidor y ejecute su aplicación como se muestra en la imagen a continuación. 

Después de eso, use la siguiente URL para ejecutar su controlador como se muestra en la imagen a continuación. Todos los demás detalles se mencionan en la imagen. 

http://localhost:8080/myfirst-mvc-project/student.com/hello

@RequestMapping Anotación a nivel de clase

Implementación:

La anotación @RequestMapping de nivel de clase asigna una ruta o patrón de solicitud específica a un controlador. A continuación, puede aplicar anotaciones adicionales a nivel de método para que las asignaciones sean más específicas para los métodos de controlador. Entendamos esta línea por un proyecto de ejemplo. Los pasos de » Configuración del proyecto » y » Configuración del servlet de despachador » son los mismos. Simplemente haga cambios en » Crear sus clases de controlador » y » Ejecutar su controlador Spring MVC «.

Cree sus clases de controlador

Entonces, en este ejemplo, vamos a crear un controlador de acción múltiple . MultiActionController es una implementación de controlador que permite que la misma clase maneje varios tipos de requests. Eso significa que dentro de una clase de controlador podemos tener muchos métodos de manejo como este.

Archivo: DemoController.java 

Java

package com.student.controllers;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
@Controller
public class DemoController {
     
    @ResponseBody
    @RequestMapping("/hello")
    public String helloWorld() {
        return "Hello World!";
    }
     
    @ResponseBody
    @RequestMapping("/geeksforgeeks")
    public String welcomeGfgMessage() {
        return "Welcome to GeeksforGeeks";
    }
 
}

Ahora usemos la anotación @RequestMapping a nivel de clase antes del DemoController, algo como esto. Así que nuestro archivo DemoController.java modificado se muestra a continuación

Archivo: DemoController.java

Java

// Java Program to Illustrate DemoController Class
 
package com.student.controllers;
 
// Importing required classes
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
// Annotations
@Controller
@RequestMapping("/boys")
// Class
public class DemoController {
 
    @ResponseBody
    @RequestMapping("/hello")
 
    // Method
    public String helloWorld()
    {
        return "Hello World!";
    }
 
    // Annotation
    @ResponseBody
    @RequestMapping("/geeksforgeeks")
 
    // Method
    public String welcomeGfgMessage()
    {
        return "Welcome to GeeksforGeeks";
    }
}

Sí, podemos hacer eso también. Pero necesitamos cambiar nuestra URL para ejecutar estas requests. 

Ejecute su controlador Spring MVC

Para ejecutar su aplicación Spring MVC , haga clic con el botón derecho en su proyecto> Ejecutar como> Ejecutar en el servidor y ejecute su aplicación como se muestra en la imagen a continuación. 

Run Your Spring MVC Controller

Y ahora, si usa esta URL » http://localhost:8080/myfirst-mvc-project/student.com/hello » para ejecutar su controlador, recibirá la siguiente advertencia y no habrá respuesta

WARNING: No mapping for GET /myfirst-mvc-project/student.com/hello

Para ejecutar su controlador, debe presionar la siguiente URL

http://localhost:8080/myfirst-mvc-project/student.com/boys/hello

Del mismo modo, para el método del controlador welcomeGfgMessage(), debe presionar la siguiente URL

http://localhost:8080/myfirst-mvc-project/student.com/boys/geeksforgeeks

Publicación traducida automáticamente

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