对于Spring MVC获取URL参数认识

要把什么叫请求路径,什么叫请求参数分清楚,也就能理解@PathVariable和@RequestParam。
 在此要注意:代码中的RequestMapping地址是SpringMVC注解匹配的同名称请求,如果在类仅仅是注明 @Controller 那么此RequestMapping下的方法将会解析所有传给服务后台的page.do操作;

如果声明类前先@Controller 并又注明了一个@RequestMapping,那么本类仅仅是对类声明之前的@RequestMapping的匹配路径有效。

URL示例1:http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2
可以把这地址分开理解,其中问号前半部分:

http://localhost:8080/Springmvc/user/page.do 这个就是路径,即为请求url;
而问号的后面部分就是请求参数部分,是要向请求路径提交的参数信息,用的就是@RequestParam ,对于这种参数,如果你要用的话,代码应该如下:  

  @RequestMapping(value="/page.do")

    public String page(@RequestParam int pageSize,@RequestParam  int pageNow){

    //方法参数名称必须和URL中参数部分的参数名称对应。

    //方法体

    }

URL示例2:http://www.iteye.com/problems/101566?Key=123
这个URL里面,服务器想获取问题编号101566,因为这个参数直接包含在请求路径部分中,所以代码中用的应该是@PathVariable;对于参数部分Key=123,如果想获取到该参数那么应该用参数获取的注解@RequestParam。实现代码如下:  

  @RequestMapping(value="/problems/{problemId}")

    public String showProblem(@PathVariable int problemId, @RequestParam int Key){

    ;    //方法体

}

URL示例3: http://szkingdom.com/service/callback/8888/1111/1.0.0/3333/1023
该URL中包含有多层级的路径参数,callback是在service后的一级请求地址(目录),callback后的都是数字都是对应服务器要获取的参数,那么获取这些请求路径部分里的参数则应该列顺序表示层次关系,请求的RequestMapping的形式依旧是参照路径样式设置,具体的获取参数方法类如下: 

   @Controller

    @Scope("prototype")

    @RequestMapping("/service")

    public class FrontGateController {

    @RequestMapping(value = { "/callback/{appId}/{chnId}/{chnVer}/{bankId}/{bizId}" }, 

    method = { RequestMethod.POST, RequestMethod.GET }   )

    //注意:编码拦截器 Spring AOP 按照入参顺序取值,请不要修改入参顺序

    public ModelAndView doCallback(

                @PathVariable("appId") String appId,

                @PathVariable("chnId") String chnId,

                @PathVariable("chnVer") String chnVer,

                @PathVariable("bizId") String bizId,

                @PathVariable("bankId") String bankId,

                HttpServletRequest request,

                HttpServletResponse response) {

            ;    //方法体

    }

    //其它方法定义

    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值