자바에서 가끔 URL 유효성 검사가 필요한 경우가 있다.
이러한 경우에 사용할 수 있는 방법 중 하나가 UrlValidator 를 사용하는 방법이다.
UrlValidator에 대해 알아보자
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.7</version>
</dependency>
compile 'commons-validator:commons-validator:1.7'
UrlValidator urlValidator = new UrlValidator();
// true
System.out.println(urlValidator.isValid("ftp://example.com/"));
System.out.println(urlValidator.isValid("http://example.com/"));
System.out.println(urlValidator.isValid("https://example.com/"));
System.out.println(urlValidator.isValid("http://example.com/test/%ED%95%A8%EC%88%98_is_url()"));
// false
System.out.println(urlValidator.isValid("example.com"));
System.out.println(urlValidator.isValid("ldap://example.com/"));
System.out.println(urlValidator.isValid("telnet://192.0.2.16:80/"));
System.out.println(urlValidator.isValid("http://example.com/wiki/함수_is_url()"));
System.out.println(urlValidator.isValid("ldap://[2001:db8::7]/c=GB?objectClass?one"));
String[] schemes = {"ftp", "ldap", "telnet"};
UrlValidator urlValidator = new UrlValidator(schemes);
// true
System.out.println(urlValidator.isValid("ftp://example.com/"));
System.out.println(urlValidator.isValid("ldap://example.com/"));
System.out.println(urlValidator.isValid("telnet://192.0.2.16:80/"));
System.out.println(urlValidator.isValid("ldap://[2001:db8::7]/c=GB?objectClass?one") );
// false
System.out.println(urlValidator.isValid("http://example.com/"));
System.out.println(urlValidator.isValid("https://example.com/"));
UrlValidator.getInstnace().isValid("http://example.com");
/**
* scheme이 유효한지 확인한다.
* null 값은 유효하지 않다.
*/
protected boolean isValidScheme(String scheme);
/**
* 권한 형식이 유효한지 확인한다.
* 권한은 호스트 이름과 포트의 조합이며, null 값은 유효하지 않다.
*/
protected boolean isValidAuthority(String authority)
/**
* path가 유효한지 확인한다.
* null 값은 유효하지 않다.
*/
protected boolean isValidPath(String path)
/**
* query가 유효한 포맷인지 확인한다.
* null 값은 유효하지 않다.
*/
protected boolean isValidQuery(String query)
/**
* fragment가 null이거나 허용되어있는지 확인한다.
*/
protected boolean isValidFragment(String fragment)
/**
* target에 token이 등장하는 횟수를 카운트한다.
*/
protected boolean countToken(String token, String target)