Вы находитесь на странице: 1из 1263

ПРОГРАММИРОВАНИЕ

для WEB

Библиотека

профессионала

WEB

PROGRAMMING

MARTY HALL LARRY BROWN

Prentk» Hall PTR, Upper Saddle River, NJ 07458 www.phptr.com

Sun Microsystems

Press

A Prentice Hall Title

ПРОГРАММИРОВАНИЕ

для WEB

Библиотека

профессионала

МАРТИ ХОЛЛ ЛЭРРИ БРАУН

Москва • Санкт-Петербург • Киев

2002

ББК 32.973.26-018.2.75

Х72

УДК 681.3.07

Издательский дом "Вильяме" Зав. редакцией С.Н. Тригуб

Перевод с английского и редакция В.В. Вейшмана

По общим вопросам обращайтесь в Издательский дом "Вильяме" по адресу: info@williamspublishing.com, http://www.williamspublishing.com

Холл, Марти, Браун, Лэрри. Программирование для Web. Библиотека профессионала.: Пер. с англ. — М.: Издательский дом "Вильяме", 2002. — 1264 с.: ил. — Парал. тит. англ.

Х72

ISBN 5-8459-0237-1 (рус.)

В данной книге читатель найдет все необходимые сведения,

позволяющие создавать Web-страницы, включать в них исполняемый код, а также реализовать программы, выполняющиеся на стороне сервера. В ней достаточно полно описа­ ны языковые конструкции, соответствующие спецификации HTML 4.0, приведе­ ны подробные сведения о языке Java, рассматривается создание сервлетов nJSP, обработка XML-документов^ построение программ, выцолняющихся на стороне клиента (аплетов иJavaScript-cцeнapиeв), и многие другие вопросы.

ББК 32.973.26-018.2.75

Все названия программных продуктов являются зарегистрированными торговыми марками со­ ответствующих фирм. Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая фотокопирование и запись на магнитный носитель, если на это нет письменного разреше­ ния издательства Prentice Hall PTR.

Authoiized ti-anslation fiom the English language edition published by Prentice Hall PTR. Copyiight © Sun Microsystem, Inc., 2001. All rights reseiTed. No pait of this book may be reproduced or ti^ansmitted in any foiin or by any means, electionic or mechanical, including photocopying, recording or by any infonnation storage retiieval system, without peiTnission from the Publisher. Russian language edition published by Williams Publishing House according to the Agieement with RM Enterprises International, Copyiight © 2002

ISBN

5-8459-0237-1

(рус.)

© Издательский дом "Вильяме", 2001

ISBN

0-13-089793-0

(англ.)

© Sun Microsystem, Inc., 2001

Оглавление

Оглавление

 

25

ЧАСТЬ I. ЯЗЫК HTML

 

33

Глава 1. Создание web-страниц с помощью HTML 4.0

 

34

Глава 2. Элементы блокового уровня HTML 4.0

 

54

Глава 3. Элементы текстового уровня HTML 4.0

 

82

Глава 4.

110

Глава 5. Каскадные листы стилей

 

136

ЧАСТЬ П. ПРОГРАММИРОВАНИ Е

 

JAVA

177

Глава 6.

Общие сведения о языке Java

 

178

Глава 7.

Объектно-ориентированное программирование на Java

206

Глава 8.

Синтаксис Java

 

252

Глава 9. Аплеты и основные действия с графикой

 

310

Глава 10. Java 2d; графика в Java 2

 

358

Глава 11. События, связанные с мышью и клавиатурой

 

394

Глава 12. Диспетчеры компоновки

 

418

Глава 13. Компоненты awt

454

Глава 14. Основы Swing

542

Глава 15. Расширенные средства Swing

602

Глава 16. Использование потоков

664

Глава 17. Сетевое программирование

718

ЧАСТЬ III. ПРОГРАММЫ,

 

А Глава 18. HTML-формы

 

77 9

780

Глава 19. Java на стороне сервера: сервлеты

 

816

Глава 20. JavaServer Pages

900

Глава 21. Аплеты как интерфейс к программам на стороне сервера

990

Глава 22. JDBC

 

1016

Глава 23. Обработка XML-документов

 

1050

ЧАСТ Ь rv^, JAVASCRIP T

109 9

Глава 24. JavaScript: динамически изменяющиеся Web-страницы

1100

Глава 25. Краткое руководство по JavaScript

 

1172

Содержание

в

Содержание

 

25

ЧАСТЬ 1. ЯЗЫК HTML

33

Глава 1. Создание web-страниц с помощью HTML 4.0

34

1.1. HyperText Markup Language

35

1.2. HTML 4.0 и другие стандарты HTML

37

   

38

38

39

41

1.4. Структура HTML-документа

41

Шаблон HTML-документа

42

Декларация DOCTYPE

43

1.5. информация

Элемент HEAD — высокоуровневая

45

Обязательный элемент в составе HEAD

,

45

Необязательные элементы в составе HEAD

46

1.6. BODY -- основная часть документа

50

Глава 2. Элементы блокового уровня HTML 4.0

54

2.1.

56

2.2.

58

58

59

60

   

61

2.3.

61

Адрес Нумерованные, маркированные списки

61

 

64

65

Списки определений 2.4. Таблицы

66

66

71

73

75

Группировка содержимого таблицы 2.5. Формы

78

2.6. Прочие элементы блокового уровня

78

Глава 3. Элементы текстового уровня HTML 4.0

82

3.1. Физические стили отображения символов

83

3.2. Логические стили отображения символов

88

3.3. Построение гипертекстовых ссылок

90

3.4. Встроенные изображения

94

Содержание

Анимационные GIF-файлы

94

Элемент IMG

94

3.5. Карты изображений на стороне клиента

98

3.6. Включение объектов в документ

101

Встроенные аплеты Встроенные аудио- и видеофрагменты, а также объекты

101

104

в других форматах Управляющие элементы ActiveX

104

106

Бегущая строка 3.7. Управление переводом строк

108

Глава 4. Фреймы

110

4.1. Шаблон документа с фреймами

112

4.2. Разбиение окна броузера на фреймы

113

4.3. Определение содержимого фреймов

118

120

Примеры 4.4. Определение фрейма ддя отображения документа

122

124

Зарезервированные имена фреймов 4.5. Разрешение типичных проблем

125

125

126

126

129

130

Создание пустого фрейма 4.6. Встроенные фреймы

130

Глава 5. Каскадные листы стилей

136

5.1. Правила стилей

138

5.2. Внешние и локальные листы стилей

140

140

Внешние листы стилей Элемент STYLE и листы стилей JavaScript

142

142

Встроенные правила стилей 5.3. Селекторы

143

HTML-элементы

143

144

145

Классы, определяемые пользователем Идентификаторы, определяемые пользователем

146

Псевдоклассы якоря 5.4. Предшествование правил

146

5.5. Свойства шрифтов

147

5.6. Свойства для определения фона и переднего плана

153

5.7. Текстовые свойства

156

5.8. Свойства блоков с обрамлением

159

160

160

162

163

Типы отображения блока 5.9. Изображения и плавающие элементы

163

8

Содержание

5.11.

166

5.12.

166

167

167

168

172

5.13.

176

ЧАСТЬ П. ПРОГРАММИРОВАНИ Е

JAVA

177

Глава 6. Общие сведения о языке Java

178

6.1. Возможности Java

180

Средства сетевого взаимодействия и работа в Web

180

Кроссплатформенная поддержка Java

183

Простота Java

186

Объектно-ориентированные средства Java

186

Стандартные библиотеки Java

187

6.2. Java: мифы и реальность

188

Java предназначен исключительно для Web

189

Кроссплатформенная поддержка Java

189

Простота Java

190

Java — объектно-ориентированный язык (для тех, кто придерживается соответствующего подхода)

191

Java — язык для разработки различных типов программ

191

6.3. Версии Java

192

193

Какой версии отдать предпочтение Основные сведения о Java

 

194

