Spring3.0 mvc --@RequestParam/@PathVariable区别

一文帮你彻底搞懂ARM Debug Interface之SWD(转) ARM的文档写的已经很好了,但是关于上电以后的第一时间应该怎么操作,依然写的不够清晰,导致我第一次用的时候还是费了一些周折。今天做一个详细的梳理,希望能够帮助到更多的朋友。BTW, ARM_Cortex-M0/3 DesignStart系列会持续更新,只是中间可能会穿插其他知识点。SWD是Serial Wire Debug的简称,翻译成中文是”串行线调试”。 阅读详情
请求路径上有个id的变量值,可以通过@PathVariable来获取  @RequestMapping(value = "/page/{id}", method = RequestMethod.GET) 
@RequestParam用来获得静态的URL请求入参     spring注解时action里用到。
 
简介:

handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型)

A、处理requet uri 部分(这里指uri template中variable,不含queryString部分)的注解:   @PathVariable;

B、处理request header部分的注解:   @RequestHeader, @CookieValue;

C、处理request body部分的注解:@RequestParam,  @RequestBody;

D、处理attribute类型是注解: @SessionAttributes, @ModelAttribute;

 1、 @PathVariable 

当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。

示例代码:

@Controller  
  1. @RequestMapping("/owners/{ownerId}")  
  2. public class RelativePathUriTemplateController {  
  3.   
  4.   @RequestMapping("/pets/{petId}")  
  5.   public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {      
  6.     // implementation omitted   
  7.   }  
  8. }  

上面代码把URI template 中变量 ownerId的值和petId的值,绑定到方法的参数上。若方法参数名称和需要绑定的uri template中变量名称不一致,需要在@PathVariable("name")指定uri template中的名称。

2、 @RequestHeader、@CookieValue

@RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上。

示例代码:

这是一个Request 的header部分:

  1. Host                    localhost:8080  
  2. Accept                  text/html,application/xhtml+xml,application/xml;q=0.9  
  3. Accept-Language         fr,en-gb;q=0.7,en;q=0.3  
  4. Accept-Encoding         gzip,deflate  
  5. Accept-Charset          ISO-8859-1,utf-8;q=0.7,*;q=0.7  
  6. Keep-Alive              300  
  1. @RequestMapping("/displayHeaderInfo.do")  
  1. public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,  
  2.                               @RequestHeader("Keep-Alive") long keepAlive)  {  
  3. }  

上面的代码,把request header部分的 Accept-Encoding的值,绑定到参数encoding上了, Keep-Alive header的值绑定到参数keepAlive上。


@CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上。

例如有如下Cookie值:

  1. JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84 

参数绑定的代码:

  1. @RequestMapping("/displayHeaderInfo.do")  
  2. public void displayHeaderInfo(@CookieValue("JSESSIONID") String cookie)  {  
  3. }  

即把JSESSIONID的值绑定到参数cookie上。

3、@RequestParam, @RequestBody

@RequestParam

A) 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;

B)用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;

C) 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

示例代码:

  1. @Controller  
  2. @RequestMapping("/pets")  
  3. @SessionAttributes("pet")  
  4. public class EditPetForm {  
  5.     @RequestMapping(method = RequestMethod.GET)  
  6.  public String setupForm(@RequestParam("petId") int petId, ModelMap model) {  
  7.        Pet pet = this.clinic.loadPet(petId);  
  8.    model.addAttribute("pet", pet);  
  9.    return "petForm";  
  10.    }  

@RequestBody

该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等;

它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。

因为配置有FormHttpMessageConverter,所以也可以用来处理 application/x-www-form-urlencoded的内容,处理完的结果放在一个MultiValueMap<String, String>里,这种情况在某些特殊需求下使用,详情查看FormHttpMessageConverter api;

示例代码:

  1. @RequestMapping(value = "/something", method = RequestMethod.PUT)  
  2. public void handle(@RequestBody String body, Writer writer) throws IOException {  
  3.   writer.write(body);  
  4. }  
     

4、@SessionAttributes, @ModelAttribute

@SessionAttributes:

该注解用来绑定HttpSession中的attribute对象的值,便于在方法中的参数里使用。

该注解有value、types两个属性,可以通过名字和类型指定要使用的attribute 对象;

示例代码:

  1. @Controller  
  2. @RequestMapping("/editPet.do")  
  3. @SessionAttributes("pet")  
  4. public class EditPetForm {  
  5.     // ...   
  6. }  

@ModelAttribute

该注解有两个用法,一个是用于方法上,一个是用于参数上;

用于方法上时:  通常用来在处理@RequestMapping之前,为请求绑定需要从后台查询的model;

用于参数上时: 用来通过名称对应,把相应名称的值绑定到注解的参数bean上;要绑定的值来源于:

A) @SessionAttributes 启用的attribute 对象上;

