1.问题:匹配上url中的反斜杠"/"(%2f)
在springmvc 里,我要匹配:
http://yourdomain.com/start/xx/xx/xx/end
@RequestMapping("/{start}/**/{end}")
public String vv(@PathVariable("start") String start, @PathVariable("end") String end){
}
复制代码
然而,我需要获得url中间的数据:
@RequestMapping("/{start}/{mid:.*}/{end}")
复制代码
但是却无法捕获。也就是说,变量中不能带有"/"的。
2.我的解决方案1.'/'有限如:/123/456/789/1011/1213/123/456/789/1011/123/456/789
@RequestMapping(value={"/{start}/{mid1}/{mid2}/{mid3}/{end}",
"/{start}/{mid1.*}{mid2}/{mid3}/{end}",
"/{start}/{mid1.*}{mid2}{mid3}/{end}"}
)
public String vv(@PathVariable("start") String start,
@PathVariable("mid1") String mid1,
@PathVariable("mid2") String mid2,
@PathVariable("mid3") String mid3,
@PathVariable("end") String end){
if(StringUtils.isNotBlank(mid2){
mid1 +="/"+mid2;
}
if(StringUtils.isNotBlank(mid3){
mid1 +="/"+mid3;
}
//可以使用mid1了
......
}
复制代码
{mid1:.*} 是最大匹配url数组里的变量必须相等
2."/" 数量可能非常多如:/search/123/4/5/6/7/4/5/6/5/4/4/5/5/67/ok只能使用 @RequestMapping("/search/**/{end}") 来拦截住请求然后代码里通过
request.getServletPath()
复制代码