小编给大家分享一下spring mvc中@PathVariable / 带斜杠方式获取的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
遇上这个问题,百度google了一下,抄袭里面的内容,可以实现,在此备忘
@RequestMapping(value = "/download/{value1}/**", method = RequestMethod.GET) public void getValue(@PathVariable String value1, HttpServletRequest request) throws CommonException { String value = extractPathFromPattern(request); }
private String extractPathFromPattern(final HttpServletRequest request) { String path = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); String bestMatchPattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); return new AntPathMatcher().extractPathWithinPattern(bestMatchPattern, path); }
请求地址/username/resourceUrl/methodName,其中username可能有也可能没有,resourceUrl中会带/,这个时候要使用@PathVariable,不能正确匹配controller
把resourceUrl处理成一个不带/的参数即可
1、约定好/替换方案,比如请求方把/全部替换为--
2、通过url编码解码处理 / 经过编码变成%2F 把resourceUrl编码后,这个时候发现还是不能请求到正确的方法,因为到spring时已经自动解码了。可以把%2F再编一次码变成%252F。%编码后是25
/** */abc/xiaoming/h6/user.json/get */ @ResponseBody @RequestMapping(method=RequestMethod.POST ,value="/abc/{username}/{resourceUrl}/{methodName}") public String dubboMock(HttpServletResponse response,@PathVariable String username,@PathVariable String resourceUrl,@PathVariable String methodName){ }
3、放弃使用PathVariable,手动去处理
/** */abc/xiaoming/h6/user.json/get */ @ResponseBody @RequestMapping(method=RequestMethod.POST ,value="/abc/**") public String dubboMock(HttpServletResponse response,HttpServletResponse request){ String url = request.getRequestURI(); //处理url }
以上是“spring mvc中@PathVariable / 带斜杠方式获取的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。