B) @ModelAttribute 用于方法上时指定的model对象;

C) 上述两种情况都没有时,new一个需要绑定的bean对象,然后把request中按名称对应的方式把值绑定到bean中。


用到方法上@ModelAttribute的示例代码:

  1. // Add one attribute   
  2. // The return value of the method is added to the model under the name "account"   
  3. // You can customize the name via @ModelAttribute("myAccount")   
  4.   
  5. @ModelAttribute  
  6. public Account addAccount(@RequestParam String number) {  
  7.     return accountManager.findAccount(number);  
  8. } 
  9. 这种方式实际的效果就是在调用@RequestMapping的方法之前,为request对象的model里put(“account”, Account);


用在参数上的@ModelAttribute示例代码:

  1. @RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST)  
  2. public String processSubmit(@ModelAttribute Pet pet) {  
  3.      
  4. }  

首先查询 @SessionAttributes有无绑定的Pet对象,若没有则查询@ModelAttribute方法层面上是否绑定了Pet对象,若没有则将URI template中的值按对应的名称绑定到Pet对象的各属性上。

uniapp - 实现扫码功能自定义扫描二维码/条码界面+手电筒轻触照亮+扫码屏幕添加手动输入框,手机扫描二维码并跳转过程,调用手机原生摄像头进行扫码且自动识别执行事件(uniApp安卓苹果App端) uniapp,app端,安卓app,苹果ios,uniapp扫码识别,二维码展示和扫码,uniapp如何实现扫码功能,uni-app实现扫码功能,二维码和一维码/条码扫描,UniApp实现扫描二维码,uniapp开发原生app页面的扫码功能,自定义扫码界面,uniapp怎么调用扫一扫功能,app自定义扫码界面,uniapp 自定义扫一扫页面,扫码手电筒功能,自定义扫描框,扫码报错怎么办,扫码黑屏,扫一扫摄像头黑屏,uniapp扫码原生插件,最新扫码组件,连续扫码,uniapp APP扫码,扫码后如何处理跳转 阅读详情

相关推荐

Android Studio安装常见问题详解——Android Emulator Hypervisor Driver for AMD Processors installation failed.

目录一、问题描述二、解决方案2.1 开启CPU虚拟化2.2 禁用Hyper-V2.3 使用管理员命令行在驱动程序包中执行“silent_install.bat” 一、问题描述 新买的AMD轻薄本,在安装Android Studio时遇到问题: Android Emulator Hypervisor Driver for AMD Processors installation failed. 笔记本配置为: 二、解决方案 2.1 开启CPU虚拟化 设置虚拟化的步骤这里不进行详细介绍了。如果需要,可以自行百

Wendy的博客 4万+

@PathVariable设置为空的问题(required=false)

参考了:http://www.imooc.com/qadetail/268268 最近学习springMVC的时候,学到@PathVariable后,发现@PathVariable有个required属性,于是将其设置为false,发现访问请求时报错。 刚开始我的代码是这样的: @RequestMapping(value={"/user/{id}/{name}"}) publ...

weixin_30832351的博客 5578

清理异常值(MAD:绝对中位差)

清理异常数据: 中位数绝对偏差(MAD):用来描述单变量样本在定量数据中可变的一种标准 在统计学中,绝对中位差是刻画一元数据样本变化的一个鲁棒度量。由公式可以看出,其求解还算简单,给定一个数据样本集,首先求其中位数,然后求原始数据减去中位数的绝对值从而形成一个新的数据样本,再求新的数据样本的中位数即为绝对中位差。比如说有一个数据样本集X={2 3 8 7 9 6 4},这时候数据的中位数是6,原...

spider_man 1万+

Spring中三个注解@PathVariable、@Param和@RequestParam间的区别

前言 @Param 代码示例: @Select("select * from user where uid = #{uid} and uname = #{uname}") List<User> getUserList(@Param("uid") Integer id, @Param("uname") String name); 特点: @Param主要应用在Dao层 注解中的sql...

彭先森的博客 6283

Android应用加固脱壳实战:从爱加密原理到Frida内存Dump与修复

