java - 计算 servlet 内的相对路径?

标签 java servlets relative-path servlet-filters

我想创建一个 servlet 过滤器来计算任何给定 servlet 请求的根 servlet 的相对 URL 路径。

因此,对于绑定(bind)到 http://somedomain/context/ 的 servlet:

http://somedomain/context/path1/path2 的请求将返回 ..

http://somedomain/context/path1/path2/path3 的请求将返回 ../..

有人知道一种可靠的方法吗?

TIA

最佳答案

使用新的 java 文件系统实用程序 (1.7),Path relativize(Path) 方法应该可以工作。来自 the Path Operations Tutorial .


Path p1 = Paths.get("joe");
Path p2 = Paths.get("sally");

在没有任何其他信息的情况下,假设 joe 和 sally 是 sibling ,这意味着节点位于树结构中的同一级别。要从 joe 导航到 sally,您需要首先向上导航一级到父节点,然后向下导航到 sally:

// Result is ../sally
Path p1_to_p2 = p1.relativize(p2);
// Result is ../joe
Path p2_to_p1 = p2.relativize(p1);

现在,这样的技术是否可取,我将留给其他人评论。

请注意,路径不需要存在于磁盘上,并且您还可以声明具有固定根的 Path,因此类似于 new Path("/servlet/subdir/subdir2") 和像 new Path("/servlet") 这样的 Path 应该 relativize(...)路径就像新路径(“../..”)。`

关于java - 计算 servlet 内的相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10851892/

相关文章:

编程到接口(interface)的Java单例枚举?

java - 如何通过Android应用程序过滤蓝牙标签

java - 在透明窗口上绘制不透明内容

java - 如何通过 ThreadId 检测线程结束?

java - 如何使用Servlet向DOM添加隐藏属性

java - 在 Volley 中更新 UI 的最有效方法是什么

Spring 4 websocket + Tomcat 7.54 异步支持不工作

c - 获得规范化路径的安全跨平台功能

enterprise-library - 使用安全应用程序 block 时到 AzMan XML 存储的相对连接字符串

java - 在服务器上的 Applet 中使用 OutputFileStream ("test.abc")正在浏览器的文件夹中创建一个新文件