6.4. Начинаем работу

194

Установка Java

195

Инсталляция броузера с поддержкой Java

196

Доступ к документации по Java API

196

Установка интегрированного пакета разработки (необязательное действие)

197

Создание и запуск Java-программы

198

6.5. Несколько простых Java-программ

198

Приложение Hello, World

199

199

Параметры командной строки Аплет Hello, World

200

Параметры, передаваемые аплету

202

Глава 7. Объектно-ориентированное программирование на Java

206

7.1. Переменные экземпляра

207

7.2. Методы

210

7.3. Конструкторы и ссылка this

211

214

Статические инициализационные блоки 7.4. Деструкторы

 

214

7.5. Переопределение

215

7.6. Подготовка классов к повторному использованию

218

9

Содержание

 

7.7.Javadoc

223

Дескрипторы javadoc

224

Параметры командной строки javadoc

227

7.8. Наследование

230

7.9. Интерфейсы и абстрактные классы

233

7.10.

Пакеты, CLASSPATH и JAR-архивы

242

Переменная окружения CLASSPATH

245

7.11.

247

248

249

Глава 8. Синтаксис Java

252

253

255

257

258

258

259

265

 

268

268

268

- Тригонометрические методы

270

Biglnteger и BigDecimal

270

8.5. Ввод и вывод

271

272

273

274

Чтение из стандартного входного потока 8.6. Выполнение программ, отличных от Java

274

8.7. Ссылки

280

282

Соглашения по передаче параметров Оператор instanceof

283

284

285

290

291

292

292

294

8.10.

295

295

295

8.11.

297

8.12.

302

302

Обработка исключения Использование нескольких блоков catch

304

Выражение finally

305

10

Содержание

Использование ключевого слова throws и явная генерация

 

306

307

Необрабатываемые исключения Глава 9. Аплеты и основные действия с графикой

310

9.1. Что такое аплеты

311

312

312

313

314

316

316

317

318

319

325

327

328

9.8. HTML-элемент OBJECT

330

9.9. JaVa Plug-In

332

9.10. Графические приложения

334

9.11. Графические операции

335

336

339

339

340

9.12.

340

Загрузка аплетом изображений, заданных с помощью

 

341

343

345

9.13.

9. J4.

9.15.

347

351

357

Глава 10. Java 2d: графика в Java 2

358

10.1.

Общие сведения о Java 2D

360

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

362

10.2.

365

Отображение форм Классы Shape

366

10.3.

370

370

10.4.

10.5.

10.6.

373

376

378

381

381

11

Содержание

10.7.

386

389

10.8.

Прочие возможности Java 2D

390

Глава 11. События, связанные с мышью и клавиатурой

394

11.1.

396

397

11.2.

11.3.

11.4.

11.5.

11.6.

11.7.

399

400

402

403

409

412

11.8.

"Чертежная доска"

414

Модифицированный вариант "чертежной доски"

416

11.9.

417

12. Диспетчеры компоновки

418

12.

1. Диспетчер компоновки FlowLayout

420

Конструкторы FlowLayout

421

Методы FlowLayout

421

12.2.

Диспетчер компоновки BorderLayout

422

Конструкторы BorderLayout

424

Методы BorderLayout

424

12.3.

Диспетчер компоновки GridLayout

425

Конструкторы GridLayout

425

Методы GridLayout

427

12.4.

Диспетчер компоновки CardLayout

427

Конструкторы CardLayout

431

Методы CardLayout

431

12.5.

Диспетчер компоновки GridBagLayout

432

Объект GridBagConstraints

433

Пример использования GridBagLayout

434

Конструктор GridBagLayout

438

Методы GridBagLayout

438

12.6.

Диспетчер компоновки BoxLayout

439

12.7.

12.8.

442

442

443

444

 

445

448

449

Глава 13. Компоненты awt

454

13.1.

Класс Canvas

456

Создание и использование объектов Canvas

457

Пример компонента, созданного с помощью Canvas

457

12

Содержание

13.2. Класс Component

460

13.3. "Легковесные " компонент ы в Jav a 1.1

466

13.4. Класс Panel

469

Диспетчер компоновки по умолчанию: FlowLayout

469

470

Создание и использование панелей Пример использования Panel для группировки компонентов

470

13.5. Класс Container

472

13.6. Класс Applet

474

13.7. Класс ScrollPane

474

Создание и использование ScrollPane Пример объекта ScrollPane, включающего панель,

474

которая содержит 100 кнопок

474

13.8.

Класс Frame

475

Диспетчер компоновки по умолчанию: BorderLayout

476

Создание и использование объектов Frame

476

Примеры использования объектов Frame

477

Закрытие окон Frame

479

480

Меню Методы класса Frame

481

13.9.

482

483

483

Чтение окна с диска Пример окна Frame, допускающего сохранение на диске

484

13.10.

Класс Dialog

486

 

окна Dialog

487

Пример диалогового окна: подтверждение завершения программы

487

13.11.

Класс FileDialog

489

Пример отобрг1жения файлов с помощью компонента TextAiea

489

13.12.

Класс Window

491

Диспетчер компоновки по умолчанию: BorderLayout

491

Создание и использование объекта Window

491

13.13.

492

493

495

13.14.

Класс Button

496

496

497

498

498

13.15.

Класс Checkbox

501

501

502

Пример создания флгьжков опций Методы Checkbox

503

Поддержка событий Checkbox

503

13.16.

504

504

505

13

Содержание

Методы классов CheckboxGroup и Checkbox Поддержка событий CheckboxGroup

13.17. Элемент Choice

Конструктор

Пример раскрывающегося списка Методы класса Choice Поддержка событий, связанных с объектом Choice

13.18. Элемент List

Конструкторы Примеры элементов List Методы класса List Поддержка событий элемента List

13.19. Класс TextField

Конструкторы Пример создания полей редактирования

Методы TextField Методы класса TextComponent связанных с элементом TextField

Обработка событий,

13.20. Класс TextArea

Конструкторы

Примеры текстовых областей Методы классаTextAiea Поддержка событий TextArea

13.21. Класс Label

Конструкторы Пример использования объектов Label

Методы класса Label Поддержка событий Label

13.22. Полосы прокрутки и линейные регуляторы

Конструкторы

Примеры линейных регуляторов Методы Scrollbar Поддержка событий Scrollbar

13.23. Контекстные меню

Конструкторы

Пример использования раскрывающегося меню Методы класса PopupMenu Поддержка событий, связанных с раскрывающимися меню

Глава 14. Основы Swing

14.1. Общие сведения о Swing

Различия между Swing и AWT

14.2. Компонент JApplet

14.3. Компонент JFrame

14.4. Компонент JLabel

Новые средства: изображения, рамки и HTML-содержимое Конструкторы JLabel

506

506

507

507

507

508

509

510

511

511

512

514

518

519

519

520

520

523

523

523

524

525

526

526

526

527

527

528

530

530

531

532

534

535

536

536

538

539

542

544

544

552

553

555

555

556

14

Содержание

 

Методы JLabel

557

14.5.

Компонент JButton

559

Новые возможности: пиктограммы, выравнивание

и "горячие клавиши"

559

HTML-код для создания надписей на кнопках

560

Конструкторы JButton

561

Методы классов JButton

и AbstractButton

561

14.6.

Компонент JPanel

563

Конструкторы JPanel

564

Новая возможность: обрамление

564

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

564

14.7.

Компонент JSlider

567

Новые возможности: разметка шкалы

568

Конструкторы JSlider

568

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

569

14.8.

Компонент JColorChooser

571

 

572

 

Конструкторы Методы класса JColorChooser

572

14.9.

575

 

Конструктор JInternalFrame

575

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

575

14.10.

КомпонентJOptionPane

578

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

579

14.11.

Компонент JToolBar

583

Конструкторы JToolBar

584

Методы JToolBar

585

14.12.

Компонент JEditorPane

589

 

590

Конструкторы JEditorPane

590

