English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
URL(Uniform Resource Locator)의 중국어 이름은 통일 자원 위치이며, 때로는 웹 주소라고도 합니다. 인터넷 상의 자원, 예를 들어 웹 페이지나 FTP 주소를 나타냅니다.
이 장에서는 Java가 URL을 어떻게 처리하는지 설명하겠습니다. URL은 다음과 같은 몇 가지 부분으로 나눌 수 있습니다.
protocol://host:port/path?query#fragment
protocol(프로토콜)은 HTTP, HTTPS, FTP, File이며, port는 포트 번호이고, path는 파일 경로 및 파일 이름입니다.
HTTP 프로토콜의 URL 예제는 다음과 같습니다:
http://ko.oldtoolbag.com/index.html?language=cn#j2se
URL 해석:
프로토콜(protocol):http
호스트(host:port):ko.oldtoolbag.com
포트 번호(port): 80, 위 URL 예제는 포트를 지정하지 않았으며, 이는 HTTP 프로토콜의 기본 포트 번호가 80。
파일 경로(path):/index.html
요청 매개변수(query):language=cn
위치 위치(fragment):j2se, 웹 페이지에서 id 속성이 j인 위치로 이동.2se의 HTML 요소 위치.
java.net 패키지에서 URL 클래스가 정의되어 있으며, 이 클래스는 URL에 관련된 내용을 처리합니다. URL 클래스의 생성 및 사용에 대해 각각 설명하겠습니다.
java.net.URL 제공하는 다양한 URL 구성 방식을 통해 자원을 얻을 수 있습니다.
순번 | 메서드 설명 |
---|---|
1 | public URL(String protocol, String host, int port, String file) throws MalformedURLException. 通過給定的參數(協議、主機名、端口號、文件名)創建URL。 |
2 | public URL(String protocol, String host, String file) throws MalformedURLException 使用指定的協議、主機名、文件名創建URL,端口使用協議的默認端口。 |
3 | public URL(String url) throws MalformedURLException 通過給定的URL字符串創建URL |
4 | public URL(URL context, String url) throws MalformedURLException 使用基地址和相對URL創建 |
URL類中包含了很多方法用於訪問URL的各個部分,具體方法及描述如下:
순번 | 메서드 설명 |
---|---|
1 | public String getPath() 返回URL路徑部分。 |
2 | public String getQuery() 返回URL查詢部分。 |
3 | public String getAuthority() 獲取此 URL 的授權部分。 |
4 | public int getPort() 返回URL端口部分 |
5 | public int getDefaultPort() 返回協議的默認端口号。 |
6 | public String getProtocol() 返回URL的協議 |
7 | public String getHost() 返回URL的主機 |
8 | public String getFile() 返回URL文件名部分 |
9 | public String getRef() 獲取此 URL 的鍵點(也稱為"引用")。 |
10 | public URLConnection openConnection() throws IOException 打開一個URL連接,並運行客戶端訪問資源。 |
以上示例演示了使用java.net的URL類獲取URL的各個部分參數:
import java.net.*; import java.io.*; public class URLDemo { public static void main(String [] args) { try { URL url = new URL("http://ko.oldtoolbag.com/index.html?language=cn#j2se"); System.out.println("URL 為:" + url.toString()); System.out.println("協議為:" + url.getProtocol()); System.out.println("��證信息:" + url.getAuthority()); System.out.println("파일 이름 및 요청 매개변수: "); + url.getFile()); System.out.println("호스트 이름: "); + url.getHost()); System.out.println("경로: "); + url.getPath()); System.out.println("포트: "); + url.getPort()); System.out.println("기본 포트: "); + url.getDefaultPort()); System.out.println("요청 매개변수: "); + url.getQuery()); System.out.println("위치 정하기: "); + url.getRef()); } catch (IOException e) { e.printStackTrace(); } } }
위 예제의 컴파일 및 실행 결과는 다음과 같습니다:
URL은: http://ko.oldtoolbag.com/index.html?language=cn#j2se 프로토콜은: http 인증 정보: ko.oldtoolbag.com 파일 이름 및 요청 매개변수:/index.html?language=cn 호스트 이름: ko.oldtoolbag.com 경로:/index.html 포트:-1 기본 포트:80 요청 매개변수: language=cn 위치 정하기: j2se
openConnection()는 java.net.URLConnection을 반환합니다.
예를 들어:
만약 HTTP 프로토콜의 URL에 연결된 경우, openConnection() 메서드는 HttpURLConnection 객체를 반환합니다.
만약 연결된 URL이 JAR 파일이면, openConnection() 메서드는 JarURLConnection 객체를 반환합니다.
等等...
URLConnection 메서드 목록 다음과 같습니다:
순번 | 메서드 설명 |
---|---|
1 | getContent() URL 링크 내용 검색 |
2 | getContent(Class[] classes) URL 링크 내용 검색 |
3 | getContentEncoding() 헤더 content 반환-encoding 필드 값。 |
4 | getContentLength() 헤더 content 반환-length 필드 값 |
5 | getContentType() 헤더 content 반환-type 필드 값 |
6 | getLastModified() 返回头部last-modified字段值。 |
7 | long getExpiration() 返回头部expires字段值。 |
8 | long getIfModifiedSince() 返回对象的ifModifiedSince字段值。 |
9 | public void setDoInput(boolean input) URL连接可用于输入和/或输出。如果打算使用URL连接进行输入,则将DoInput标志设置为true;如果不打算使用,则设置为false。默认值为true。 |
10 | public void setDoOutput(boolean output) URL连接可用于输入和/或输出。如果打算使用URL连接进行输出,则将DoOutput标志设置为true;如果不打算使用,则设置为false。默认值为false。 |
11 | public InputStream getInputStream() throws IOException 返回URL的输入流,用于读取资源 |
12 | public OutputStream getOutputStream() throws IOException 返回URL的输出流,用于写入资源。 |
13 | public URL getURL() 返回URLConnection对象连接的URL |
以下示例中URL采用了HTTP 协议。openConnection 返回HttpURLConnection对象。
import java.net.*; import java.io.*; public class URLConnDemo { public static void main(String [] args) { try { URL url = new URL("http://ko.oldtoolbag.com"); URLConnection urlConnection = url.openConnection(); HttpURLConnection connection = null; if(urlConnection instanceof HttpURLConnection) { connection = (HttpURLConnection) urlConnection; } else { System.out.println("URL 주소를 입력하세요"); return; } BufferedReader in = new BufferedReader( new InputStreamReader(connection.getInputStream())); String urlString = ""; String current; while ((current = in.readLine()) != null) { urlString += current; } System.out.println(urlString); } catch (IOException e) { e.printStackTrace(); } } }
위 예제 컴파일 실행 결과는 다음과 같습니다:
$ javac URLConnDemo.java $ java URLConnDemo .....이곳에서 기본 강의 사이트 메인 페이지(http://ko.oldtoolbag.com)의 HTML 내용.....