Главная > Программирования сетевых взаимодействий в 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, где выделенным шрифтом показан код, созданный самостоятельно, а обычным шрифтом код, сгенерированный средой разработки автоматически.

Categories

1
email@scask.ru