Методы JEditorPane

591

Реализация простого Web-броузера

592

Поддержка HTML и JavaHelp

595

14.13.

Простые Swing-компоненты

595

Компонент JCheckBox

 

595

Компонент JRadioButton

597

Компонент JTextField

598

Компонент JTextArea

598

Компонент JFileChooser

598

Глава 15. Расширенные средства Swing

602

604

15.2. Компонент JList

 

604

JList как фиксированный набор пунктов

605

Компонент JList с изменяемым набором пунктов

609

Использование JList с произвольной моделью данных

612

JList и средства визуализации, определяемые разработчиком

617

15

Содержание

15.3.JTree

621

Простой объект JTree

621

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

625

Обработка событий JTree

625

15.4.JTable

634

Простой способ создания JTable

634

638

643

645

15.5.

649

649

 

651

652

Вывод на печат ь в JD K

1.3

656

15.6.

Потоки Swing

658

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

660

Глава 16. Использование потоков

664

16.1.

666

Выполнение действий в отдельном объекте Thread

666

Выполнение действий в классе, реализующем интерфейс Runnable

668

16.2. Возникновение "гонок"

671

16.3. Синхронизация

673

673

674

Ошибки, допускаемые при использовании синхронизации

675

16.4.

677

16.5.

681

681

682

683

688

16.6.

690

690

690

16.7.

692

Многопотоковая графика и двойная буферизация в теле метода paint

693

696

компонента Рисование за пределами метода paint

696

Переопределение метода update и использование метода

699

703

16.8.

708

16.9.

712

715

Конструктор Методы класса Timer

716

16

Содержание

Глава 17. Сетевое программирование

718

17.1.

720

722

17.2.

Разбор строк с помощью класса StringTokenizer

725

Класс StringTokenizer

726

726

726

727

Пример интерактивной программы разбора Пример клиента, предназначенного

17.3.

728

17.4.

Класс,

731

Класс, предназначенный для получения ресурса по заданному URL

732

733

Выходные данные UrlRetriever

734

17.5.

Класс URL

735

Получение ресурса по указанному URL

735

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

736

17.6.WebClient

738

17.7.

745

747

Пример универсального сервера Взаимодействие NetworkClient и NetworkSei'ver

750

17.8.

Пример простого HTTP-сервера

751

Сервер, выполняющийся в многопотоковом режиме

754

17.9.

RMI: Remote Method Invocation

756

Создание RMTпpилoжeния

757

Простой пример использования RMI

758

762

Сервер, выполняющий численное интегрирование Четыре класса, необходимых для реализации примера

763

Компиляция и запуск примера Конфигурация средств RMI для использования в корпоративной

768

769

772

в корпоративной системе Пример RMI-аплета

774

77 9

Глава 18. HTML-формы

780

18.1. Передача данных с помощью HTML-форм

781

18.2. Элемент FORM

785

790

790

792

792

18.4.

794

Кнопка Submit

795

17

Содержание

18.5.

798

799

 

799

18.6.

18.7.

18.8.

800

802

805

806

IMAGE — стандартные карты изображений на стороне сервера

807

ISMAP — альтернативные карты изображений на стороне сервера

809

18.9.

811

18.10.

18.11.

812

813

Глава 19. Java на стороне сервера: сервлеты

816

19.1.

818

818

19.2.

819

819

819

819

820

820

Программное обеспечение для поддержки сервлетов и JSP

820

Док}т^1ентация,

необходимая для разработки сервлетов и JSP

822

822

822

823

 

823

Компиляция и установка сервлетов Обращения к сервлетг1м

824

19.3.

824

825

Сервлет, генерирующий текстовое сообщение Сервлет, генерирующий HTML-код

826

Простые \пгилиты для создания HTML-кода

828

19.4.

830

19.5.

830

831

832

832

833

833

19.6.

Запрос клиента: данные формы

836

Получение данных формы CGI-программами

836

836

837

Пример получения значений трех параметров Фильтрация данных, полученных в составе запроса

839

19.7.

840

841

18

Содержание

 

Создание таблицы, содержащей полученные поля заголовка

843

Пол я заголовка, определенны е в протокол е HTT P

1.1

845

Передача сжатых Web-страниц

848

19.8. Аналоги стандартных CGI-переменных

 

850

19.9. Ответ сервера: коды состояния

853

 

853

     

855

860

19.10.

Ответ сервлета: поля заголовка

864

 

865

866

 

Web-страниц

871

19.11.

Cookie

880

Преимущества использования cookie

880

Проблемы, возникающие при использовании cookie

882

Средства API, предназначенные для работы с cookie

883

Примеры установки и чтения cookie

886

Вспомогательные средства для работы с cookie

889

Создание cookie с большим временем жизни

890

19.12.

890

891

 

Необходимость поддержки сеанса Модификация URL

 

891

API поддержки сеанса

892

 

896

 

Завершение сеанса Сервлет, реализующий счетчик обращений клиента

897

Глава 20. JavaServer Pages

 

900

20.1. Общие сведения oJSP

 

901

20.2. Преимущества JSP

 

903

 

Преимущества JSP

перед ASP и ColdFusion

903

Преимущества JSP

903

Преимущества JSP

903

Преимущества JSP

перед сервлетами перед SSI

904

Преимущества JSP

перед JavaScript

904

20.3.

Элементы сценариев JSP

 

904

 

905

     

908

910

912

20.4.

Директива page

913

Атрибут import

914

Атрибут сontentType

916

Атрибут isThreadSafe

917

Атрибут session

918

Атрибут buffer

918

Атриб)т autoflush

919

19

Содержание

Атрибут extends

919

Атрибут info

919

Атрибут errorPage

919

Атрибут isErrorPage

920

Атрибут language

920

XML-представление директив

920

20.5.

Включение файлов и аплетов в состав JSP-документов

920

Директива include: включение файлов на этапе преобразования доку­

921

923

Включение файлов Включение аплетов, использующих Java Plug-In

925

Элемент jsp:fallback

929

20.6.

Использование JavaBeans с JSP

932

Использование JavaBeans

933

Пример класса StringBean

935

Установка свойств beans

937

Совместное использование компонентов bean

942

20.7.

Определение новых JSP-дескрипторов

946

Компоненты, предназначенные для создания библиотеки дескрипторов

946

949

953

956

961

964

968

970

20.8.

Интеграция сервлетов и JSP

977

978

Перенаправление запросов Пример: интерактивный агент по обслуживанию туристов

981

Перенаправление запросов JSP-документами

988

Глава 21. Аплеты как интерфейс к программам на стороне сервера

990

21.1. Передача данных с использованием запроса GET

992

21.2. Интерфейс к нескольким поисковым серверам

993

21.3.

997

997

999

21.4. Программа просмотра запросов

1001

21.5. Использование запроса POST

1007

21.6. Аплет, который передает данные методом POST

1009

21.7. Взаимодействие без участия HTTP-сервера

1014

Глава 22. JDBC

1016

22.1.

Основные этапы работы с JDBC

1017

1018

Загрузка драйвера Определение URL для соединения

1019

1019

Установление соединения Создание объекта Statement

1020

20

Содержание

 

1020

   

1020

1021

22.2. Пример использования JDBC

1022

22.3. Вспомогательные классы для работы с JDBC

1027

22.4.

Применение класса DatabaseUtilities

1035

22.5.

1039

Интерактивная программа просмотра запросов Код Que lyVieweг

1041

22.6.

1046

Глава 23. Обработка XML-документов

1050

23.1.

1052

1052

1053

23.2.

Пример использования DOM

1055

23.3.

1064

1065

1066

23.4. Пример использования SAX: вывод общих

1067

23.5. Пример использования SAX: подсчет заказов на книги

1073

23.6.

 

1077

1078

1079

23.7. Пример использования XSLT: редактор документов

1082

23.8. Пример использования XSLT

1090

ЧАСТ Ь rV^. JAVASCRIPT

109 9

