springmvc中@PathVariable和@RequestParam的区别
2016-02-16 15:44
399 查看
我的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){}
相关文章推荐
- spring 4.0.6 + mybatis 3.2.5 + mybatis-spring 1.2.3 构造多个数据源的配置
- Eclipse安装颜色主题,个性化你的IDE,让你的IDE焕然一新
- java post raw 的示例
- 关于java堆内存溢出的几种情况
- 统计java代码行数和jar包中*.class代码的行数
- 二叉树的增、删、改、查(java实现)
- java的xpath语法
- Java正则表达式详解
- java常用算法之最长回文子串(Longest Palindromic Substring)
- 通过Junit和Spring-Test测试SpringMVC的web应用
- Java注解全面解析
- Java并发编程:Lock
- Spring源码学习之BeanFactory体系结构
- Java Socket超时浅析
- Eclipse中Build Workspace 优化
- Java正则表达式
- Eclipse颜色主题插件:Eclipse Color Theme
- Java常用工具类
- Java-强引用、软引用、弱引用、虚引用详解
- java web点击链接用js判断用户是否已经登录 (js获取session及判断是否为空)