关于RequestMapping注解的作用说明

 更新时间:2022年01月07日 17:05:58   作者:小丸与小鹿  
这篇文章主要介绍了关于RequestMapping注解的作用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。

@RequestMapping注解的作用

@RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一。这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。并且一个处理请求地址映射的注解,可用在类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

以下为@RequestMapping的源码

package org.springframework.web.bind.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
    String name() default "";
    @AliasFor("path")
    String[] value() default {};
    @AliasFor("value")
    String[] path() default {};
    RequestMethod[] method() default {};
    String[] params() default {};
    String[] headers() default {};
    String[] consumes() default {};
    String[] produces() default {};
}

方法上:

请求 URL 的第二级访问目录。

属性:

  • value:用于指定请求的 URL。它和 path 属性的作用是一样的。
  • method:用于指定请求的方式。
  • params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和 配置的一模一样。

例如:

  • params = {“accountName”},表示请求参数必须有
  • accountNameparams = {“moeny!100”},表示请求参数中 money 不能是 100。
  • headers:用于指定限制请求消息头的条件。

注意:

以上四个属性只要出现 2 个或以上时,他们的关系是与的关系。

作用:

用于建立请求URL和处理请求方法之间的对应关系。

出现位置:

请求 URL 的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/开头。 它出现的目的是为了使我们的 URL 可以按照模块化管理:

例如:

账户模块:

  • /account/add
  • /account/update
  • /account/delete …

订单模块:

  • /order/add
  • /order/update
  • /order/delete

案例

普通案例: 将@RequestMapping注解分别注释在类和方法上,所以在前端写链接的时候要写完全的路径(类上标签的路径+方法标签上的路劲)

控制器的代码块:

/**
* RequestMapping 注解出现的位置
* @author 
* @Company http://www.ithiema.com
* @Version 1.0
*/
@Controller("accountController")
@RequestMapping("/account")
public class AccountController {
	@RequestMapping("/findAccount")
	public String findAccount() {
		System.out.println("查询了账户。。。。");
		return "success";
	}
}

JSP中的代码块

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!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=UTF-8">
	<title>requestmapping 的使用</title>
</head>
<body>
	<!-- 第一种访问方式 -->
	<a href="${pageContext.request.contextPath}/account/findAccount" rel="external nofollow" >
		查询账户
	</a>


	<!-- 第二种访问方式 -->
	<a href="account/findAccount" rel="external nofollow" >查询账户</a>
</body>
</html>

案例: 用于指定请求的方式,如果要求是get请求,那么在前端写请求方式时的method=get,反之如果要求是post请求,前端的,medthod=post

控制器代码块:

/**
* 保存账户
* @return
*/
@RequestMapping(value="/saveAccount",method=RequestMethod.POST)
public String saveAccount() {
	System.out.println("保存了账户");
	return "success";
}

jsp代码块

<a href="account/saveAccount" rel="external nofollow" >保存账户,get 请求</a>
<form action="account/saveAccount" method="post">
<input type="submit" value="保存账户,post 请求">
</form>

注意: 当使用 get 请求时,提示错误信息是 405,信息是方法不支持 get 方式请求

在这里插入图片描述

params 属性的示例: 用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和 配置的一模一样。 写了这个属性之后就一定要在前端发送请求的时候,前端就要有这个属性,否则就无法访问。控制器代码块:

/**
* 删除账户
* @return
*/
@RequestMapping(value="/removeAccount",params= {"accountName","money>100"})
public String removeAccount() {
	System.out.println("删除了账户");
	return "success";
}

jsp代码块:

<a href="account/removeAccount?accountName=aaa&money>100" rel="external nofollow" >删除账户,金额 100</a>
<a href="account/removeAccount?accountName=aaa&money>150" rel="external nofollow" >删除账户,金额 150</a>

注意:

当我们点击第一个超链接时,可以访问成功。

当我们点击第二个超链接时,无法访问。

如下图:

在这里插入图片描述

支持REST风格的参数: 代表性状态传输 (REST) 是一种用于分布式超媒体系统(如万维网)的体系结构样式。 (以下测试代码与@PathVariable联用)

控制器代码块:

    @RequestMapping(value = "/testRequestMapping/{Id}")
    public String testRequestMapping(@PathVariable String Id){
        System.out.println("testRequestMapping执行了"+Id);
        return "success";
    }

jsp前端代码块

<a href="account/testRequestMapping/21" rel="external nofollow" >@RequestMapping测试</a>

@RequestMapping注解的六个属性详解

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

RequestMapping注解有六个属性

下面分成三类进行说明

valuemethod

  • value:指定请求的实际地址,指定的地址可以是具体地址、可以RestFul动态获取、也可以使用正则设置;
  • method:指定请求的method类型, 分为GET、POST、PUT、DELETE等;

consumesproduces

  • consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
  • produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

paramsheaders

  • params:指定request中必须包含某些参数值是,才让该方法处理。
  • headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java中DelayQueue实例用法详解

    java中DelayQueue实例用法详解

    在本篇内容里小编给大家分享的是一篇关于java中DelayQueue实例用法详解内容,有需要的朋友们可以跟着学习下。
    2021-01-01
  • SpringBoot集成JPA的示例代码

    SpringBoot集成JPA的示例代码

    本篇文章主要介绍了SpringBoot集成JPA的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 详解SpringMVC的拦截器链实现及拦截器链配置

    详解SpringMVC的拦截器链实现及拦截器链配置

    拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行。本文将详细讲讲SpringMVC中拦截器参数及拦截器链配置,感兴趣的可以尝试一下
    2022-08-08
  • SpringBoot开发案例之打造私有云网盘的实现

    SpringBoot开发案例之打造私有云网盘的实现

    这篇文章主要介绍了SpringBoot开发案例之打造私有云网盘的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 一文吃透Spring Cloud gateway自定义错误处理Handler

    一文吃透Spring Cloud gateway自定义错误处理Handler

    这篇文章主要为大家介绍了一文吃透Spring Cloud gateway自定义错误处理Handler方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Java在长字符串中查找短字符串的实现多种方法

    Java在长字符串中查找短字符串的实现多种方法

    这篇文章主要介绍了Java在长字符串中查找短字符串的实现多种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java中的参数传递详细介绍

    Java中的参数传递详细介绍

    大家好,本篇文章主要讲的是Java中的参数传递详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • 如何用Java来进行文件切割和简单的内容过滤的实现

    如何用Java来进行文件切割和简单的内容过滤的实现

    这篇文章主要介绍了如何用Java来进行文件切割和简单的内容过滤的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-01-01
  • 基于Spring实现文件上传功能

    基于Spring实现文件上传功能

    这篇文章主要为大家详细介绍了Spring实现文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • java实战之猜字小游戏

    java实战之猜字小游戏

    这篇文章主要介绍了java实战之猜字小游戏,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好的帮助呦,需要的朋友可以参考下
    2021-04-04

最新评论