• springmvc中@PathVariable和@RequestParam的区别


    顾名思义, @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){} 

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

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

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

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


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

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

  • 相关阅读:
    SpringBoot 添加JSP支持
    SpringBoot的过滤器和拦截器和全局异常处理
    SpringBoot日志配置-logback和log4j2
    SpringBoot使用thymeleaf模板
    乐观锁与悲观锁
    js中的val extinner 的区别
    centos7安装最新版node和npm
    ES2020,你需要知道的一切内容!
    U盘弹出文件或目录损坏且无法读取实测解决教程
    MySQL远程连接丢失问题解决方法
  • 原文地址:https://www.cnblogs.com/shanheyongmu/p/5944750.html
Copyright © 2020-2023  润新知