English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 튜토리얼

Java 흐름 제어

Java 배열

Java 객체 지향(I)

Java 객체 지향(II)

Java 객체 지향(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map 집합

Java Set 집합

Java 입력 출력(I/O)

Java Reader/Writer

Java 다른 주제

Java URL 처리

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 요소 위치.

URL 클래스 메서드

java.net 패키지에서 URL 클래스가 정의되어 있으며, 이 클래스는 URL에 관련된 내용을 처리합니다. URL 클래스의 생성 및 사용에 대해 각각 설명하겠습니다.

java.net.URL 제공하는 다양한 URL 구성 방식을 통해 자원을 얻을 수 있습니다.

순번메서드 설명
1public URL(String protocol, String host, int port, String file) throws MalformedURLException.
通過給定的參數(協議、主機名、端口號、文件名)創建URL。
2public URL(String protocol, String host, String file) throws MalformedURLException
使用指定的協議、主機名、文件名創建URL,端口使用協議的默認端口。
3public URL(String url) throws MalformedURLException
通過給定的URL字符串創建URL
4public URL(URL context, String url) throws MalformedURLException
使用基地址和相對URL創建

URL類中包含了很多方法用於訪問URL的各個部分,具體方法及描述如下:

순번메서드 설명
1public String getPath()
返回URL路徑部分。
2public String getQuery()
返回URL查詢部分。
3public String getAuthority()
獲取此 URL 的授權部分。
4public int getPort()
返回URL端口部分
5public int getDefaultPort()
返回協議的默認端口号。
6public String getProtocol()
返回URL的協議
7public String getHost()
返回URL的主機
8public String getFile()
返回URL文件名部分
9public String getRef()
獲取此 URL 的鍵點(也稱為"引用")。
10public 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

URLConnections 클래스 메서드

openConnection()는 java.net.URLConnection을 반환합니다.

예를 들어:

  • 만약 HTTP 프로토콜의 URL에 연결된 경우, openConnection() 메서드는 HttpURLConnection 객체를 반환합니다.

  • 만약 연결된 URL이 JAR 파일이면, openConnection() 메서드는 JarURLConnection 객체를 반환합니다.

  • 等等...

URLConnection 메서드 목록 다음과 같습니다:

순번메서드 설명
1getContent()
URL 링크 내용 검색
2getContent(Class[] classes)
URL 링크 내용 검색
3getContentEncoding()
헤더 content 반환-encoding 필드 값。
4getContentLength()
헤더 content 반환-length 필드 값
5getContentType()
헤더 content 반환-type 필드 값
6getLastModified()
返回头部last-modified字段值。
7long getExpiration()
返回头部expires字段值。
8long getIfModifiedSince()
返回对象的ifModifiedSince字段值。
9public void setDoInput(boolean input)
URL连接可用于输入和/或输出。如果打算使用URL连接进行输入,则将DoInput标志设置为true;如果不打算使用,则设置为false。默认值为true。
10public void setDoOutput(boolean output)
URL连接可用于输入和/或输出。如果打算使用URL连接进行输出,则将DoOutput标志设置为true;如果不打算使用,则设置为false。默认值为false。
11public InputStream getInputStream() throws IOException
返回URL的输入流,用于读取资源
12public OutputStream getOutputStream() throws IOException
返回URL的输出流,用于写入资源。
13public URL getURL()
返回URLConnection对象连接的URL

在线示例

以下示例中URL采用了HTTP 协议。openConnection 返回HttpURLConnection对象。

URLConnDemo.java

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 내용.....