Глава 24. JavaScript: динамически изменяющиеся Web-страницы

1100

24.1.

Динамическая генерация HTML-документов

1103

1107

24.2. Обработка событий

1108

24.3. Синтаксис JavaScript

1109

1110

1110

   

1111

1116

24.4.

1117

1117

1120

24.5.

Использование JavaScript для изменения

1122

1122

1128

24.6.

1131

1133

1135

24.8.

Использование JavaScript для работы с фреймами

1144

Отображение во фрейхме ресурса с заданным URL

1144

21

Содержание

 

1147

24.9.

Обращение к Java из JavaScript

1148

Непосредственный вызов методов Java

1148

Использование аплетов для выполнения операций в JavaScript-сценариях

1150

Управление аплетами из JavaScript-сценария

1153

24.10. Доступ к средствам JavaScript из Java

1157

Определение цвета фона Web-страницы

1159

1160

Аплет, проверяющий данные формы Методы классаJSObject

1169

Глава 25. Краткое руководство по JavaScript

1172

25.1.

Объект Array

1173

 

1173

   

1174

1174

1177

25.2.

Объект Button

1177

 

1177

   

1177

1178

25.3.

Объект Checkbox

1178

 

1179

   

1179

1180

25.4.

Объект Date

1180

 

1180

   

1181

1181

1183

25.5.

Объект Document

1183

 

1183

   

1186

1186

25.6.

Объект Element

1186

 

1186

   

1187

1188

25.7.

Объект FileUpload

1188

 

1189

   

1189

1189

25.8.

Объект Form

1190

 

1190

   

1190

1191

25.9.

Объект Function

1191

22

Содержание

 

1191

1192

1192

25.10.

Объект Hidden

1192

 

1193

1193

1193

25.11.

Объект History

1193

 

1193

1194

1194

25.12.

Объект Image

1194

 

1194

1195

1196

1196

25.13. Объект JavaObject

1196

25.14. Объект JavaPackage

1197

25.15. Объект Layer

1197

1197

1197

1199

1200

25.16.

Объект Link

1200

 

1201

1202

1202

25.17.

Объект Location

1202

 

1202

1203

1204

25.18.

Объект Math

1204

 

1204

1205

1206

25.19.

Объект MimeType

1207

 

1207

1207

1207

25.20.

Объект Navigator

1208

 

1208

1210

1210

25.21.

Объект Number

1210

 

1211

1211

23

Содержание

 

1213

25.22.

Объект Object

1213

 

1213

1214

1214

1214

25.23.

Объект Option

1214

 

1214

1215

1215

1215

25.24.

Объект Password

1215

 

1216

1216

1216

25.25.

Объект Plugin

1217

 

1217

1218

1218

25.26.

Объект Radio

1218

 

1218

1219

1219

25.27.

Объект RegExp

1219

 

1219

1221

1222

1223

1223

25.28.

Объект Reset

1225

 

1225

1225

1226

25.29.

Объект Screen

1226

 

1226

1227

1227

25.30.

Объект Select

1227

 

1228

1229

1229

25.31.

Объект String

1230

 

1230

1230

1230

1235

24

Содержание

 

1235

1236

1236

25.33.

Объект Text

1237

 

1237

1237

1238

25.34.

Объект Textarea

1238

 

1238

1239

1239

25.35.

Объект Window

1240

 

1240

1244

1249

 

1254

Введение

25

ВВЕДЕНИЕ

В конце 1995 г. Марти Холл предложил новый курс для студентов, изучающих ком­ пьютерные науки в университете Джонса Хопкинса. В нем он рассмотрел основные вопросы, имеющие отношение к поддержке Web, с точки зрения Java-технологии. Предполагалось, что слушатели курса будут изучать HTML, Java, HTTP, CGI- программирование и JavaScript и участвовать в выполнении простых учебных проек­ тов. Вряд ли Марти представлял себе, какая судьба ожидает его курс. Появление пер­ вой части курса летом 1996 г. совпало со всплеском популярности Java. Аудитория бь. ла переполнена, а число желающих, записавшихся в очередь, намного превышало ко­ личество мест в аудитории. Марти не успевал отвечать на телефонные звонки студентов, пытавшихся доказать, что именно они непременно должны быть слушате­ лями нового курса. От предприятий приходили заявки на материалы курса. Успех был абсолютный. В дальнеР1шем, когда Марти занимался поисками материала для продолжения кур­ са, он обнаружил, что, несмотря на обилие печатных изданий по каждому из рассмат­ риваемых вопросов, для того, чтобы полностью охватить материал курса, понадобит­ ся четыре или даже пять книг. В своей повседневной деятельности Марти постоянно приходилось обращаться к огромному количеству собранных им публикаций. Напра­ шивалось решение объединить основной материал, необходимый профессиональ­ ным программистам, в одной книге. Такова была предыстория первого издания книги Программирование для Web. Как и следовало ожидать, она была очень популярна, но соответствующие технологии раз­ вивалось чрезвычайно быстро. Вместо HTML 3.2 в броузерах была реализована под­ держка HTML 4.0, была создана платформа Java 2, где появились средства, позволяю­ щие повышать эффективность программ, и новые графические библиотеки. Это да­ вало возможность создавать профессиональные коммерческие приложения. Раз­ работк а JS P 1.0 стимулировал а интере с и к сервлетам , и к JSP , как альтернатив е н е только традиционным CGI-программам, но также ASP и ASP и ColdFusion. Появился язык XML. Постепенно область применения Java переместилась с персональных ком­ пьютеров на серверы. По мере развития технологии стало ясно, что необходимо новое издание книги, однако объем работы, требуемый для этого, был не по силам одному Марти. В про­ цесс подготовки нового издания включился Лэрри Браун, обладающий огромным опытом разработки и преподавания в области Java-пограмм и Web-технологий. Его знания по вопросам Java Foundation Classes и созданию многопотоковых программ,

26

Введение

RMI и XML пришлись очень кстати. Вместе Марти и Лэрри переработали сущест­ вующий материал, написали главы, посвященные HTML 4, CSS/1, HTTP LI и плат­ форме Java, заменили главы по CGI вопросами создания сервлетов и JSP, а также включили новые разделы, в которых описали средства Swing и Java 2D. Кроме того, они уделили внимание обработке XML-документов с помощью JAXP, DOM Level 2, SAX 2.0 и XSLT. Работы было так много, что не хватало времени на сон. и вас.

ными для

Реальный код для настоящих программистов

полез­

Марти

Лэрри

искренне

надеются,

что результаты

их работы

окажутся

Данная книга предназначена для профессиональных разработчиков. Если вы хо­ тите узнать, как запустить броузер и получить список популярных Web-узлов, вы об­ ратились не по адресу. Если же вы программист и вас интересуют языки HTML и XML, Java-аплеты и сервлеты, JavaServer Pages и JavaScript, вы быстро найдете нужный вам материал. Здесь описаны подходы к решению часто встречающихся задач и опас­ ности, подстерегающие программиста на этом пути. В книгу включены примеры, ил­ люстрирующие материал, в частности в ней содержатся коды более 250 Java-классов. Мы постарались очень подробно описать часто используемые средства, кратко обсу­ дить вопросы, которые возникают реже, а получить "слишком специальные" сведения читатель может в документации по API (доступной в электронном виде). Приступая к работе, имейте в виду, что еще никто не стал великим программистом лиш ь от того, что читал книги. Вам надо писать программы, и чем больше вы эт о бу­ дете делать, тем лучше. В кг1ЖДой главе мы сначала предлагаем простой пример, а за­ тем подробно рассматриваем необходимые вопросы на более сложных примерах. Пропускайте разделы и целые главы, содержащие материал, для которого вы не ви­ дите применения, а затем возвращайтесь к ним по мере надобности. Поступая так, как мы советуем, вы вскоре расширите свой кругозор и начнете уве­ ренно ориентироваться в решении проблем, возникающих перед программистами. Вы сможете находить компромисс между требованием включать в Web-страницы но­ вые средства и необходимостью обеспечивать переносимость документов. Вы сможе­ те работать с фреймами, листами стилей и прочими возможностями, предоставляе­ мыми HTML 4.0. Вы научитесь создавать независимые переносимые графические приложения. Вас не будет пугать задача создания Web-интерфейса к корпоративной базе данных с помощью JDBC. Вы сможете обеспечить взаимодействие по сети с уда­ ленными приложениями. Вам станет ясно, как выполняется распараллеливание вы­ числений, как можно реализовать решение подзадачи в отдельном потоке или даже на другом компьютере с использованием RML Вы научитесь оценивать, для решения каких задач лучше подходят сервлеты, а для каких —JSP. Вы разберетесь в особенно­ стях протокола HTTP L1 так, что сможете использовать его для повышения эффек­ тивности работы ваших программ. Вы сможете реализовывать сложные программы на стороне сервера, используя для этого компоненты JavaBeans и библиотеки деск­ рипторов JSP. Вы научитесь использовать JavaScript-сценарии для проверки содержи­ мого HTML-форм или для поддержки движущихся изображений. Ваш профессио­ нальный уровень повысится и, надеемся, существенно.

