关于注解RequestMapping注解的解析

本文详细解析了Spring MVC中@RequestMapping注解的用途,包括在类和方法上的应用,以及如何建立URL和处理方法的映射。通过实例展示了Value、method和params等属性的用法,解释了为何在类上使用时返回值前需要加/的原因。同时,还介绍了如何指定请求方式和限制请求参数条件。

@RequestMapping的作用:建立请求URL和处理请求方法之间的对应关系

一般用在的位置:

类上:请求URL的第一级访问目录,此处不写的话,就相当于应用的根目录

方法上:请求URL的第二级访问目录,与类上的使用@RequestMapping标注的一级目录一起组成访问虚拟路径

下面是应用实例:

应用在方法上:

效果:

应用在类上:

效果:

值得注意的是:为什么我应用在类上的时候返回值前面加了一个“/”

如果不加“/”就回报404错误,找不到资源

这是为什么呢?因为我们返回的是相对地址,我们现在访问的是quick,它现在默认去找这个下面http://localhost:8080/Spring_MVC_war_exploded/user

也就是user下面的quick,很显然是找不到的。

所以我们加一个“/”,代表的是从当前web应用下面找这个success页面

接下来我们再看看@RequestMapping里面的属性:

Value:用于指定请求的URL 。它和path的作用是一样的

method:用于指定请求的方式

params:用于指定限制请求参数的条件,它支持简单的表达式。要求请求参数的key和value必须配置的一模一样,它里面的参数是一个数组,可以限定多个参数。

 

下面进行详细的解析:

关于Value;

这个里面的参数就相当于是Value了,只是当只有一个参数的时候这个Value是可以省略的

原本应该是:

 

关于method:

原本默认是get,但是有post的方法,这里我们讲解post方法:

不要这么写:

method里面是通过枚举的方式出现的:

通过 RequestMethod来进行选取

运行测试:

这里原本我是get方法,我们用post方法就会报错,修改方法就是通过表单的方法提交

关于params:

意思就是我们访问这个页面的时候一定要有参数username,不然访问不了

没加参数的运行测试:

这个报错就是告诉我们,访问这个页面需要添加参数

添加参数的运行测试:

 

 

 

 

 

 

 

`@RequestMapping` 注解无法解析的问题通常会出现在Spring项目中,这可能是由于多种原因导致的配置错误或依赖缺失。下面是一些常见的排查步骤及解决方案: ### 1. 检查 Spring 版本兼容性 确保你在使用的 `spring-webmvc` 或者其他相关的 spring 库版本是正确的,并且各个库之间保持一致。 ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> ``` 如果使用的是 Spring Boot,则需要保证你的启动器 (`starter`) 包含了 Web 相关的支持: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` ### 2. 配置文件检查 确认 `application.properties` (或 `.yml`) 文件里是否已经启用了 MVC 自动配置功能: 对于 application.properties : ```properties # 启用MVC自动装配特性 spring.main.allow-bean-definition-overriding=true ``` 如果是 YAML 格式的话可以这么写: ```yaml spring: main: allow-bean-definition-overriding: true ``` 当然,在非 Spring Boot 环境下还需要额外引入相应的 XML 或 Java Config 来激活组件扫描等设置。 ### 3. 组件扫描路径校准 确保控制器所在的包及其子包已经被标注有 ComponentScan 的主应用程序类所覆盖到。例如: ```java @SpringBootApplication(scanBasePackages = {"com.example.controller", "com.yourpackage"}) public class YourApplication { public static void main(String[] args) throws Exception { SpringApplication.run(YourApplication.class, args); } } ``` 这里指定了两个具体的包名供容器去查找含有 Controller、Service 类型 Bean 定义的地方。 ### 4. 清理并重建项目构建缓存 有时候 IDE 内部的状态可能会造成问题,尝试通过清理本地仓库以及刷新 Maven / Gradle 构建的方式解决问题: #### 使用IDEA操作指南: - **File** -> **Invalidate Caches / Restart...** 然后选择 Invalidate and Restart . #### 对于命令行工具用户来说, 你可以先删除 .m2/repository 下对应模块的所有内容再运行 mvn clean install 命令。 以上措施应该能帮助解决大部分因环境因素造成的 `@RequestMapping` 解析失败情况;若仍然存在异常现象建议查看控制台日志信息获取更多线索以便进一步诊断根源所在.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值