首页 > 其他分享 >3. @RequestMapping注解

3. @RequestMapping注解

时间:2023-06-17 17:33:48浏览次数:40  
标签:RequestMapping 映射 请求 value 注解 属性

1. @RequestMapping 注解的功能

@RequestMapping 注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。

SpringMVC 接收到指定的请求 , 就会来找到在映射关系中对应的控制器方法来处理这个请求

2. @RequestMapping 注解的位置

@RequestMapping 标识一个类:设置映射请求的请求路径的初始信息

@RequestMapping 标识一个方法:设置映射请求请求路径的具体信息

@Controller
@RequestMapping("/test")
public class RequestMappingController {
    //此时请求映射所映射的请求的请求路径为:/test/testRequestMapping
    @RequestMapping("/testRequestMapping")
    public String testRequestMapping(){
        return "success";
    }
}

3. @RequestMapping 注解的 value 属性

@RequestMapping 注解的 value 属性通过请求的请求地址匹配请求映射

@RequestMapping 注解的 value 属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求

@RequestMapping 注解的 value 属性必须设置,至少通过请求地址匹配请求映射

image

<a th:href="@{/testRequestMapping}">测试@RequestMapping的value属性--
>/testRequestMapping</a><br>
<a th:href="@{/test}">测试@RequestMapping的value属性-->/test</a><br>
@RequestMapping(
    value = {"/testRequestMapping", "/test"}
)
public String testRequestMapping(){
    return "success";
}

4. @RequestMapping 注解的 method 属性

image

@RequestMapping 注解的 method 属性通过请求的请求方式(get 或 post)匹配请求映射

@RequestMapping 注解的 method 属性是一个 RequestMethod 类型的数组,表示该请求映射能够匹配多种请求方式的请求

若当前请求的请求地址满足请求映射的 value 属性,但是请求方式不满足 method 属性,则浏览器报错

405:Request method 'POST' not supported

<a th:href="@{/test}">测试@RequestMapping的value属性-->/test</a><br>
<form th:action="@{/test}" method="post">
    <input type="submit">
</form>
@RequestMapping(
    value = {"/testRequestMapping", "/test"},
    method = {RequestMethod.GET, RequestMethod.POST}
)
public String testRequestMapping(){
    return "success";
}

注:

1、对于处理指定请求方式的控制器方法,SpringMVC 中提供了@RequestMapping 的派生注解

处理 get 请求的映射-->@GetMapping

处理 post 请求的映射-->@PostMapping

处理 put 请求的映射-->@PutMapping

处理 delete 请求的映射-->@DeleteMapping

2、常用的请求方式有 get,post,put,delete

但是目前浏览器只支持 get 和 post,若在 form 表单提交时,为 method 设置了其他请求方式的字符

串(put 或 delete),则按照默认的请求方式 get 处理

若要发送 put 和 delete 请求,则需要通过 spring 提供的过滤器 HiddenHttpMethodFilter,在

RESTful 部分会讲到

5. @RequestMapping 注解的 params 属性(了解)

image

@RequestMapping 注解的 params 属性通过请求的请求参数匹配请求映射

@RequestMapping 注解的 params 属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系

"param":要求请求映射所匹配的请求必须携带 param 请求参数

"!param":要求请求映射所匹配的请求必须不能携带 param 请求参数

"param=value":要求请求映射所匹配的请求必须携带 param 请求参数且 param=value

"param!=value":要求请求映射所匹配的请求必须携带 param 请求参数但是 param!=value

<a th:href="@{/test(username='admin',password=123456)">测试@RequestMapping的
params属性-->/test</a><br>
@RequestMapping(
    value = {"/testRequestMapping", "/test"}
    ,method = {RequestMethod.GET, RequestMethod.POST}
    ,params = {"username","password!=123456"}
)
public String testRequestMapping(){
    return "success";
}

注:

若当前请求满足@RequestMapping 注解的 value 和 method 属性,但是不满足 params 属性,此时

页面回报错 400:Parameter conditions "username, password!=123456" not met for actual

request parameters: username={admin}, password={123456}

6. @RequestMapping 注解的 headers 属性(了解)

image

@RequestMapping 注解的 headers 属性通过请求的请求头信息匹配请求映射

@RequestMapping 注解的 headers 属性是一个字符串类型的数组,可以通过四种表达式设置请求头信

息和请求映射的匹配关系

"header":要求请求映射所匹配的请求必须携带 header 请求头信息

"!header":要求请求映射所匹配的请求必须不能携带 header 请求头信息

"header=value":要求请求映射所匹配的请求必须携带 header 请求头信息且 header=value

"header!=value":要求请求映射所匹配的请求必须携带 header 请求头信息且 header!=value