Введение

27

Структура книги

Данная книга разделена на четыре части, посвященные HTML,

программированию на языке Java, написанию программ, выполняющихся на стороне сервера и JavaScript.

Часть L Язык HTML

Для создания Web-страниц используется HTML (HyperText Markup Language). HTML-документ включает обычный текст, предназначенный для отображения, и деск­ рипторы, описывающие содержимое Web-страницы. Дескрипторы интерпретируются Web-броузерами, например Netscape Navigator и Microsoft Internet Explorer, при форма­ тировании Web-страниц. В данной части рассматриваются следующие вопросы.

HTML 4.01. Элементы, определяемые последним из официальных HTML- стандартов. Гипертекстовые ссылки, шрифты, изображения, таблицы, карты изображений на стороне клиента и др.

Основные расширения Netscape и Internet Explorer. Перенаправление стра­ ниц, использование цветов и шрифтов, встроенные аудио-, видео- и ActiveX- компоненты.

Фреймы. Разбиение окна на прямоугольные области и связывание этих облас­ тей с HTML-документами. Фреймы без обрамления. Плавающие фреймы. Ука­ зание фреймов в гипертекстовых ссылках.

Каскадные листы стилей. Листы шрифтов, цветов, изображений, пов и др.

форматирования

текста,

отсту­

организации

Часть IL Программирование

на языке

Java

Java— это язык программирования пользован для создания независимых программ, а также программ, встроенных в Web-страницы. Во второй части книги рассматриваются следующие вопросы.

общего назначения, который может быть ис­

Средства Java. Что отличает Java от других языков программирования? Мифы о Java, и как обстоят дела в реальности.

Объектно-ориентированное программирование на языке Java. Переменные, методы, конструкторы, интерфейсы. Объявление класса и модификаторы. Па­ кеты, переменная окружения CLASS PATH и JAR-файлы.

Синтаксис Java. Простые типы, операторы, строки, векторы, массивы, ввод- вывод и класс Math.

Графика. Аплеты. Приложения. Поддержка цвета и шрифтов. Область отсече­ ния. Загрузка и вывод изображений. Java Plug-In.

Java 2D. Создание профессиональной высококачественной 2В-графики. Соз­ дание форм, повторение изображений, использование локальных шрифтов, создание прозрачных форм и преобразование координат.

28

Введение

События, связанные с мышью и клавиатурой. Обработка событий. Типы со­ бытий. Высокоуровневые и низкоуровневые обработчики событий. Внутрен­ ние классы. Анонимные классы.

Диспетчеры компоновки. FlowLayout, BorderLayout, GridLayout, CardLayout , GridBagLayou t и BoxLayout, Размещение компонентов вруч­ ную. Эффективное использование диспетчеров компоновки.

Компоненты AWT. Canvas , Panel , Applet , ScrollPane , Frame, Dialog , FileDialo g и Window. Компонеьггы и контейнеры. Кнопки, флажки опций, переключатели опций, списки, поля редактирования, текстовые области, ста­ тический текст, полосы прокрутки и раскрывающиеся меню. Загрузка и сохра­ нение окон с использованием сериализации объектов.

Основные компоненты Swing. Создание аплетов и приложений с использова­ нием Swing. Изменение стиля интерфейса. Добавление обрамления к компо­ нентам. Использование HTML при формировании статического текста и над­ писей на кнопках. Окна с сообщениями. Создание дочерних окон в приложе­ нии. Реализация Web-броузера средствами Swing.

Расширенные средства Swing. JList , JTre e и JTable . Использование произ­ вольных моделей данных и средств визуализации. Вывод компонентов Swing на печать. Обновление компонентов Swing в многопотоковых программах.

Создани е многопотоковы х программ. Создани е потоко в в отдельны х или су­ ществующих объектах. Синхронизация доступа к разделяемым ресурсам. Груп­ пировк а потоков . Вывод график и в многопотоковы х программа х и двойна я бу­ феризация. Анимационные изображения. Управление таймерами.

Сетевое программирование. Использование гнезд клиентами и серверами. Класс URL. Универсальный сервер. Создание простого HTTP-сервера. Вызов удаленных объектов средствами RMI.

Часть III. Программы, выполняющиеся на стороне сервера

Программы, выполняющиеся на Web-сервере, могут генерировать

динамические документы на основе данных, передаваемых клиентами. Сервлеты можно рассматри­ вать как Java-альтернативу CGI-программам, а JSP — как альтернативу Active Server Pages и ColdFusion. В данной части рассматриваются следующие вопросы.

HTML-формы. Передача данных, введенных посредством HTML-форм. Эле­ менты, предназначенные для ввода текста. Кнопки. Флажки и кнопки выбора опций. Карты изображений на стороне сервера. Скрытые поля. Порядок пе­ редачи фокуса.

Java-сервлеты. Преимущества сервлетов перед другими технологиями. Жиз­ ненный цикл сервлета. Инициализированные параметры сервлетов. Получе­ ние данных формы. Использование полей заголовка запроса и ответа, а также кодов состояния HTTP LL Обработка записей cookie сервлетами. Поддержка сеанса взаимодействия.

Введение

29

JavaServer Pages (JSP). Преимущества JSP. Выражения, скриптлеты и деклара­ ции. Использование компонентов JavaBeans в JSP. Создание библиотек деск­ рипторов JSP. Сервлеты и JSP.

 

Использование аплетов в качестве интерфейса при взаимодействии с сервлетами . Передач а данны х GET и POST. НТТР-туннелирование . Использо ­

вание сериализации объектов для передачи сложных структур данных между аплетом и сервлетом. Отказ от использования HTTP-сервера.

Java Database Connectivity (JDBC). Семь основных этапов соединения с базой данных. Вспомогательные средства, облегчающие работу с JDBC. Представле­ ние результатов обращения к базе данных в текстовом виде и HTML-формате. Средство просмотра запросов. Предварительно скомпилированные запросы.

Обработка XML-документов средствами Java. Представление XML-документа с помощью Document Object Model (DOM) Level 2. Обработка событий, связан­ ных с разбором XML-документа, посредством Simple API for XML Parsing (SAX) 2.0. Преобразование XML с помощью XSLT. Зависимость Java API for XML Processing (JAXP) от производителя.

Часть IV. JavaScript

JavaScript — это язык, предназначенный для написания сценариев, встраиваемых в Web-страницы. Сценарий интерпретируется при загрузке страницы. В последней части данной книги рассматриваются следующие вопросы.

Синтаксис JavaScript. Поля, методы, функции, строки, объекты, массивы и ре­ гулярные выражения.

Настраиваемые Web-страницы. Адаптация под различные броузеры, реализа­ ции JavaScript и размеры экрана.

Создание динамических Web-страниц. Анимационные изображения. Дейст­ вия со слоями. Обработка пользовательских событий.

