Spring MVC @Controller和@RequestMapping注解

这篇具有很好参考价值的文章主要介绍了Spring MVC @Controller和@RequestMapping注解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

@Controller 注解

@Controller 注解可以将一个普通的 Java 类标识成控制器(Controller)类,示例代码如下。

package net.biancheng.controller;
import org.springframework.stereotype.Controller;
@Controller
public class IndexController {
    // 处理请求的方法
}

Spring MVC 是通过组件扫描机制查找应用中的控制器类的,为了保证控制器能够被 Spring MVC 扫描到,我们还需要在 Spring MVC 的配置文件中使用 <context:component-scan/> 标签,指定控制器类的基本包(请确保所有控制器类都在基本包及其子包下),示例代码如下

<!-- 使用扫描机制扫描控制器类,控制器类都在net.biancheng.controller包及其子包下 -->
<context:component-scan base-package="net.biancheng.controller" />

@RequestMapping 注解

@RequestMapping 注解是 Spring MVC 中最常被用到的注解之一。它通常被标注在控制器方法上,负责将请求与处理请求的控制器方法关联起来,建立映射关系。

Spring MVC 的前端控制器(DispatcherServlet)拦截到用户发来的请求后,会通过 @RequestMapping 注解提供的映射信息找到对应的控制器方法,对这个请求进行处理。

@RequestMapping 注解的使用方式

@RequestMapping 既可以标注在控制器类上,也可以标注在控制器方法上。

1. 修饰方法

当 @RequestMapping  注解被标注在方法上时,value 属性值就表示访问该方法的 URL 地址。当用户发送过来的请求想要访问该 Controller 下的控制器方法时,请求路径就必须与这个 value 值相同,示例代码如下

@Controller
public class HelloController {
    @RequestMapping("/login")
    public String welcome() {
        return "login";
    }
}
2. 修饰类

当 @RequestMapping 注解标注在控制器类上时,value 属性的取值就是这个控制器类中的所有控制器方法 URL 地址的父路径。也就是说,访问这个 Controller 下的任意控制器方法都需要带上这个父路径。

@Controller
@RequestMapping(value = "/springmvc")
public class HelloController {
    @RequestMapping("/login")
    public String welcome() {
        return "login";
    }
}

在上面的控制类中,用户想要访问 HelloController 中的 welcome() 方法,请求的地址就必须带上父路径“/springmvc”,即请求地址必须为“/springmvc/login”。

@RequestMapping 注解的属性

@RequestMapping 注解中提供了多个可用属性,下面我们就对其中几个比较常用的属性进行介绍。

1. value 属性

在 @RequestMapping 注解中,value 属性用来设置控制器方法的请求映射地址。所有能够匹配到该请求映射地址的请求,都可以被该控制器方法处理,示例代码如下。

@RequestMapping(value = "/register")

value 属性是 @RequestMapping 注解的默认属性,如果我们在 @RequestMapping 注解中只设置了一个 value 属性,则该属性名可以被省略。value 属性的取值是一个字符串类型的数组,表示该控制器方法可以匹配多个请求地址

@RequestMapping( value = {"/register", "/login"})
public String success() {
    return "success";
}
2. name 属性

name 属性相当于方法的注释,用于解释这个方法是用来干什么的,使方法更易理解。

例如,下面的代码表示 getUsers() 方法是一个用来获取用户信息的控制器方法。

@RequestMapping(value = "toUser",name = "获取用户信息")
public String getUsers() {
    ……
}
3. method 属性

method 属性用来设置控制器方法支持的请求方式。如果一个控制器方法没有设置 @RequestMapping 注解的 method 属性,则说明该控制器方法支持全部请求类型,可以处理所有类型的请求。
method 属性的取值是一个 RequestMethod 类型的数组,表示一个控制器方法支持多种方式的请求,常用的请求方式有 GET、POST、DELETE、PUT 等。

例如,控制器方法只支持 GET 方式的请求,代码如下。

@RequestMapping(value = "/toUser",method = RequestMethod.GET)

 我们也可以为同一个控制器方法指定支持多种类型的请求。例如,一个方法既支持 GET 方式的请求,也支持 POST 方式的请求,代码如下。

@RequestMapping(value = "/toUser",method = {RequestMethod.GET,RequestMethod.POST})
4. params 属性

params 属性用于指定请求中的参数,只有当请求中携带了符合条件的参数时,控制器方法才会对该请求进行处理。

序号 表达式 含义
 "param" 请求中必须携带名为 param 的参数
"!param" 与表达式 ① 的含义完全相反,请求中不能携带名为 param 的参数
"param=value" 请求中必须携带名为 param 的参数,且参数的取值必须为:value
"param!=value" 与表达式 ③ 的含义完全相反,请求中不能携带参数:param = value。

params 属性的取值是一个字符串类型的数组,表示只有请求中同时携带了 params 属性指定的全部参数时,控制器方法才会对该请求进行处理。
例如

@RequestMapping(value = "/testParam", params = {"name=zhang", "age=23"})
@ResponseBody
public String testParam() {
    return "success";
}

以上代码表示,只有当请求中同时携带 name 和 age两个请求参数,且参数值必须分别为 “zhang” 和“23”时,控制器方法 testParam() 才会对该请求进行处理 。

