Главная > Программирование > Программирования сетевых взаимодействий в Java
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

3. ПРИМЕРЫ ПРИЛОЖЕНИЙ

3.1. Приложение, выполняющее получение содержимого Web-ресурса

Рассмотрим на простом примере создание приложения, реализующего доступ по протоколу HTTP к Web-ресурсу, получение содержимого ресурса по URL и сохранение содержимого ресурса в локальном файле.

Рассмотрим основные функции такого приложения:

1. Реализация графического окна, обеспечивающего пользовательский интерфейс взаимодействия с приложением.

2. Сохранение и выборка индентификаторов ресурсов Интернет в базе данных.

3. Подключение к Web-узлу и получение содержимого ресурса.

4. Сохранение содержимого ресурса в локальном файле данных.

Разработка пользовательского интерфейса

Пользовательский интерфейс приложения включает одно графическое окно, проектирование которого выполнено с использованием дизайнера среды разработки Borland JBulder v. 10. Порядок взаимодействия с приложением следующий. Пользователь вводит в текстовый компонент (textField1) ссылку на Интернет-ресурс. После нажатия кнопки «Save», введенный ресурс сохраняется в БД и одновременно отображается в списке (list1) окна приложения. Далее пользователь выбирает в списке нужный ресурс и кликает на кнопке «Load». Выполняется загрузка содержимого ресурса и сохранение в файле данных в виде кода на языке HTML.

Приведенный ниже код сгенерирован автоматически.

private void jbInit() throws Exception {

    //textField1 - компонент для ввода URL Web-ресурса

    textField1.setText("www.yandex.ru");

    textField1.setBounds(new Rectangle(19, 80, 144, 34));

    this.setLayout(null); this.show();

    this.setSize(400,400);

    //Save - компонент-кнопка для подтверждения записи ресурса в БД

    Save.setLabel("Save");

    Save.setBounds(new Rectangle(54, 127, 87, 28));

    //Обработчик события по нажатию кнопки Save

    Save.addActionListener(new java.awt.event.ActionListener() {

        public void actionPerformed(ActionEvent e) {

            Save_actionPerformed(e);

        }

    });

    //label1 - строка текста в окне

    label1.setText("Введите URL");

    label1.setBounds(new Rectangle(44, 52, 92, 22));

    //list1 - список сохраненных в БД ресурсов Web

    list1.setBounds(new Rectangle(209, 84, 161, 194));

    //Load - компонент-кнопка для подтверждения загрузки ресурса Web

    Load.setLabel("Load");

    Load.setBounds(new Rectangle(243, 292, 90, 33));

    // Обработчик события по нажатию кнопки Load

    Load.addActionListener(new java.awt.event.ActionListener() {

        public void actionPerformed(ActionEvent e) {

            Load_actionPerformed(e);

        }

    });

    //label2 - строка текста в окне

    label2.setText("Список сохраненных ресурсов");

    label2.setBounds(new Rectangle(200, 50, 182, 23));

    //Обработчик события по закрытию окна

    this.addWindowListener(new java.awt.event.WindowAdapter() {

        public void windowClosing(WindowEvent e) {

            this_windowClosing(e);

        }

    });

    this.add(Load, null);

    this.add(textField1, null);

    this.add(Save, null);

    this.add(list1, null);

    this.add(label1, null);

    this.add(label2, null);

}

Взаимодействие с базой данных

Для взаимодействия приложения с БД используется технология JDBC. Создадим метод openDb(), в котором реализуем подключение к БД.

Statement openDb() {

    Statement stm; try {

        //активизируем драйвер БД

        Class theDriver = sun.jdbc.odbc.JdbcOdbcDriver.class;

        //устанавливаем соединение с БД

        Connection myCon = DriverManager.getConnection("jdbc:odbc:html","","");

        stm = myCon.createStatement();

    }

    catch(Exception e) {

        System.err.println("драйвер не найден");

        stm = null;

    }

    return stm;

}

Создадим метод-обработчик события по нажатию на кнопке «Save».

void Save_actionPerformed(ActionEvent e) {

try{

    //читаем индентификатор ресурса из текстового поля

    String url = textField1.getText();

    //добавляем его в список

    list1.add(url);

    //записываем его в БД

    String query = "INSERT INTO url (adres) VALUES ('" + url + "')";

    int x = st.executeUpdate(query);

}

catch (Exception ex) {

    System.out.println("Ошибка подключения к БД ");

}

}

Получение содержимого web-ресурса и сохранение в файле данных Создадим метод-обработчик события по нажатию на кнопке «Load».

void Load_actionPerformed(ActionEvent e) {

//Получаем строку ресурса из списка

String url=list1.getSelectedItem();

try{

    //Разбираем строку по элементам

    StringTokenizer name = new StringTokenizer(url,"/");

    URL myURL = new URL(" http://" + url + "/ ");

    //Создаем буферизованный поток чтения данных из входного потока

    BufferedReader br = new BufferedReader(new InputStreamReader(myURL.openStream()));

    String line;

    //Создаем новый файл данных

    FileWriter fw = new FileWriter(name.nextToken()+".html", false);

    while ((line = br.readLine()) != null){

        //Отображаем на консоли полученные данные

        System.out.println(line);

        //Записываем в файл полученные данные

        fw.write(line);

    }

    //Закрываем файл и входной поток

    fw.close();

    br.close();

}

catch(MalformedURLException me){

    System.err.println("Unknown host: " + me);

    System.exit(0);

}

catch(IOException ioe){

    System.err.println("Input error: " + ioe);

}

catch(NullPointerException o){

    String name=url;

}

}

Полный код приложения приведен в приложении 1, где выделенным шрифтом показан код, созданный самостоятельно, а обычным шрифтом код, сгенерированный средой разработки автоматически.

<< Предыдущий параграф Следующий параграф >>