前言:
目前看官们对“apacheurl中文”可能比较看重,小伙伴们都想要分析一些“apacheurl中文”的相关知识。那么小编也在网上网罗了一些关于“apacheurl中文””的相关知识,希望我们能喜欢,朋友们快快来了解一下吧!概述
URL 代表统一资源定位器,它是网络上唯一资源的地址。
在本教程中,我们将讨论使用 Java 验证 URL。 在现代 Web 开发中,通过应用程序读取、写入或访问 URL 非常常见。 因此,成功的验证可确保 URL 有效且合规。
有不同的库用于验证 URL。 我们将讨论两个类——JDK 中的 java.net.Url 和 Apache Commons 库中的 org.apache.commons.validator.routines.UrlValidator。
使用 JDK 验证 URL
让我们看看如何使用 java.net.URL 类验证 URL:
static boolean isValidURL(String url){ try { new URL(url).toURI(); return true; } catch (MalformedURLException e) { return false; } catch (URISyntaxException e) { return false; } }
在上述方法中,new URL(url).toURI()方法 尝试使用 String 参数创建 URI。 如果传递的字符串不符合 URL 语法,则抛出异常。
内置 URL 类在输入 String 对象中发现格式错误的语法时会引发 MalformedURLException。 当 String 的格式不兼容时,内置类会引发 URISyntaxException。
现在,让我们验证我们的方法:
@Testpublic void testIsValidUrl() { assertFalse(ValidateUrlApplication.isValidURL(" java-%%$^&& iuyi")); assertTrue(ValidateUrlApplication.isValidURL(";));}
执行单元测试,显示绿条通过:
我们必须了解 URL 和 URI 之间的区别。 toURI() 方法在这里很重要,因为它确保任何符合 RC 2396 的 URL 字符串都被转换为 URL。 但是,如果我们使用 new URL(String value),它不能确保创建的 URL 是完全兼容的。
让我们看一个例子,如果我们只使用 new URL(String url),许多不符合要求的 URL 将通过验证:
static boolean isValidUrlByNewURL(String url) { try { // it will check only for scheme and not null input new URL(url); return true; } catch (MalformedURLException e) { return false; }}
让我们看看上述方法如何通过一些测试来验证不同的 URL:
@Testpublic void testIsValidUrlByNewURL() { assertTrue(ValidateUrlApplication.isValidUrlByNewURL(";)); assertTrue(ValidateUrlApplication.isValidUrlByNewURL(" java-%%$^&& iuyi")); assertFalse(ValidateUrlApplication.isValidUrlByNewURL(""));}
执行单元测试,绿条通过
在上述方法中,new URL(url) 只检查有效协议和空字符串作为输入。 因此,如果协议是正确的,即使它不符合 RC 2396,它也会返回一个 URL 对象。
因此,我们必须使用 new URL(url).toURI() 来确保 URL 有效且合规。
使用 Apache Commons 验证 URL
我们需要将 commons-validator 依赖项导入 pom.xml 文件:
<dependency> <groupId>commons-validator</groupId> <artifactId>commons-validator</artifactId> <version>1.7</version> </dependency>
让我们使用这个库中的 UrlValidator 类来验证:
static boolean isValidURLByUrlValidator(String url){ UrlValidator validator = new UrlValidator(); return validator.isValid(url);}
在上述方法中,我们创建了一个 URLValidator,然后使用 isValid() 方法检查 String 参数的 URL 有效性。
让我们检查一下上述方法对于不同输入的行为:
@Testpublic void testIsValidURLByUrlValidator(){ assertFalse(isValidURLByUrlValidator(" java-%%$^&& iuyi")); assertTrue(isValidURLByUrlValidator(";));}
URLValidator 允许我们微调条件以验证 URL 字符串。例如,如果我们使用重载的构造函数 UrlValidator(String[] scheme),它只会为提供的方案列表(http、https、ftp 等)验证 URL。
同样,还有一些其他标志 – ALLOW_2_SLASHES、NO_FRAGMENT 和 ALLOW_ALL_SCHEMES 可以根据要求进行设置。我们可以在官方文档中找到该库提供的所有选项的详细信息。
结论
在本文中,我们学习了两种不同的方法来验证 URL。我们还讨论了 URL(String url) 和 URL.toURI() 之间的区别。
如果我们只需要验证协议和非空字符串,那么我们可以使用 URL(String url) 构造函数。但是,当我们必须验证并通过合规性检查时,我们需要使用 URL(url).to URI()。
此外,如果我们添加 Apache Commons 依赖项,我们可以使用 URLValidator 类来执行验证,并且该类中还有其他可用选项来微调验证规则。
标签: #apacheurl中文