Проверка HTML-форм. Проверка изменяющихся компонентов формы. Тес­ тирование данных, передаваемых на сервер.

Поддерлска cookie. Чтение и установка значений. Объект Cookie.

Управление фреймами. Передача результатов заданному фрейму. Запрет ис­ пользования фреймов при отображении док)'ментов. Обновление нескольких фреймов. Передача фокуса фрейму.

Интеграция Java и JavaScript. Классы LiveConnec t и JSOb j ect .

по JavaScript.

 

классы,

в JavaScript 1.2. Поля, методы и обработчики событий. Document, Window, Form,

Element,

String , Math, RegExp и прочие объекты.

30

Введение

Соглашения, принятые в книге

Программы, фрагменты программ и результаты их выполнения, а также иденти­ фикаторы, встречающиеся в тексте программы, выделены в данной книге моноши­ ринным шрифтом. Так, например. Apple t означает имя специального класса, ис­ пользуемого для создания аплетов. Данные, вводимые пользователем, отображаются полужирным шрифтом. Для ввода командной строки предлагается либо универсальное приглашение (Prompt>), либо приглашение, специфическое для конкретной операционной системы (Unix>). В приведенном ниже примере показаны данные, полученные при выполнении ко­ манды Java SomeProgram.

Prompt>

Java

SomeProgram

Some

Outpu t

задач оформленных так, как показано ниже.

текста,

на фрагменты текста, помеченные

"Методика профессионалов". пользуемые подходы.

как Здесь описываются очень часто ис­

 

Замечания и советы оформляются подобным образом.

Web-узел

Материалы,

книге,

Web-узле

http://www.corewebprogramming.com/

По этому адресу вы найдете следующую информацию.

 

Документированные исходные коды всех примеров, приведенных в книге. Эти коды можно копировать и использовать без ограничений.

Интерактивные версии всех HTML-страниц, Java-аплетов и сценариев JavaScript.

Ссылки на все URL, упомянутые в книге.

 

Информация об условиях приобретения данной книги.

Сообщения о курсах по Java.

 

Дополнительная информация по данной книге.

Инструментальные средства Ronco.

31

Об авторах

06 авторах

Марти Холл работает старшим научным сотрудником лаборатории прикладной фи­ зики исследовательского центра при университете Джонса Хопкинса и ведет курсы по распределенным вычислениям и Web-технологии. Иногда он также проводит курсы на предприятиях по использованию сервлетов, JavaSen^er Pages, а также по другим темам, связанным с Web-технологиями. Он автор книг Core Servlets and JavaServer Pages, a также первого издания книги Программирование для Web. С Марти можно связаться по адресу

Research and Technology Development Center TheJohns Hopkins University Applied Physics Laboratory 11100Johns Hopkins Road Laurel, MD 20723 hall@corewebprogramming. com

Лэрри Браун работает старшим инженером в военно-морском исследовательском центре и занимается разработкой Web-технологий для предприятий. Он также явля­ ется сотрудником факультета компьютерных наук университета Джонса Хопкинса, где читает лекции по созданию программ, работающих на стороне сервера, распре­ деленному Web-программированию и разработке интерфейсов на базе Java. С Лэрри можно связаться по следующему адресу:

Naval Surface Warfare Center, Carderock Division 9500 MacArthur Boulevard West Bethesda, MD 20817 brown@corewebprogramming. com

32

Благодарности

Благодарности

В подготовке книги к печати принимали участие очень многие. Без их помощи мы

вряд ли смогли бы выпустить даже первую часть. Дон Олдридж, (Don Aldridge), Крис Беннет (Chris Bennett), Камил Белл (СатШ е Bell), Пит Кларк (Pete Clark), Мария Димеленте (Maria Dimalanta), Нгуен-Хоа Дай (Nguyen-Khoa Duy), Дениз Еванс (Denise Evans), Эми Карлсон (Amy Karlson), Пол МакНеми (Paul McNamee), Тодди Норам (Toddi Norum), Уолтер Паскуинни (Walter Pasquinni), Рич Слайвзек (Rich

Slywczak), Боб Тинкер

ошибки и помогли советами. Без их участия данная книга вряд ли могла бы иметь ус­ пех. Мэри Лоу Нор (Магу Lou Nohr) затратила много времени на расстановку недос­ тающих запятых и поис других ошибок. Благодаря ей текст книги стал таким, каким вы его видите. Ванесса Мур (Vanessa Moore) руководила подготовкой последней версии. Ее работа осложнялась тем, чтоб некоторые изменения приходилось вносить буквально в последний момент. Благодаря усилиям Ральфа Семмела (Ralph Semmel) и Джулии Вессел (Julie Wessel) был обеспечен гибкий график работы. Грег Донч (Greg Doench) из Prentice Hall всячески поощрял нашу работу над вторым издани­ ем. Всем перечисленным выше мы выражаем искреннюю благодарность.

и поддержку. Я, Лэрри, благодарю Ли за поддержку и терпение рые я проводил за компьютером. Господь наградил нас обоих прекрасными семьями.

кото­

(Bob Tinker) и Ким Топли (Kim Topley) указали нам на наши

Я, Марти, в особенности благодарен B.J.,

Линдси

Натану за

в

те

их

долгие

понимание

дни,

и

От издательства

ва­ сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам интересно услышать любые другие замечания, которые вам хотелось бы высказать в наш адрес. на ное письмо или просто посетить наш Web-сервер, оставив свои замечания, — одним нет книги более

подходя­

ше мнение

Вы, читатель этой книги, и есть главный

ее критик

и комментатор. Мы ценим

что можно было

и хотим знать, что было сделано нами правильно,

и

Мы ждем ваших комментариев

и надеемся

них. Вы можете прислать электрон­

или

вам

эта

словом, любым удобным для вас способом дайте нам знать, нравится

книга, а также выскажите свое мнение щими для вас.

ваш e-mail. Мы внимательно

о том,

как сделать наши

Посылая письмо или сообщение, не забудьте указать название книги и ее авторов,

ознакомимся с вашим мнением и обязательно уч­

а также тем его при отборе и подготовке к изданию последующих книг. Наши координаты:

L-mail:

info@williainspublishing .

com

WWW:

http : //www. williamspublishing . com

^:jzjs:-r±

ЯЗЫК HTML

Глава 1. Создание \/\/еЬ'Страниц с помощью HTML 4.0 Глава 2. Элементы блокового уровня HTML 4.0 Глава 3. Элементы текстового уровня HTML 4.0 Глава 4. Фреймы Глава 5. Каскадные листы стилей

СОЗДАНИЕ WEB-СТРАНИЦ С ПОМОЩЬЮ HTML 4.0

В ЭТОЙ главе

• Общие сведения о HyperText Markup Language.

• HTML 4.0 и другие спецификации языка HTML.

• Проверка HTML-документов.

• Создание и публикация Web-страницы.

• Структура HTML-документа.

J~1y\ZJSJZJ

еред вами первая из пяти глав, посвященных HTML (HyperText Markup Lan­ guage— язык разметки гипертекста). Прочитав их, вы познакомитесь с техно­

П логиями, которые используются при создании Web-страниц. В первой главе представлена структура HTML-документа, а в остальных четырех — дополнительные сведения, которые позволят вам создавать профессиональные Web-страницы. В част­ ности, вы узнаете об элементах блокового уровня, элементах текстового уровня и о каскадных листах стилей. В остальной части книги будут описаны Java-аплеты, гнезда (socket), взаимодействие с базами данных, Java-сервлеты, JavaSetrver Pages (JSP) и об­ работка XML-документов. Эти технологии чрезвычайно важны для разработки высо­ кокачественных Web-узлов. В данной главе мы рассмотрим историю возникновения HyperText Markup Language и основные действия, необходимые для того, чтобы создать и опубликовать Web- страницу. Затем мы сосредоточим внимание на общей структуре Web-страницы, опи­ шем основные HTML-элементы, обязательные для каждого документа, и обсудим уста­ новки, оказывающие влияние на документ в целом. Наконец, мы расскажем, как можно проверить, соответствует ли готовая Web-страница стандарту HTML, и как включить в документ информацию, предназначенную для использования поисковыми серверами.

