📜  Spring @RequestMapping 注解与示例

📅  最后修改于: 2022-05-13 01:55:17.095000             🧑  作者: Mango

Spring @RequestMapping 注解与示例

Spring 中最重要的注解之一是@RequestMapping注解,它用于将 HTTP 请求映射到 MVC 和 REST 控制器的处理程序方法。在 Spring MVC 应用程序中,DispatcherServlet(前端控制器)负责将传入的 HTTP 请求路由到控制器的处理程序方法。在配置 Spring MVC 时,需要指定请求和处理程序方法之间的映射。要配置 Web 请求的映射,我们使用@RequestMapping注解。 @RequestMapping 注解可以应用于控制器中的类级别和/或方法级别。类级注释将特定的请求路径或模式映射到控制器上。然后,您可以应用其他方法级别的注释来使映射更具体到处理程序方法。那么让我们通过例子来了解方法级别和类级别的@RequestMapping注解。

方法级别的@RequestMapping 注解

设置项目

第 1 步:在您的 STS IDE 中创建一个动态 Web 项目。您可以参考这篇文章在 STS中创建动态 Web 项目:如何在 Spring Tool Suite 中创建动态 Web 项目?

第 2 步:从此链接下载 spring JAR 文件,然后转到src > main > webapp > WEB-INF > lib文件夹并通过这些 JAR 文件。

第 3 步:请参阅本文配置 Apache Tomcat 服务器并使用您的应用程序配置 Tomcat 服务器。

配置 Dispatcher Servlet

建议通过Spring 中的 Dispatcher Servlet,因为它是掌握该主题的先决条件。现在我们将使用我们的 Spring MVC 应用程序配置 Dispatcher Servlet。

第 4 步:转到src > main > webapp > WEB-INF > web.xml文件, web.xml文件的完整代码如下所示:

A. 文件:web.xml

XML


   
  myfirst-mvc-project
  
    index.html
    index.jsp
    index.htm
    default.html
    default.jsp
    default.htm
  
   
  
   
  
      
    frontcontroller-dispatcher
    
    org.springframework.web.servlet.DispatcherServlet
    1
  
   
  
      
    frontcontroller-dispatcher
    
    /student.com/*
  
   


XML


   
  
 


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!";
    }
 
}


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";
    }
 
}


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";
    }
}



第 5 步:现在转到src > main > webapp > WEB-INF并创建一个 XML 文件。实际上,这是一个 Spring 配置文件,如 beans.xml 文件。并且文件名必须是这种格式

YourServletName-servlet.xml  

例如,对于这个项目,文件的名称必须是

frontcontroller-dispatcher-servlet.xml

因此,您可以创建一个 Spring 配置文件,也可以只创建一个简单的 XML 文件,在该文件中添加以下代码行。所以下面给出了frontcontroller-dispatcher-servlet.xml的代码。

B. 文件:frontcontroller-dispatcher-servlet.xml

XML



   
  
 


创建你的控制器类

第 6 步:现在,让我们创建一些控制器。转到 src/main/ Java并根据您的选择创建一个新的控制器包(例如 com.student.controllers)。并在其中创建一个Java类并将该类命名为 DemoController。现在如何告诉 Spring 这是我们的控制器类。所以我们要告诉 Spring 的方法是用 @Controller 注释标记它。

@Controller
public class DemoController {}

现在让我们在 Controller 类中创建一个简单的方法,并在方法之前使用 @RequestMapping 注释,如下所示。

// Annotation
@RequestMapping("/hello")

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

所以这是方法级别的@RequestMapping 注解的例子。

现在让我们了解注释。 @RequestMapping(“/hello”),那是什么意思呢?这行意味着,在 URL 中,如果有人点击student.com/hello ,那么这个特定的方法将被执行,并且它将执行在该特定方法中写入的操作。

C. 文件: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!";
    }
 
}

运行 Spring MVC 控制器

第 7 步:要运行您的 Spring MVC 应用程序,请右键单击您的项目 > 运行方式 > 在服务器上运行并运行您的应用程序,如下图所示。

之后使用以下 URL 运行您的控制器,如下图所示。图片中提到了所有其他细节。

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

类级别的@RequestMapping 注解

执行:

类级别的@RequestMapping 注解将特定的请求路径或模式映射到控制器上。然后,您可以应用其他方法级别的注释来使映射更具体到处理程序方法。让我们通过一个示例项目来理解这一行。 “设置项目”和“配置 Dispatcher Servlet ”步骤相同。只需在“创建您的控制器类”和“运行您的 Spring MVC 控制器”中进行更改。

创建你的控制器类

所以在这个例子中,我们将创建Multi-Action Controller 。 MultiActionController 是一个 Controller 实现,它允许同一个类处理多个请求类型。这意味着在一个控制器类中,我们可以有许多类似这样的处理程序方法。

文件:演示控制器。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";
    }
 
}


现在让我们在类级别使用 @RequestMapping 注释,这意味着在 DemoController 之前是这样的。所以我们修改了DemoController。 Java文件在下面给出

文件:演示控制器。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";
    }
}


是的,我们也可以这样做。但是我们需要更改我们的 URL 才能运行这些请求。

运行你的 Spring MVC 控制器

要运行您的 Spring MVC 应用程序,请右键单击您的项目 > 运行方式 > 在服务器上运行并运行您的应用程序,如下图所示。

运行你的 Spring MVC 控制器

现在,如果你使用这个“ http://localhost:8080/myfirst-mvc-project/student.com/hello ” URL 来运行你的控制器,那么你将收到以下警告并且没有响应

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

为了运行您的控制器,您必须点击以下 URL

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

同样,对于 welcomeGfgMessage() 处理程序方法,您必须点击以下 URL

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