在Spring MVC中接收请求参数

如果客户端提交的请求参数数量较少,且参数之间没有相关性,则可以选择将各请求参数声明为处理请求的方法的参数,并且,参数的类型可以按需设计。

如果客户端提交的请求参数略多(达到2个或以上),且参数之间存在相关性,则应该将这些参数封装到自定义的POJO类型中,并且,使用此POJO类型作为处理请求的方法的参数,同样,POJO类中的属性的类型可以按需设计。

关于请求参数的值:

  • 如果客户端没有提交对应名称的请求参数,则方法的参数值为null

  • 如果客户端提交了对应名称的请求参数,但是没有值,则方法的参数值为空字符串(""),如果方法的参数是需要将字符串转换为别的格式,但无法转换,则参数值为null,例如声明为Long类型时

  • 如果客户端提交对应名称的请求参数,且参数有正确的值,则方法的参数值为就是请求参数值,如果方法的参数是需要将字符串转换为别的格式,但无法转换,则会抛出异常

另外,还推荐将某些具有唯一性的(且不涉及隐私)参数设计到URL中,使得这些参数值是URL的一部分!例如:

https://blog.csdn.net/weixin_407563/article/details/854745877
https://blog.csdn.net/qq_3654243299/article/details/847462823

Spring MVC框架支持在设计URL时,使用{名称}格式的占位符,实际处理请求时,此占位符位置是任意值都可以匹配得到!

例如,将URL设计为:

@RequestMapping("/delete/{id}")

在处理请求的方法的参数列表中,用于接收占位符的参数,需要添加@PathVariable注解,例如:

public String delete(@PathVariable Long id) {
    // 暂不关心方法内部的实现   
}

如果{}占位符中的名称,与处理请求的方法的参数名称不匹配,则需要在@PathVariable注解上配置占位符中的名称,例如:

@RequestMapping("/delete/{albumId}")
public String delete(@PathVariable("albumId") Long id) {
    // 暂不关心方法内部的实现   
}

在配置占位符时,可以在占位符名称的右侧,可以添加冒号,再加上正则表达式,对占位符的值的格式进行限制,例如:

@RequestMapping("/delete/{id:[0-9]+}")

如果按照以上配置,仅当占位符位置的值是纯数字才可以匹配到此URL!

并且,多个不冲突有正则表达式的占位符配置的URL是可以共存的!例如:

@RequestMapping("/delete/{id:[a-z]+}")

以上表示的是“占位符的值是纯字母的”,是可以与以上“占位符的值是纯数字的”共存!

另外,某个URL的设计没有使用占位符,与使用了占位符的,是允许共存的!例如:

@RequestMapping("/delete/test")

Spring MVC会优先匹配没有使用占位符的URL,再尝试匹配使用了占位符的URL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值