java – 如何获取请求URI无上下文路径?

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

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

有没有什么方法,我们可以只获得这部分/安全/用户,即没有上下文路径的URI?

如果你在映射到前缀模式上的前轮廓线servlet内,那么你可以只使用HttpServletRequest#getPathInfo()

String pathInfo = request.getPathInfo();
// ...

假设你的示例中的servlet映射到/ secure,那么这将返回/用户,这将是典型的前控制器servlet中唯一感兴趣的信息。

如果servlet被映射到一个后缀模式(你的URL例子并不表示是这种情况),或者当你实际上在一个过滤器(当被调用的servlet不一定确定时, getPathInfo()可能返回null),那么你最好的打算是根据上下文路径的长度自己使用通常的String方法子串请求URI:

HttpServletRequest request = (HttpServletRequest) req;
String path = request.getRequestURI().substring(request.getContextPath().length());
// ...
http://stackoverflow.com/questions/4278083/how-to-get-request-uri-without-context-path

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 如何获取请求URI无上下文路径?