当前位置: 首页 > news >正文

Spring MVC 中 @RequestMapping 路径映射与请求处理全流程

路径映射:@RequestMapping

@RequestMapping("/user")
@RestController
public class UserController {@RequestMapping("m1")public String m1(){return "m1";}
}

@RequestMapping是实现 URL 路径与控制器方法映射的核心注解。
以上述代码为例,通过这个路径映射我们可以找到UserController这个类,以及该类中的m1方法。

@RequestMapping可标注在类和方法上,两者的路径会自动拼接形成完整的请求路径
类上的@RequestMapping("/user")定义了基础路径
方法上的@RequestMapping("m1")定义了具体路径
最终完整访问路径为:类路径+方法路径


这个路径有方法路径和类路径,通常我们会在这两个地方都进行声明。这是为了提高可读性。
需要注意的是当资源路径=方法路径+类路径。
当我们同时声明这两个路径的时候,在进行访问时,就要同时写下这两个路径:

请求操作

@RequestMapping("/user")
@RestController
public class UserController {
@RequestMapping("/m3")public String m3(){return "m3";}
}


上述代码我们结合PostMan进行操作之后就可以得到对应的响应。

 @RequestMapping("/m3")public String m4(){return "m4";}

在这种情况下“/m3”这个路径不可重复,如上所示就是一个错误的示范。

有参数的请求

下面我们再来介绍一下有传入参数的请求:

@RequestMapping("/r1")public String r1(String keyword){return "接收参数:"+keyword;}@RequestMapping("/r2")public String r2(String keyword,String username){return "接收参数:"+keyword+username;}

这里要注意的是,retrun后的参数名字要和传入的参数名字保持一致:

对于上面这些,我们通过Post和Get都是可以访问的,下面我们来介绍一下仅支持Get/Post的请求:

//只支持get@GetMapping("/r3")public String r3(){return "r3";}
@RequestMapping(value = "m2" ,method = RequestMethod.GET)public String m2(){return "m2";}//只支持post@GetMapping("/r4")public String r4(){return "r4";}@RequestMapping(value = "m1" ,method = RequestMethod.POST)public String m1(){return "m1";}

如上所述的r3和r4这两个路径名可以重复,因为他们的访问方式不同。

@RequestMapping("r8")public String r8(@RequestParam(value = "q",required = false) String keyword){return "接受参数:kewword="+keyword;}

上面这个请求表示从前端接受的参数为q,但是我们为了便于理解,把q赋值给keyword。
当采用这种方法之后,q就是必须传入的参数,如果我们加上了required = false这句代码,那么q就不是必须传入的参数了。

传递的参数为数组和集合

@RequestMapping("r9")public String r9(String[] arr){return "接收参数:arr"+ Arrays.toString(arr);}@RequestMapping("r10")public String r10(@RequestParam List<Integer> list){return "接收参数:list"+list;}

传递对象

@RequestMapping("r7")public String r7(UserInfo userInfo){return "接收参数:"+userInfo.toString();}

我们已经定义好了一个UserInfo类,并进行了初始化,同时也重写了toString方法。这个时候我们就可以用上面的这种方式来进行对象的传递。

http://www.dtcms.com/a/597602.html

相关文章:

  • 住宅ip和机房ip有什么区别?IP地址冲突如何解决?
  • 更改备案网站名称网站已备案下一步怎么做
  • 网站大图怎么做更吸引客户免费视频素材软件app
  • 购物管理系统
  • Isaac-GR00T项目在7自由度Franka机械臂上的微调与部署问题,考虑加入低通滤波器处理预测动作
  • 宝山企业做网站wordpress the7 主题
  • 望江县住房和城乡建设局网站网站主机方案
  • 常用 Linux Shell 命令
  • 从零开始刷算法-二分-搜索插入位置
  • 百度地图开发网站有什么网站可以做团购
  • 泰州高端网站建设医院网站建设中标
  • 背包dp
  • 低代码用户画像构建:结合知识图谱提升推荐精准度
  • JavaScript 二维数组操作示例
  • 【数值分析】13-线性方程组的解法-基本概念、迭代解法(1)
  • 解决规模化核心难题!Nature Commun.新策略实现大面积、高性能钙钛矿纳米线光电探测器
  • 门户网站模板想做网站怎么做
  • 专业门户网站的规划与建设无锡网站建设 首选众诺
  • 淄川响应式网站建设线上推广营销策划
  • zerotier内网穿透部署(rockylinux部署本地服务器)超详细~~~
  • Ubuntu环境中LLaMA Factory 的部署与配置—构建大语言模型微调平台
  • 建婚恋网站需要多少钱新会网站建设公司
  • MI50运算卡使用llama.cpp的ROCm后端运行Qwen3-Coder-30B-A3B的速度测试
  • 【图像处理基石】如何入门图像压缩编码技术?
  • 网站建设与管理实施方案企业建设网站怎么做账
  • 网站制作与网站建设实际报告文案发布平台
  • 开源项目合并新分支和本地修改指南
  • GJOI 11.5 题解
  • 网站建设是什么语言wan网站建设
  • 个人网站域名怎么起企业官方网站建设的流程