0 0

springmvc中@PathVariable和@RequestParam的区别0

我的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){}
这个好像有问题。求解
2014年5月25日 10:13

3个答案 按时间排序 按投票排序

0 0

采纳的答案

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){}

2014年5月26日 10:29
0 0

顾名思义, @PathVariable和@RequestParam,分别是从路径里面去获取变量,也就是把路径当做变量,后者是从请求里面获取参数。

从你的请求来看:

/Springmvc/user/page.do?pageSize=3&pageNow=2

pageSize和pageNow应该是属于参数而不是路径,所以应该添加@RequestParam的注解。

如果做成如下URL,则可以使用@PathVariable

/Springmvc/user/page/2/3.do

但这样的话语义就不明确的,所以一般来说分页参数都用参数传递。

2014年5月25日 11:39
0 0

两者的作用都是将request里的参数的值绑定到contorl里的方法参数里的,区别在于,url不同

@PathVariable的url是这样的:http://host:port/.../path/参数值

@RequestMapping("/bookings/{booking}")
public String getBooking(@PathVariable Long booking) {

}


而@RequestParam的url是这样的:http://host:port/.../path?参数名=参数值

@RequestMapping(method = RequestMethod.GET)
    public String setupForm(@RequestParam("petId") int petId, ModelMap model) {
        Pet pet = this.clinic.loadPet(petId);
        model.addAttribute("pet", pet);
        return "petForm";

    }

2014年5月25日 11:07

相关推荐

    SpringMVC@RequestMapping(重点)@RequestParam@PathVariable示例

    SpringMVC@RequestMapping(重点)@RequestParam@PathVariable示例

    springmvc 参数绑定例子

    springmvc 参数绑定例子,@RequestParam @CookieValue @PathVariable @ModelAttribute

    SpringMvc接收前端数据的几种方式.md

    springmvc接收数据的几种方式,根据前端传递的数据类型判断用怎样的方式去接收。 @PathVariable、@RequestParam 和 @RequestBody 的使用场景。在不同情况下如何接收,以及他们之间的区别。

    Spring注解 - 52注解 - 原稿笔记

    在火狐中显示可能会有问题,大家都是程序员,改个参数就好啦 注解包含: 拦截器 , 过滤器 , 序列化 , @After , @AfterReturning , @AfterThrowing , @annotation , @Around , @Aspect , @Autowired , @Bean , @Before ,...

    Restful接口案例及测试

    基于SpringMvc的restful源码及测试代码,代码为maven结构,集成springmvc、mybatis、log4j2技术。测试@PathVariable、@RequestParam、@RequestBody和没有标注的简单参数接收等get、post两种形式的服务及其测试。

    javasnmp源码-java_review:复习资料

    @RequestParam,@PathParam,@PathVariable等注解区别 ​ BeanFactory和FactoryBean区别 ​ Spring事务配置 ​ SpringBoot面试题 ​ ​ ​ Java相关 三大特性:封装、继承、多态 ​ 抽象类和接口区别 ​ ...

    SpringMVC【入门】篇

    SSM三部曲: 如果你读完这篇文章,恭喜你!你的spring入门了! 如果你读完这篇文章,恭喜你!你的Mybatis入门了! 文章目录SSM三部曲:...==@RequestParam()====@RequestBody()====@PathVariable()====HiddenHttpM

    javaweb投票系统源码-java-project2:在线投票:springmvc+jdbc+jsp+mysql

    ,在控制器方法中使用@PathVariable) 可以改进的地方(为什么不改?因为懒): 1.本来应该分为管理员和用户两种角色的,可以通过权限控制(shiro)区别开,但是我懒,于是写在一起了。 2.管理投票的update没有写,懒得想...

    sample-springmvc

    样本SpringMVC Spring MVC表单-验证,数据绑定,验证Spring注释-@ RequestParam,@ PathVariable,@ ModelAttribute,@ SessionAttributes Spring安全Spring国际化Spring异常处理Spring基本REST服务用户-hsetpaing...

    SSM笔记-SpringMVC REST风格、基本标签初识

    SSM笔记-SpringMVC REST风格初识、RequestMapping/PathVariable/RequestParam/RequestHeader/CookieValue基本使用方法

    SpringMVC示例

    本次实践内容包括RequestMapping关键字修饰类和方法(请求方式、请求参数&请求头、Ant风格路径)、PathVariable注解、HiddenHttpMethodFilter 过滤器(将Get请求转换成PUT、DELETE请求)、 RequestParam 注解、...

    SpringMVC Employee Demo

    内容:本次实践内容包括RequestMapping关键字修饰类和方法(请求方式、请求参数&请求头、Ant风格路径)、PathVariable注解、HiddenHttpMethodFilter 过滤器(将Get请求转换成PUT、DELETE请求)、RequestParam 注解、...

    spring mvc 注解

    SpringMVC 采用了松散耦合可插拔组件结构,更具扩展性和灵活性,开发 Web 应用流程也非常简单,越来越多的大公司开始使用 SpringMVC 作为开发框架。 核心内容: 1. RequestMapping 注解 2. Controller 注解 3. ...

Global site tag (gtag.js) - Google Analytics