Java中规范化URL三种方式
统一资源定位器 (URL)是 Web 开发的重要组成部分,因为它们有助于定位和获取Internet上的资源。然而,URL 可能不一致或格式不正确;这可能会导致加工和获取所需材料出现问题。
URL规范化将给定的数据转换为规范形式,确保一致性并促进可操作性。
在本教程中,我们将研究在 Java 中标准化 URL 的不同技术。
手动标准化
执行手动标准化涉及应用自定义逻辑来标准化 URL。 此过程包括删除无关元素,例如不必要的查询参数和片段标识符,以将 URL 提炼为其基本核心。假设我们有以下 URL:
https://www.example.com:8080/path/to/resource?param1=value1&m2=value2fragment
规范化的 URL 应如下所示:
https://www.example.com:8080/path/to/resource
1、使用 Apache Commons Validator
Apache Commons Validator 库中的 UrlValidator 类是一种用于验证和规范化 URL 的便捷验证方法。首先,我们应该确保我们的项目包含 Apache Commons Validator依赖项,如下所示:
<dependency> |
现在,我们准备实现一个简单的 Java 代码示例:
String originalUrl = "https://www.example.com:8080/path/to/resource?param1=value1¶m2=value2fragment"; |
在这里,我们首先从 UrlValidator 实例化一个对象。稍后,我们使用isValid()方法来确定原始 URL 是否符合前面提到的验证规则。
如果 URL 被证明是合法的,我们会手动对其进行标准化并删除查询参数和片段,尤其是“?”之后的所有内容。最后,我们使用assertEquals()方法来验证expectedNormalizedUrl和normalizedUrl的等价性。
2、利用Java的URI类
在 java.net 包中建立 Java URI类提供了管理 URI 的其他功能,包括规范化。 让我们看一个简单的例子:
@Test |
在此测试中,我们将originalUrl传递给URI对象,并通过提取和重新组装特定组件(例如方案、权限和路径)来派生规范化的URI 。
3、使用正则表达式
正则表达式是 Java 中 URL 规范化的一种非常有用的机制。它们使您能够指定许多与 URL 匹配的模式和转换,并根据您的需要进行更改。这是一个简单的代码示例:
@Test |
在上面的代码示例中,我们首先创建一个与URL 的方案、域和路径组件相匹配的正则表达式模式。然后,我们将此模式转换为表示正则表达式的Pattern对象。此外,我们使用Matcher将原始 URL 与给定模式进行匹配。
此外,我们利用matcher.find()方法来查找输入序列中与 regex 定义的模式匹配的下一个子序列。如果matcher.find()方法返回 true,则matcher.group(1)会取出与regex匹配的子字符串。在这种情况下,它专门捕获正则表达式中第一个捕获组的内容(用括号表示),这被认为是规范化的 URL。
结论
总之,我们探索了几种方法,例如手动规范化、Apache Commons Validator 库、Java 的 URI 类以及 Java 中 URL 规范化的正则表达式。