方法request.getRequestURI()返回带有上下文路径的URI。
例如,如果应用程序的基URL是http://localhost:8080/myapp/
(即上下文路径是myapp),并且我为http://localhost:8080/myapp/secure/users
调用request.getRequestURI()
,它将返回/myapp/secure/users
。
有没有办法只得到这个部分的/secure/users
,也就是没有上下文路径的URI?
发布于 2010-11-25 22:47:30
如果您在一个被映射到一个前缀模式(如/foo/*
)上的front contoller servlet中,那么您可以只使用HttpServletRequest#getPathInfo()
。
String pathInfo = request.getPathInfo();
// ...
假设您的示例中的servlet被映射到/secure/*
上,那么这将返回/users
,这将是典型的前端控制器servlet中唯一感兴趣的信息。
但是,如果servlet被映射到后缀模式,比如*.foo
(然而,您的URL示例并没有表明是这种情况),或者当您实际在一个过滤器中时(当需要调用的servlet还没有确定,所以getPathInfo()
可以返回null
),那么您最好的选择是使用通常的String
方法,根据上下文路径的长度自己子串请求URI:
HttpServletRequest request = (HttpServletRequest) req;
String path = request.getRequestURI().substring(request.getContextPath().length());
// ...
发布于 2010-11-25 22:34:07
request.getRequestURI().substring(request.getContextPath().length())
发布于 2014-07-11 21:25:29
使用Spring,您可以做到:
String path = new UrlPathHelper().getPathWithinApplication(request);
https://stackoverflow.com/questions/4278083
复制相似问题