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

Обработка URL в Java

URL (Uniform Resource Locator) 中文名ется единым идентификатором ресурса, иногда также называется веб-адресом. Это указывает на ресурсы в Интернете, такие как веб-страницы или адреса FTP.

В этой главе мы рассмотрим, как Java обрабатывает URL. URL можно разделить на несколько частей.

protocol://host:port/path?query#fragment

protocol(протокол) может быть HTTP, HTTPS, FTP и File, port - номер порта, path - путь к файлу и имя файла.

Пример URL для протокола HTTP:

http://ru.oldtoolbag.com/index.html?language=cn#j2se

Анализ URL:

  • Протокол (protocol):http

  • Хост (host:port):ru.oldtoolbag.com

  • Номер порта (port): 80, в данном примере URL не указан порт, так как порт по умолчанию для протокола HTTP составляет 80.

  • Путь к файлу (path):/index.html

  • Параметры запроса (query):language=cn

  • Определение позиции (fragment):j2se, определение позиции HTML элемента с атрибутом id равным j2se.

Методы класса URL

В пакете java.net определен класс URL, который используется для обработки информации о URL. В следующем разделе мы рассмотрим создание и использование класса URL.

java.net.URL предоставляет различные методы для создания URL и позволяет извлекать ресурсы с помощью java.net.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 и запускаем клиент для доступа к ресурсам.

在线示例

Следующий пример демонстрирует использование класса URL из пакета java.net для получения различных частей URL:

import java.net.*;
import java.io.*;
 
public class URLDemo
{
   public static void main(String [] args)
   {
      try
      {
         URL url = new URL("http://ru.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("Port: " + url.getPort());
         System.out.println("Default port: " + url.getDefaultPort());
         System.out.println("Параметры запроса: " + url.getQuery());
         System.out.println("Местоположение: " + url.getRef());
      catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

Результат компиляции и выполнения примера выше таков:

URL: http://ru.oldtoolbag.com/index.html?language=cn#j2se
Протокол: http
Информация о проверке: ru.oldtoolbag.com
Имя файла и параметры запроса: /index.html?language=cn
Имя хоста: ru.oldtoolbag.com
Путь: /index.html
Port: -1
Default port: 80
Параметры запроса: language=cn
Местоположение: j2se

Методы класса URLConnections

Метод openConnection() возвращает объект java.net.URLConnection.

Например:

  • Если URL подключен по протоколу HTTP, метод openConnection() вернет объект HttpURLConnection.

  • Если URL, к которому вы подключены, является файлом JAR, метод openConnection() вернет объект JarURLConnection.

  • и т.д...

Список методов класса URLConnection:

НомерОписание метода
1Object getContent()
Искать содержимое ссылки URL
2Object getContent(Class[] classes)
Искать содержимое ссылки URL
3String getContentEncoding()
Возвратить значение поля 'content-encoding' заголовка.
4int getContentLength()
Возвратить значение поля 'content-length' заголовка.
5String getContentType()
Возвратить значение поля 'content-type' заголовка.
6int getLastModified()
Возвратить значение поля '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://ru.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://ru.oldtoolbag.com) в формате HTML.....