若当前请求满足@RequestMapping 注解的 value 和 method 属性,但是不满足 headers 属性,此时页面

显示 404 错误,即资源未找到

7. SpringMVC 支持 ant 风格的路径

?:表示任意的单个字符

*:表示任意的0 个或多个字符

**:表示任意层数的任意目录

注意:在使用时,只能使用//xxx 的方式

8. SpringMVC 支持路径中的占位符(重点)

原始方式:/deleteUser?id=1

rest 方式:/user/delete/1

SpringMVC 路径中的占位符常用于**RESTful风格**中,当请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的**@RequestMapping注解的value属性中通过占位符{xxx}表示传输的数据**,在**通过@PathVariable注解**,将占位符所表示的数据赋值给控制器方法的形参

<a th:href="@{/testRest/1/admin}">测试路径中的占位符-->/testRest</a><br>
@RequestMapping("/testRest/{id}/{username}")
public String testRest(@PathVariable("id") String id, @PathVariable("username")
String username){
    System.out.println("id:"+id+",username:"+username);
    return "success";
}
//最终输出的内容为-->id:1,username:admin

标签:RequestMapping,映射,请求,value,注解,属性
From: https://www.cnblogs.com/NorthPoet/p/17487754.html

相关文章

  • Java官方笔记10注解
    注解注解的作用:Informationforthecompiler—Annotationscanbeusedbythecompilertodetecterrorsorsuppresswarnings.Compile-timeanddeployment-timeprocessing—Softwaretoolscanprocessannotationinformationtogeneratecode,XMLfiles,ands......
  • @Import注解
    1.前言 在之前关于springBoot自动装配一文里,曾经写过里面有一个很关键的注解,就是@Import,它让springBoot可以将spring.factories中的各组件的配置类加载到spring容器中,那么今天来讲下关于这个注解的一些了解。2.import注解讲解2.1@Import注解的作用向spring容器中添加实......
  • 注解 annotation
    内置注解@Override:重写@Deprecated:不推荐使用的@SupperessWarnings("all"):镇压警告元注解用于负责注解其他注解@Target:解释被描述的注解的使用范围@Retention:解释需要在什么级别保存被描述的注解信息(SOURCE<CLASS<RUNTIME)@Document:解释被描述的注解被......
  • Spring注解开发
    注解开发介绍:注解开发是spring的强项,实际开发过程中更多使用的是注解注入而非bean标签注入xml和注解开发的对比:xml可以适用任何场景,结构清晰,维护方便注解不是自己提供的类使用不了,开发简单方便建议使用xml和注解整合开发xml管理Bean注解完成属性注入使用过程中,可以......
  • 实现一个权限校验注解
    什么是注解?Java注解是附加在代码中的一些元信息,用于编译和运行时进行解析和使用,起到说明、配置的功能。注解不会影响代码的实际逻辑,仅仅起到辅助性的作用。包含在java.lang.annotation包中。注解的定义类似于接口的定义,使用@interface来定义,定义一个方法即为注解类型定义了一个元......
  • 采用注解方式-HTTP Status 404 – Not Found 或者 采用web
    采用注解方式->HTTPStatus404–NotFound或者采用web.xml方式->cannotresolvetheclassinthetag运行一个简单的servlet程序,分别采用了两种方式对servlet进行映射,均报错。1⃣️采用Annotation方式@WebServlet(name="DownloadServlet",urlPatterns="/download"......
  • SpringBoot使用自定义日志注解,配置切面
    1.使用技巧以下是需要注意的部分:在环绕通知中使用ProceedingJoinPoint,控制目标方法的运行。在其他通知类型中使用JoinPoint。如果使用JoinPoint则必须位于参数的第一位。ProceedingJoinPoint中有特殊的方法proceed()。当有多个切面时,使用@Order(11)来指定注解的优先级。......
  • SpringCache的常用注解-@CacheEvit
    从缓存中移除相应的数据,触发缓存删除操作value:缓存名称key:缓存的key规则,可以使用SpringEL,默认是方法参数组合beforeInvocation:缓存的清除在方法调用之前执行还是之后执行,默认为false参考如下代码:点击查看代码@Override@CacheEvict(value={"query1"},key=......
  • 【SpringBoot】注解
    Controller-@RestController-@RequestMapping("/path")Controller内方法@GetMapping("/path/{xxx}")@PostMapping("/path")POST处理函数参数@RequestBody//将Json体参数值按照参数名传入类内对应字段中GET处理函数参数@PathVariable//按名称获取请求路径中的变......
  • webStorm添加elementui注解
    https://element.eleme.io  添加成功后的效果 ......