SpringMVC_2@RequestMapping注解

本文深入解析SpringMVC框架中@RequestMapping注解的使用方法,包括请求映射、请求方式限制、请求参数与请求头配置、Ant风格路径匹配、占位符PathVariable的应用,以及如何在控制器类和方法上正确使用该注解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、@RequestMapping映射请求注解、可标注的位置

@RequestMapping 概念

1)SpringMVC 使用@RequestMapping 注解为控制器指定可以处理哪些 URL 请求

2)在控制器的类定义及方法定义处都可标注 @RequestMapping

标记在类上:提供初步的请求映射信息。相对于	WEB 应用的根目录
标记在方法上:提供进一步的细分映射信息。相对于标记在类上的 URL。
若类上未标注 @RequestMapping,则方法处标记的 URL 相对于 WEB 应用的根目
录

3) 作用:DispatcherServlet 截获请求后,就通过控制器上 @RequestMapping 提供的映射信息确定请求所对应的处理方法。

2、@RequestMapping映射请求方式

标准的 HTTP 请求报头在这里插入图片描述

RequestMapping映射请求参数&请求头(RequestMapping属性)

value(重点)最常用,指定URL映射请求
method:限定请求方式

HTTP协议中的所有请求方式:
【GET】、【POST】、HEAD、PUT、PATCH、DELETE、OPTIONS、TRACE
 method=RequestMethod.POST:只接受POST类型的请求;
 若不是固定的方式而报错:4××(客户端错误)
@RequestMapping("/haha")
@Controller
public class FirstController {

	//代表当前项目下开始,处理当前项目下的hello请求
	@RequestMapping("/handle",method=RequestMethod.POST)
	public String firstController() {		
		System.out.println("收到请求,正在处理。");
		return "success";
	}
}

<a href="haha/handle">handle</a><br/>
<form action="haha/handle" method="post">
	<input type="submit"/>

params:设定规定请求参数

params与headers支持的简单表达式

  • param1: 表示请求必须包含名为 param1 的请求参数
    eg:params={“username”}
    发送请求的时候必须带上一个名为username的参数,若没带都会出现404
    如:http://localhost:8080/springmvc/haha/handle?username=111

  • !param1: 表示请求不能包含名为 param1 的请求参数
    eg:params={"!username"}
    发送请求的时候必须不携带一个名为username的参数,若带了都会出现404
    如:http://localhost:8080/springmvc/haha/handle

  • param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1
    eg:params={“username!=123”}
    发送请求时,携带的username值必须不为123;不带username或username值不为123均会报错

  • {“param1=value1”, “param2”}: 请求必须包含名为 param1 和 param2 的两个请求
    eg:params={“username!=123”,“abc”,“def”}
    请求参数必须满足以下规则:
    请求的username不能为123,且必须有abc的值,不能有def
    如:http://localhost:8080/springmvc/haha/handle?username=236&abc=1

@RequestMapping("/haha")
@Controller
public class FirstController {

	//代表当前项目下开始,处理当前项目下的hello请求
	@RequestMapping("/handle",method=RequestMethod.POST)
	public String firstController() {		
		System.out.println("收到请求,正在处理。");
		return "success";
	}
}


<a href="haha/handle02">handle02</a><br/>

headers:规定请求头,与params一样,能写简单的表达式
如:user-Agent:浏览器信息,通过设定浏览器信息,使得该请求在指定浏览器才能使用
在这里插入图片描述
consumes:只接受内容类型是那种请求,规定请求头中的Content-Type
produces:告诉浏览器返回的内容类型是什么,给响应头中加上Content-Type

4、@RequestMapping支持Ant路径风格

Ant

1)Ant 风格资源地址支持 3 种匹配符:【了解】精确优先

 - ?:匹配文件名中的一个字符,只能替代任意一个字符
 - *:匹配文件名中的任意字符,能替代任意多个字符、一层路径
 - **:** 匹配多层路径

2)@RequestMapping 还支持 Ant 风格的 URL:

/user/*/createUser
匹配 /user/aaa/createUser、/user/bbb/createUser 等 URL

/user/**/createUser
匹配 /user/createUser、/user/aaa/bbb/createUser 等 URL

/user/createUser??
匹配 /user/createUseraa、/user/createUserbb 等 URL
//Ant 风格资源地址支持 3 种匹配符
//@RequestMapping(value="/testAntPath/*/abc")
//@RequestMapping(value="/testAntPath/**/abc")
@RequestMapping(value="/testAntPath/abc??"	)
public String testAntPath(){

System.out.println("testAntPath..."); return "success";
}



<!-- Ant 风格资源地址支持 3 种匹配符 -->

<a href="springmvc/testAntPath/*/abc">testAntPath</a>

<a href="springmvc/testAntPath/xxx/yyy/abc">testAntPath</a>

<a href="springmvc/testAntPath/abcxx">testAntPath</a>

5、@RequestMapping映射请求占位符PathVariable

@PathVariable
带占位符的 URL 是 Spring3.0 新增的功能,该功能在 SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:
URL 中的 {xxx} 占位符可以通过 @PathVariable(“xxx”) 绑定到操作方法的入参中。

//@PathVariable 注解可以将请求 URL 路径中的请求参数,传递到处理请求方法的入参中	
//路径上的占位符只能占一层路径
//@RequestMapping(value="/{testPathVariable}/{id}"):占两层路径,且可以获得两层路径的参数

@RequestMapping(value="/testPathVariable/{id}")

public String testPathVariable(@PathVariable("id") Integer id){ System.out.println("testPathVariable...id="+id);
return "success";

}


<!-- 测试 @PathVariable -->

<a href="springmvc/testPathVariable/1">testPathVariable</a>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值