首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取没有上下文路径的请求URI?

如何获取没有上下文路径的请求URI?
EN

Stack Overflow用户
提问于 2010-11-25 22:26:28
回答 7查看 276.1K关注 0票数 137

方法request.getRequestURI()返回带有上下文路径的URI。

例如,如果应用程序的基URL是http://localhost:8080/myapp/ (即上下文路径是myapp),并且我为http://localhost:8080/myapp/secure/users调用request.getRequestURI(),它将返回/myapp/secure/users

有没有办法只得到这个部分的/secure/users,也就是没有上下文路径的URI?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-11-25 22:47:30

如果您在一个被映射到一个前缀模式(如/foo/* )上的front contoller servlet中,那么您可以只使用HttpServletRequest#getPathInfo()

代码语言:javascript
复制
String pathInfo = request.getPathInfo();
// ...

假设您的示例中的servlet被映射到/secure/*上,那么这将返回/users,这将是典型的前端控制器servlet中唯一感兴趣的信息。

但是,如果servlet被映射到后缀模式,比如*.foo (然而,您的URL示例并没有表明是这种情况),或者当您实际在一个过滤器中时(当需要调用的servlet还没有确定,所以getPathInfo()可以返回null),那么您最好的选择是使用通常的String方法,根据上下文路径的长度自己子串请求URI:

代码语言:javascript
复制
HttpServletRequest request = (HttpServletRequest) req;
String path = request.getRequestURI().substring(request.getContextPath().length());
// ...
票数 167
EN

Stack Overflow用户

发布于 2010-11-25 22:34:07

代码语言:javascript
复制
request.getRequestURI().substring(request.getContextPath().length())
票数 81
EN

Stack Overflow用户

发布于 2014-07-11 21:25:29

使用Spring,您可以做到:

代码语言:javascript
复制
String path = new UrlPathHelper().getPathWithinApplication(request);
票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4278083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档