Java UrlValidator에 대해 알아보자

bloom·2023년 2월 4일
0

자바에서 가끔 URL 유효성 검사가 필요한 경우가 있다.
이러한 경우에 사용할 수 있는 방법 중 하나가 UrlValidator 를 사용하는 방법이다.
UrlValidator에 대해 알아보자

Dependency

  • common-validator 1.4 이후 버전에서 사용할 수 있다.

Maven

<dependency>
  <groupId>commons-validator</groupId>
  <artifactId>commons-validator</artifactId>
  <version>1.7</version>
</dependency>

Gradle

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"));

허용 schemes 설정

  • UrlValidator의 Default schemes 은 http, https, ftp이다.
    UrlValidator 의 파라미터에 허용하고자 하는 schemes 를 설정해서 사용할 수 있다.
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/"));

singleton instance 사용

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)
profile
in spring

0개의 댓글