1.1. HyperText Markup Language

Для создания Web-страниц используется HyperText Markup Language. Документ, созданный на языке HTML, содержит обычный текст и дескрипторы, предназначен­ ные для разметки текста. С помощью дескрипторов можно описать внешний вид тек­ ста (например, указать, что некоторый фрагмент должен отображаться красным цве­ том) или его расположение на странице (например, задать размещение данных в третьей и четвертой строках таблицы). Однако чаще всего дескрипторы описывают содержимое документа (скажем, можно указать, что определенный фрагмент текста является заголовком) и предоставляют броузеру решать, как именно следует размес­ тить текст на странице. В листинге L1 содержится HTML-код Web-страницы, пред-

36

Глава 1 . Создание Web-страниц с помощью HTML 4.0

ставленной на рис. 1.1. Если этот код непонятен вам, не беспокойтесь; элементы язы­ ка HTML мы детально обсудим в последующих главах. Однако даже с первого взгляда можно заметить некоторые особенности HTML-документа. Так, например, из данно­ го листинга видно, что в нем содержится текст документа и набор дескрипторов, за­ ключенных в угловые скобки. Некоторые (но не все) языковые элементы представ­ ляют собой пары дескрипторов <ИМЯ> и </ИМЯ>. На рис. 1.1 показано, как отображается Web-страница в окне конкретного броузера (Internet Explorer 5.0), выполняющегося в операционной среде Windows 2000 Profes­ sional. Основные установки для данного броузера (начертание, размер и цвет символов) заданы пользователем. Характеристики отображения, не указанные пользователем, оп­ ределяет сам броузер. Если Web-страница должна отображаться в броузерах различных типов, попытки автора жестко задать внешний вид документа, как правило, заканчива­ ются неудачей. В главе 5 вы познакомитесь с каскадными листами стилей, которые пре­ доставляют авторам дополнительные возможности по управлению отображением Web- страниц. Однако даже в этом случае автор не имеет полного контроля над внешним ви­ дом своих документов.

•а«е for lewrencc! М. шпнмш ~9тсжттк тттасштттш

JOJJcj

Ele

£dft

ilew

Favorites

look

jjelp

^

-

*4

-

: ^

^

^

-^Search JJFuvorte* ^Hetory

-Ji '

^

-

J

d

Home Page for Lawrence M. Brown

CAKOf

KOcii^^oiYiSfON

JNSI^f\/C^

Senior Network Engineer Naval Surface Waifai-e Center 9500 MacArthor Boulevard West Bethesda. Maryland. MD 20817-5700 email: lan7@corewebpro.eyttrmx^^ com Phone: (30 \) 277-4648

This IS my personal home page For more specific programmmg-related resoxirces pages, please see

'ёЗ

Рис. 1.1. Документ, код которого

ражается в окне броузера Internet Explorer 5.0, выполняющегося в среде Windows 2000

1.1, отоб­

приведен в листинге

Листинг 1.1. HTML-код простой \Л/еЬ-страницы

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <Title>Home Page for Lawrence M. Brown</Title> </HEAD> <BODY BGCOLOR="WHITE"> <H1 ALIGN="CENTER">Home Page for Lawrence M. Brown</Hl> <HR> <IMG SRC="images/navsea-nswc.gif" WIDTH=300 HEIGHT=117 HSPACE=10 VSPACE=5 ALIGN="LEFT" ALT="NSWC Logo"> Senior Network Engineer<BR> <A HREF="http://www.dt.navy.mil/">

1.2. HTML 4.0 и другие стандарты HTML

37

Naval Surface Warfare Center</A><BR> 9500 MacArthor Boulevard<BR> West Bethesda, Maryland, MD 20817-5700<BR> <I>email:</I > <A HREF="mailto:larry@corewebprograiraning.сош"> larry@corewebprogramming.com</A><BR> <I>Phone:</I> (301) 277-4648<BR CLEAR="ALL"> <P> Thi s i s my persona l home page . For more specifi programming-relate d resource s pages , pleas e see :

<!- - Остальная часть Web-страницы здесь не приводится —> </BODY> </HTML>

c

На заметку

должны отображаться различными броузерами, как правило, оканчиваются неудачей.

Попытки явно задать внешний вид документов, которые

При разработке Web-страниц могут возникнуть дополнительные трудности, свя­ занные с тем, что броузеры — не единственный тип программ, используемый для вос­ произведения HTML-документов. Различные приложения могут отображать, выво­ дить на печать, индексировать HTML-документы и даже синтезировать речь на осно­ ве их содержимого. Однако в данной книге мы рассмотрим лишь отображение документов посредством WWW-броузеров.

1.2. HTML 4.0 и другие стандарты HTML

Помимо проблем, связанных с отображением в различных броузерах, авторы Web- страниц должны принимать во внимание изменения в спецификации HTML. До января 1997 г. широко использовался стандарт HTML 2.0, разработанный W3C (World Wide Web Consortium). Спецификация HTML 2.0 описывала возможности, типичные для броузеров, созданных в середине 1994 г. Еще до того, как была опубликована HTML 2.0, проводились работы по созданию спецификации нового поколения. Вначале эта спе­ цификация называлась HTML+, а затем получила название HTML 3.0. Однако основные производители Web-броузеров не стали поддерживать эту спецификацию. В качестве промежуточного варианта при переходе к новому стандарту была предложена специ­ фикация HTML 3.2 (в процессе разработки она имела кодовое название "Wilbur"). HTML 3.2 уместнее было бы назвать HTML 2.3, поскольку в ней были учтены не все средства HTML 3.0. Наконец, в декабре 1997 г. появился стандарт HTML 4.0. Следует заметить, что современные броузеры не поддерживают HTML 4.0 в пол­ ном объеме. Наиболее соответствуют данной спецификации Netscape 4.0 и последую­ щие версии, а также Internet Explorer 4.0 и более поздние версии (реализации 3.x данных броузеров поддерживали только HTML 3.2). П о сравнению с HTML 3.2 в HTML 4.0 были внесены следующие изменения.

 

Дополнительные возможности поддержки фреймов.

Рекомендации по использованию листов стилей вместо непосредственного форматирования элементов и атрибутов.

38

Глава 1 . Создание Web-страниц с помощью HTML 4.0

Улучшенные средства выравнивания ячеек в таблицах и возможность ровки строк и столбцов.

группи­

 

Поддержка событий, связанных с мышью и клавиатурой.

 

Поддержка различных языков.

 

Дополнительная поддержка невизуальных броузеров.

После принятия в 1997 г. HTML 4.0 в качестве стандарта была предложена специ­ фикация HTML 4.01, в которой были исправлены незначительные ошибки предыду­ щей спецификации и добавлены некоторые атрибуты. HTML 4.01 была принята W3C 24 декабря 1999 г. HTML 4.01 важна потому, что на ней базируется новая специфика­ ция XHTML 1.0, предназначенная для поддержки XML в Web-страницах. В этом слу­ чае HTML 4.01 используется для интерпретации HTML-дескрипторов. XML позволя­ ет определять форматы данных для электронной коммерции, векторной графики и многих других применений. Подробно язык XML будет обсуждаться в главе 23. Спе­ цификаци я XHTM L 1.0 был а официальн о принят а 26 январ я 2000 г. Электронные копии спецификации HTML можно найти по следующим адресам:

HTML 4.01

http://www.w3.org/TR/html401 /

HTML 4.0

http://www.w3.o3rg/TR/19 98/REC-html4 0-19980424/

HTML 3.2

http://www.w3.org/TR/REC-html32.html

1.3. Порядок публикации документа в Web

Для того чтобы опубликовать документ в Web, надо выполнить следующие действия.