5. headers 属性

headers 属性用于设置请求中请求头信息,只有当请求中携带指定的请求头信息时,控制器方法才会处理该请求。

序号 表达式 含义
 "header" 请求必须携带请求头信息:header 
"!header" 与表达式 ①  的含义完全相反,请求中不能携带请求头信息:header
"header=value" 请求中必须携带请求头信息:header=value 。
"header!=value" 与表达式 ③ 的含义完全相反,请求中不能携带请求头信息:header=value。

header 属性是一个字符换类型的数组,表示只有当请求同时携带数组中规定的所有头信息时,控制器方法才会对该请求进行处理。 只有当请求的头Referer信息中包含相关内容才会处理该请求。文章来源地址https://www.toymoban.com/news/detail-700681.html

到了这里,关于Spring MVC @Controller和@RequestMapping注解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring MVC:@RequestMapping

    @RequestMapping , 是 Spring Web 应用程序中最常用的注解之一,主要用于映射 HTTP 请求 URL 与处理请求的处理器 Controller 方法上。使用 @RequestMapping 注解可以方便地定义处理器 Controller 的方法来处理不同的 HTTP 请求,从而实现 Web 应用程序的路由功能。 @RequestMapping 注解可用于方法级

    2024年02月11日
    浏览(36)
  • Spring MVC 的controller方法返回值

    说明:controller方法中定义ModelAndView对象并返回,对象中可添加model数据、指定view 逻辑视图名 说明:controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。 返回字符串 在index.jsp里面定义超链接 Redirect重定向 说明: Contrller方法返回结果重定向到

    2024年01月16日
    浏览(51)
  • 【Spring MVC】Spring MVC基于注解的程序开发

    目录 一、什么是Spring MVC  二、Spring MVC项目的创建和使用 1、实现客户端和服务器端之间的连接 1.1、RequsestMapping注解 1.2、@RequestMapper的简单使用  1.3、使用@GetMapping和@POSTMapping注解来实现HTTP连接 三、获取参数 1、实现获取单个参数 2、实现获取对象 3、后端参数重命名(@Requ

    2024年02月13日
    浏览(48)
  • Spring MVC中@Controller和@RestController的区别

    @Controller 和 @RestController 是 Spring MVC 中用于处理 HTTP 请求的注解,它们有以下区别: 返回值处理方式: @Controller 用于定义一个传统的 Spring MVC 控制器,它的方法通常返回视图名称或 ModelAndView 对象,由视图解析器解析并渲染成 HTML 页面。 @RestController 组合了 @Controller 和 @Resp

    2024年01月17日
    浏览(47)
  • 【Spring MVC】Spring MVC的功能使用和相关注解介绍

    Spring MVC主要有三个功能: 连接 获取参数 输出数据 对于 Spring MVC 来说,掌握了以上 3 个功能就相当于掌握了Spring MVC。 连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。 先创建一个SpringMVC项目,过程和SpringBoot项目创建相

    2024年02月16日
    浏览(43)
  • 【Spring】— Spring MVC的注解

    1.DispatcherServlet DispatcherServlet的全名: org.Springframework.web.servlet.DispatcherServlet 它在程序中充当着前端控制器的角色。 【示例】在使用DispatcherServlet时,只需将其配置在项目的web.xml文件中,其配置代码如下。 在上述代码中, load-on-startup 元素和 init-param 元素都是可选的。如果 lo

    2024年02月10日
    浏览(36)
  • Spring MVC学习之——Controller类中方法的返回值

    2.1逻辑视图名 说明:controller方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。 返回字符串 2.2Redirect重定向 说明: Contrller方法返回结果重定向到一个url地址,如下商品修改提交后重定向到商品查询方法,参数无法带到商品查询方法中。 redirect方式

    2024年01月18日
    浏览(64)
  • 【Spring MVC】快速学习使用Spring MVC的注解及三层架构

    💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【Spring MVC】快速学习使用Spring MVC的注解及三层架构 🎉欢迎大家点赞👍评论📝收藏⭐文章 SpringWebMVC是基于ServletAPI构建的原始Web框架,从⼀开始就包含在Spring框架中。它的正式名称“SpringWebMVC”来⾃其源模块的名称(Spri

    2024年04月17日
    浏览(50)
  • Spring MVC常用注解

    @PathVariable、@RequestBody和@RequestParam @PathVariable、@RequestBody和@RequestParam是Spring MVC框架中用于处理请求参数的注解。 @PathVariable:用于处URL路径中的 占位符参数 。例如,对于URL /users/{id} ,其中的 {id} 是一个占位符,可以使用@PathVariable注解将其绑定到方法的参数上,如下所示:

    2024年02月09日
    浏览(37)
  • Spring MVC相关注解运用 —— 上篇

    目录 一、@Controller、@RequestMapping 1.1 示例程序 1.2 测试结果 二、@RequestParam 2.1 示例程序 2.2 测试结果 三、@RequestHeader、@CookieValue 3.1 示例程序 3.2 测试结果 四、@SessionAttributes 4.1 示例程序 4.2 测试结果 五、@ModelAttribute 5.1 示例程序 5.2 测试结果 往期专栏文章相关导读  1. Maven系列

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包