Spring MVC获取URL参数及请求参数

只要把什么叫请求路径,什么叫请求参数分清楚,也就能理解@PathVariable和@RequestParam。
注意:代码中的RequestMapping地址是SpringMVC注解匹配的同名称请求,如果在类仅仅是注明 @Controller 那么此RequestMapping下的方法方法将会解析所有传给服务后台的page.do操作;如果声明类前先@Controller 并又注明了一个@RequestMapping,那么本类仅仅对是类声明之前的@RequestMapping的匹配路径有效(详见URL示例3)。
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) {
        ;    //方法体
}
//其它方法定义
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值