1. Создать HTML-документ.

2. Разместить документ так, чтобы он был доступен из Web.

3. Убедиться в том, что HTML-код создан корректно и вид отображаемого доку­ мента соответствует вашим замыслам.

Создание документа

Поскольку в HTML-файле содержится ASCII-текст, для создания

HTML-документа

можно воспользоваться обычным текстовым редактором, например Notepad, UltraEdit, emacs или BBEdit. Также документ можно создать с помощью HTML- редактора, например, HomeSite, FrontPage или Dreamweaver. Наконец, можно авто­ матически преобразовать в HTML-формат документ, созданный в текстовом процес­ соре, таком как Microsoft Word или WordPerfect. Поскольку HTML — это не язык опи­ сания страниц, а логический язык разметки, преобразованный документ может не­ сколько отличаться от документа, созданного посредством текстового процессора, и потребовать небольшой коррекции.

1.3. Порядок публикации документа в Web

39

Следует заметить, что броузеры обеспечивают большую гибкость в представлении документов и обычно пользователь может самостоятельно выбирать шрифт и цвет для отображения Web-страницы. В результате использование HTML-редакторов "WYSIWYG" (What You See Is What You Get) затрудняется; no крайней мере, это спра­ ведливо при отсутствии каскадных листов стилей. С другой стороны, автор всегда может сформировать документ с учетом установок по умолчанию конкретного бро­ узера. В любом случае HTML-редакторы экономят много времени при разработке Web-страниц; большинство из них предоставляют визуальные средства для размеще­ ния таблиц и фреймов, многие редакторы поддерживают каскадные листы стилей. Выбирая HTML-редактор, следует отдать предпочтение тому и них, который позво­ ляет непосредственно редактировать HTML-код. Дело в том, что при создании Web- документа вы обязательно захотите использовать средства, которые не поддержива­ ются конкретным редактором и, следовательно, недоступны через его графический пользовательский интерфейс. Перед тем как размещать готовую Web-страницу на сервере, необходимо проверить синтаксис HTML-кода и убедиться, что внешний вид документа не отличается от задуманного вами.

документа в Web

Размещение

Для того чтобы HTML-документ был доступен Internet-пользователям, он должен находиться на компьютере, подключенном к Internet, кроме того, на этом компьюте­ ре должен работать HTTP-сервер. Если у вас нет Internet-доступа, вам надо ознако­ миться с предложениями поставщиков Internet-услуг (провайдеров), которые публи­ куются в прессе и рекламных проспектах. Некоторые авторы создают свои Web- страницы на том же компьютере, на котором они впоследствии будут размещены. Так обычно поступают сотрудники коммерческих и некоммерческих организаций и учеб­ ных заведений. Нередко авторы создают Web-страницы на персональных компьюте­ рах дома или в офисе, а затем копируют их на сервер. В этом случае необходимо про­ верить, что каталог, в который скопирован документ, доступен из Internet. Подробно этот вопрос обсуждается в последующих разделах.

Создание каталога для документа

На компьютере, на котором предполагается разместить Web-страницу, должен выполняться HTTP-сервер. Подробно HTTP (HyperText Transfer Protocol — протокол передачи гипертекстовой информации) будет обсуждаться в главе 19. Сейчас же вам достаточно знать, что HTTP — это протокол, посредством которого WWW-клиенты (броузеры) взаимодействуют с системами, на которых размещены Web-страницы. Программа, обрабатывающая клиентские запросы, называется HTTP-сервером. HTTP-сервер получает от клиента URL (Uniform Resource Locator — унифицирован­ ный локатор ресурсов), который можно рассматривать как "адрес" документа в Web, и преобразует его в путь и имя файла в конкретной операционной системе. Обычно, если клиент запрашивает файл из пользовательского каталога, сервер ищет его в под­ каталоге publichtm l или www. Этот каталог не указан в URL, но отражает реальное расположение файла. Конкретное имя каталога для размещения HTML-документов автору сообщает системный администратор.

40

Глава 1 . Создание Web-страниц с помощью HTML 4.0

Часто провайдеры предоставляют авторам Web-страниц пространство на своих серверах. В этом случае авторы передают HTML-документы на сервер провайдера по­ средством FTP. Как правило, перед тем как сообщить пользователю регистрационное имя и пароль, администратор провайдера создает исходную структуру каталогов. Со­ трудники корпораций и учебных заведений обычно уже имеют учетные записи на Web-сервере. Работая в системе UNIX, пользователь должен сначала создать каталог, доступный из Web (как правило, имя этого каталога publichtm l или www), а затем скопировать в созданный каталог свои Web-страницы.

Предположим, что пользователь janedo e собирается опубликовать документ test . htm l на сервере www. some-isp . com. В этом случае ему надо скопировать файл test.htm l в каталог /home/janedoe/public_html . Здесь /home/janedo e — рабо­

а publichtml — специальный "скрытый" каталог, ис­

чий каталог пользователя, пользуемый Web-сервером. При обращении из Web URL данного документа будет иметь вид http://www.some-isp.com/~janedoe/test.html . Символ "--" обычно интерпретируется как "рабочий каталог пользователя". Неко­ торые программы используют кодировку ASCII или ISO Latin 1, поэтому в некоторых случаях вместо "~" вы встретите последовательность символов "%7Е". Таким образом, http : //som e .host/%7Euser/pat h — это допустимый URL.

Копирование файла в каталог

Если вы работаете на том же компьютере, на котором выполняется HTTP-сервер, вы, наверное, будете создавать HTML-документы непосредственно в том каталоге, в котором они должны быть размещены (publi c html). Если вы предполагаете распо­ ложить документ на удаленном узле, для копирования файла вам придется воспользо­ ваться FTP-клиентом, например Fetch— в системе Мае, ftp.exe — в Windows 95/98/2000/N T или /usr/bin/ f t p — в системе UNIX. Не забывайте, что во многих операционных системах имена файлов зависят от регистра символов. В дополнение к "скрытому" каталогу по умолчанию многие HTTP-серверы использу­ ют имя файла по умолчанию. Оно применяется в том случае, когда в составе URL задан только каталог, а файл не указан. Как правило, по умолчанию используются имена index . html. Welcome . html и default . html. Часто вместо . html используется . htm. Если исходная страница пользователя janedo e расположена в файле /home/janedoe / public_html/index.html , обращаясь к ней, достаточно указать http://www . some- isp . com/-janedoe/ . Можно также задать полный URL, включающий имя файла. Он будет выглядеть так: http : //www. some-isp.com/~janedoe/index.html .

Установка прав доступа к файлу и каталогу

Для того чтобы файл был доступен из Web, файл и каталог, в котором он располо­ жен, должны быть разрешены для чтения процессу HTTP-сервера. Поскольку HTTP- сервер обычно выполняется в непривилегированном режиме, данное требование оз­ начает, что доступ к файлу и каталогу должен быть разрешен всем пользователям. Многие провайдеры, серверы которых работают под управлением UNIX, устанавли­ вают требуемые права по умолчанию, поэтому описанные ниже действия могут не по­ надобиться. Для того чтобы определить установки, пользователю UNIX достаточно проверить значение umask. При необходимости требуемые права в системе UNIX мо­ гут быть установлены с помощью следующих команд:

1.4. Структура HTML-документа

41

Unix> cd Unix> chmod a+x . Unix> cd public_html Unix> chmod a+x . Unix> chmod a+r file

Поскольку Web-броузеры помимо HTML-документов позволяют также отображать обычные текстовые файлы, для проверки доступа можно создать файл test . txt , со­ держащий одну строку текста, например последовательность символов "Hello!". Этот файл надо поместить в соответствующий подкаталог вашего рабочего каталога и по­ пытаться обратиться к нему, задавая URL http://your . isp . com/'-your- account/test . txt . Если вы увидите в окне броузера содержимое данного файла, это значит, что вам не надо предпринимать никаких действий по установке прав доступа.