在移动应用安全领域,代码加固与动态加载是保护核心逻辑的关键技术。其原理在于通过修改应用启动流程,将原始DEX加密隐藏,并注入包含解密逻辑的壳DEX,实现运行时动态加载。这项技术的核心价值在于防止应用被逆向分析、二次打包或恶意篡改,广泛应用于金融、游戏等高安全要求场景。对于安全研究、漏洞挖掘或历史版本审计,掌握脱壳技能至关重要。本文聚焦于**爱加密**等主流加固方案,深入探讨如何利用**Frida**框架在内存中精准捕获解密后的DEX数据,并解决脱壳后常见的签名校验等运行问题,提供一套从原理到实践的完整攻防思

weixin_28716443的博客 492

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

m0_68167062的博客 2262

@PathVariable、@RequestParam和@RequestBody的详解

1一、@PathVariable 直译:路径变量 @PathVariable是spring3.0的一个新功能:接收请求路径中占位符的值 @PathVariable("xxx") 通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中,获取动态参数链接 @PathVariable(“xxx“) @RequestMapping(value = "g...

qq_39038793的博客 1万+

STK中的传感器与通信组件:雷达、发射机、接收机与天线的协同建模

本文深入解析了STK软件中传感器、雷达、发射机、接收机与天线的协同建模方法。通过构建一个完整的卫星对地数传系统实例,阐述了各组件如何分工协作,实现从几何指向到射频链路的高保真仿真,为复杂航天通信与探测系统的设计与分析提供了高效、灵活的解决方案。

weixin_29271263的博客 273

深入理解 Spring MVC 中的 @PathVariable、@RequestParam 与 @RequestBody

解析 URL 路径中的变量,是 RESTful API 的核心,让 URL 更具语义化:处理 URL 查询参数,适合传递简单的筛选、分页等辅助参数:解析请求体数据,适合传递复杂对象,是创建 / 更新资源的首选理解这三个注解的区别和适用场景,能帮助我们设计更合理的 API 接口,写出更清晰、易维护的 Spring MVC 代码。在实际开发中,需根据参数的性质(路径参数 / 查询参数 / 复杂对象)选择合适的注解,遵循 "用对的工具做对的事" 的原则。

技术分享 964

WinCC7.5 SP2 安装与授权(文末附授权软件)

安装部分参考了wincc7.5官网下载及安装配置(适配window10超详细教程) 主要介绍授权部分(仅供学习,商用请下载正版授权): 通过官网下载安装了WinCC7.5(需要在西门子官网注册账户,10积分下载)。 安装成功以后,还没授权,先别立即打开。 下载Sim_EBK_Install 复制链接到百度网盘中离线下载: 都是一样的软件,版本不同。有部分解压时需要输入密码,可选择方框里的不需要解压密码: 解压以后,打开: 最后检查秘钥授权是否成功 打开桌面(这是安装WinCC以后就有的): 左

skr? 7万+

Mac下Neo4j的安装、配置及Error汇总

Mac 配置 jdk环境(图文) 卸载jdk

Yale-曼陀罗 1643

@PathVariable与@RequestParam与@RequestBody的区别用法

@PathVariable后缀丢失问题 例如:将后缀为xxx.163.com从前台传到后台(get请求) @RequestMapping(value = "/tiaoZhuan/{xxxx.163.com}", method = RequestMethod.GET) //接收到的数据会自动忽略.com 解决办法: @RequestMapping(value = "/tiaoZhuan/{xxx....

PAN17610011759的博客 2667

基于ESP32的智能无线广播系统开发博客

通过本项目的开发,我们成功地实现了基于ESP32的智能无线广播系统。该系统不仅具备传统广播的功能,还实现了通过Wi-Fi无线传输音频、实时广播和智能控制等多种先进功能。未来,随着技术的进一步发展,我们还可以扩展更多功能,如智能推荐广播内容、支持语音识别和控制等。希望本项目能够为嵌入式开发人员提供一些思路和参考,帮助大家在实际开发中更好地应用ESP32平台,开发出更加智能和实用的无线广播系统。

2201_76125393的博客 424

SpringMVC 中 @PathVariable、@RequestParam、@RequestBody的使用

一、@PathVariable 映射 URL 绑定的占位符 通过 @PathVariable 可以将 URL 中 占位符参数 绑定到控制器处理 方法的入参 中: URL 中的 { xxx } 占位符可以通过 @PathVariable(&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;xxx&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a

猎人在吃肉 5085

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

@RequestParam @RequestBody @PathVariable用法详解

RequestParam一般用来接收一个参数,比如单独的id或者name等参数,@RequestBody大多数用来对某个封装对象进行接收,从前端传来的数据封装成对象进行接收。一般也是用于Get请求,URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。三个注解都是在我们进行请求时对服务端参数进行封装的,那么具体三个注解的使用,什么情况下,什么条件下使用呢?@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);..

weixin_53690059的博客 6174

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍

本文介绍了SpringMVC处理URL参数的三种常用注解:@PathVariable用于获取RESTful风格的路径参数;@RequestParam用于获取查询字符串参数,支持默认值和参数验证;@GetMapping作为组合注解简化GET请求映射。文章详细分析了各注解的使用方法、适用场景和常见问题解决方案,建议开发者根据具体需求选择或组合使用这些注解。通过合理运用这些注解,可以提升代码可读性、可维护性及接口健壮性。

ywl470812087的博客 12万+

springboot中@RequestParam,@RequestBody,@PathVariable三个注解区别

三者都用于在Controller层接收前端传递的数据。 @RequestParam和@PathVariable @PathVariable主要用于接收http://host:port/path/{参数值}数据。 @RequestParam主要用于接收http://host:port/path?参数名=参数值数据,这里后面也可以不跟参数值。 @RequestParam和@PathVariable这两...

Moments 2675

@PathVariable与@RequestParam的区别

这里写自定义目录标题@PathVariable与@RequestParam的区别 @PathVariable与@RequestParam的区别 在spring MVC中,两者的作用都是将request里的参数的值绑定到contorl里的方法参数里的,区别在于,URL写法不同。 使用@RequestParam时,URL是这样的:http://host:port/path?参数名=参数值 使用@PathVariable时,URL是这样的:http://host:port/path/参数值 @RequestM

qq_43701002的博客 304

@RequestParam和@PathVariable的用法与区别

在 Spring MVC 中,和是两种完全不同的参数绑定方式,下面是它们的和?key=value{变量}value。

ssy15211936768的博客 1429

Controller层接收前端传参的几种方法。@RequestParam、@RequestBody、@PathVariable。及参数校验。

后端接收前端参数,接收参数方式,及参数校验

努力努力,努力努力的博客 1万+

@PathVariable和@RequestParam的区别

请求路径上有个id的变量值,可以通过@PathVariable来获取  @RequestMapping(value = "/page/{id}", method = RequestMethod.GET)   @RequestParam用来获得静态的URL请求入参     spring注解时action里用到。 简介: handler method 参数绑定常用的注解,我们根据他们处理

ccecwg的专栏 961

【Java】@RequestParam和@PathVariable的区别和使用

https://blog.csdn.net/Trista_1999/article/details/118929719?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165510823216782391818694%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165510823216782391818694&biz_id

Hello World! 1309

@PathVariable、@RequestParam、@RequestBody的区别

@PathVariable url路径请求参数,例如我们访问自己QQ空间时,请求的url是 https://user.qzone.qq.com/1010824413 ,此时@PathVariable 获取的参数就是url中的QQ号码。 代码示例: @ApiOperation("删除指定用户信息") @RequestMapping(value = "/delete/{id}", method = R...

weixin_45396074的博客 285

SpringBoot从0到实战9:学习@RequestParam和@PathVariable

正确理解“访问请求”、“URI”、“URL”、“请求参数”的概念 一个完整的请求路径:http://www.test.com/user/0866/viewusername=zhangsan&age=21 请求URL (requestURL)= http://www.test.com/user/031267/view 请求URI (requestURI)= user/031267/view 请求参数(queryString)= username=zhangsan&age=2

努力才是唯一的入场券。 4万+

springMVC中的注解@RequestParam与@PathVariable的区别

@PathVariable绑定URI模板变量值@PathVariable是用来获得请求url中的动态参数的@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。//配置url和方法的一个关系@RequestMapping("item/{itemId}")/* @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,类似于struts的...

weixin_39214481的博客 3561

@requestparam map 接收前端的值_Spring MVC中@RequestParam注解的使用指南

概述学java的同学们大家好,在这个教程中,码农小胖哥将带大家来研究一下Spring的@RequestParam注解。简而言之,我们可以使用@RequestParam从请求中提取查询参数,表单参数甚至文件。我们将讨论如何使用@RequestParam及其属性。我们还将讨论@RequestParam和@PathVariable之间的区别。简单映射假设我们有一个端点/ api / foos,它接受一个...

weixin_42354944的博客 3614

@RequestParam,@PathParam,@PathVariable注解区别(获取前端传来的参数)

https://blog.csdn.net/u011410529/article/details/66974974

欢迎访问我的博客 3913
上一篇: myeclipse 8.5最新注册码
下一篇: Oracle建立索引的规则
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值