Test11ABBV 2014-05-25 02:13
浏览 538
已采纳

springmvc中@PathVariable和@RequestParam的区别

我的url;
http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2
在controller中这么写:
@RequestMapping(value="/page.do/{pageSize}/{pageNow}")
public String page(@PathVariable int pageSize,@PathVariable int pageNow){}
这个好像有问题。求解

  • 写回答

4条回答 默认 最新

  • iteye_7115 2014-05-26 02:29
    关注

    http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2

    你可以把这地址分开理解,其中[color=darkred]问号前半部分[/color]:http://localhost:8080/Springmvc/user/page.do 这个就是路径,是你的请求url,而如果这个路径上有数据匹配,用的就是@PathVariable 如
    @RequestMapping(value="/page{pageNo}.do")
    public String page(@PathVariable int pageNo){}
    【注意:看下这地方的@RequestMapping的地址,对照我上面说的路径】

    而[color=darkred]问号的后面部分就是请求参数部分[/color],是要向请求路径提交的参数信息,用的就是@RequestParam ,对于这种参数,如果你要用的话,代码应该如下:
    @RequestMapping(value="/page.do")
    public String page(@RequestParam int pageSize,@RequestParam int pageNow){}

    【注意:这个代码的RequestMapping地址只需要/page.do就行】

    [color=darkred]其实你只要把什么叫请求路径,什么叫请求参数分清楚,也就能理解@PathVariable和@RequestParam[/color]

    我再举个例子,就拿你这个问题在iteye上的地址为例,http://www.iteye.com/problems/101566 这个如果对应sprimgmvc里面,想获取问题编号101566,因为这个地址直接就是请求路径,是一个url,所以代码中用的应该是@PathVariable,如下:
    @RequestMapping(value="/problems/{problemId}")
    public String showProblem(@PathVariable int problemId){}

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 在更新角色衣服索引后,Sprite 并未正确显示更新的效果该如何去解决orz(标签-c#)
  • ¥15 VAE代码如何画混淆矩阵
  • ¥15 求遗传算法GAMS代码
  • ¥15 雄安新区高光谱数据集的下载网址打不开
  • ¥66 android运行时native和graphics内存详细信息获取
  • ¥100 求一个c#通过CH341读取数据的Demo,能够读取指定地址值的功能
  • ¥15 rk3566 Android11 USB摄像头 微信
  • ¥15 torch框架下的强化学习DQN训练奖励值浮动过低,希望指导如何调整
  • ¥35 西门子博图v16安装密钥提示CryptAcquireContext MS_DEF_PROV Error of containger opening
  • ¥15 mes系统扫码追溯功能
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部