URL 클래스, URL 클래스의 생성자

CODEDRAGON Development/Java

반응형

 

 

URL 클래스

·       java.net 패키지에 포함되어 있는 클래스

·       URL(Uniform Resource Locator)이란 인터넷에서 접근 가능한 자원의 주소를 표현하는 형식으로 URL을 이용하여 인터넷 상의 다양한 프로토콜과 자원을 표기할 수 있습니다.

·       URL 클래스는 웹 상의 주소를 나타내는 클래스로써 InetAddress클래스보다 확장된 개념으로 네트워크 연결까지 가능합니다. 따라서 URL객체 생성시 잘못된 URL형태를 주었을 때 예외처리를 반드시 해주어야 합니다.

·       URL 클래스는 URL을 추상화하여 만든 클래스로 원격 서버 자원의 결과를 가져옵니다.

·       인터넷상의 자원을 경로로 지정하여 필요한 정보를 추출할 수 있게 해주는 클래스 입니다.(URL클래스를 사용하면 원하는 데이터를 쉽게 얻을 수 있습니다.)

 

 

 

URL 클래스의 생성자

·       URL 클래스는 final 클래스로 되어 있기 때문에 상속하여 사용할 수 없습니다.

·       모든 생성자는 MalformedURLException 예외를 발생하기 때문에 반드시 예외처리를 해야 합니다.

 

생성자

설명

URL(String spec)

·       spec URL로 해석할 수 있는 문자열이어야 합니다.

·       매개변수 spec으로 자원에 대한 URL객체를 생성합니다.

URL(String protocol, String host, int port, String file)

·       protocol host, port file이름이 지정하는 자원에 대한 URL객체를 생성합니다.

·       File path query를 의미합니다.

URL(String protocol, String host,String file)

·       protocol host, file로 해당 자원에 대한 URL객체를 생성합니다.

URL(URL context, String spec)

·       URL 객체 context에 대한 상대 경로가 지정하는 자원에 대한 URL 객체 생성

 

 

문자열을 이용하여 URL 생성하기

생성자 정의

URL클래스의 제일 간단한 형태의 생성자로 단일 인자를 통해 완전한 형식의 URL문자열을 전달받습니다.

public URL(String url) throws MalformedURLException

 

다른 생성자들과 동일하게 new 연산자와 함께 사용하며, 예외를 발생시킬 수 있는데 다음의 코드는 문자열을 이용하여 URL 객체를 생성하고 예외를 처리하는 부분입니다.

try {

URL u = new URL("http://www.kisa.or.kr/");

} catch (MalformedURLException ex) {

System.err.println(ex);

}

 

 

 

URL의 구성요소를 이용하여 URL 생성하기

생성자 정의

프로토콜, 호스트네임, 파일을 각각 지정하여 URL객체를 생성합니다.

public URL(String protocol, String hostname, String file) throws MalformedURLException

 

이 생성자는 포트로 -1을 설정하기 때문에 해당 프로토콜의 기본 포트가 사용되며, 파일 인자는 '/'로 시작해야 하고 경로와 파일 이름, 그리고 선택적으로 부위 지정자를 포함합니다.

아래의 코드는 HTTP프로토콜에 대한 기본 포트인 80번 포트를 사용하는 다음 주소를 가리키는 URL객체를 생성합니다. 파일항목은 앵커태그의 이름을 함께 포함하고 가상머신이 HTTP프로토콜을 지원하지 않는 경우에 예외를 처리하게 됩니다. 하지만 이러한 예외는 실제 상황에서 거의 발생하지 않습니다.

try {

URL u = new URL("http","www.codedragon.org","/about.html#intro");

} catch (MalformedURLException e) {

throw new RuntimeException("shouldn’t happen; all VMs recongize http");

}

 

기본 포트를 사용하지 않는 경우에는 포트를 정수로 명시할 수 있으며 나머지 인자는 동일합니다. 다음 코드에서 명시적으로 8000번 포트로 지정된 다음 주소를 가리키는 URL객체를 생성합니다.

try {

URL u = new URL("http", "www.kisa.or.kr", 8000, "/~doran/gallery/"");

} catch (MalformedURLException ex) {

throw new RuntimeException("shouldn’t happen; all VMs recongize http");

}

 

 

 

상대적인 URL 생성하기

생성자 정의

public URL(URL base, String relative) throws MalformedURLException

 

기반이 되는 URL과 상대적인 URL로부터 완전한 URL 하나를 생성

classlists.html 문서 처리중 전체 URL이 아닌 파일명만 포함한 classlists.html에 대한 링크를 전달받았을 경우에는 부족한 정보를 채우기 위해 해당 링크를 포함하고 있는 페이지의 URL를 사용할 수 있으며 생성자는 다음 주소의 classlists.html문서와 같은 새로운 URL를 생성합니다.

아래 코드에서 u1객체의 경로에서 파일이름이 제거되고 새파일 이름인 classlists.html u2객체를 만들기 위해 추가됩니다. 이 생성자는 같은 디렉토리안에 있는 전체 목록에 대한 루프를 처리할 때 특히 유용하게 사용될 수 있습니다.

첫번째 파일에 대한 URL객체를 생성한 다음, 처음 생성한 URL객체의 파일 이름을 변경하여 나머지 파일에 대한 URL객체를 만드는데 사용할 수 있습니다.

try {

URL u1 = new URL("http://www.codedragon.org/javafaq/index.html");

URL u2 = new URL(u1, "classlists.html");

} catch (MalformedURLException ex) {

System.err.println(ex);

}