
Программирование на Java.ppt
- Количество слайдов: 169
Программирование для Internet на языке Java
История Java • В 1990 году начинается разработка новой вычислительной среды и разработка нового языка «ОАК» • В 1994 году - освоение Internet новым языком. Язык получает название «Java» • В январе 1995 году компания Sun начинает бесплатное распространение Java • В августе 1995 года в Netscape Navigator включен интерпретатор JAVA
Виды Java приложений • • Автономные программы Апплеты Консольные приложения Пакеты (библиотеки)
Java Developer’s Kit (JDK)
Загрузка апплетов
Архитектура Java класс Java Virtual Machine Java подсистема Операционная система
Технология Java (P-код) . Java . class Интерпретатор P-кода
Средства разработки Javaприложений • • • Java Development Toolkit (Sun) Visual J + + (Microsoft) J Builder (Inprise/Borland) Symantec Cafe (Symantec) Visual Cafe Pro (Symantec)
Базовые основы Java • Основные положения • Константы • Типы переменных • Арифметические операции • Операторы языка Java
Первая программа class hello { public static void main(String s[ ]) { System. out. println("Hello Java"); } }
Переменные • Используются для хранения промежуточных значений • Могут быть встроенного типа, типа класса или типа интерфейса • Автоматически инициализируются нулем при описании
Встроенные типы переменных
Массивы int month_days[ ]; month_days = new int [12]; int month_days[ ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} month_days[ i ] //i-элемент массива month_days. length; //кол-во элементов
Многомерные массивы double matrix[ ][ ]; //объявление массива matrix=new double[3][ ]; matrix[0]=new double[3]; //инициализация matrix[1]=new double[3]; //элементов matrix[2]=new double[3]; //массива
Основные операторы Java (Арифметические операторы)
Целочисленные битовые операторы (long, int, short, char, byte)
Операторы отношения
Булевы логические операторы
If-else if (ЛОГ. ВЫРАЖЕНИЕ) ОПЕРАТОР 1 $ else ОПЕРАТОР 2 $ true false
switch =X выражение =Y =Z switch(ВЫРАЖ) { case X: //действие case Y: //действие default: //действие }
while false ВЫРАЖ true while(ВЫРАЖ) { //тело цикла }
do-while ВЫРАЖ true false do { //тело цикла } while(ВЫРАЖ)
for ИН УСЛ true ИТ false for(ИН; УСЛ; ИТ) { //тело цикла }
Передача управления break $МЕТКА$ continue $МЕТКА$
Использование break и continue bro. java
Условное выражение ВЫР true false РЕЗ=ВЫР_ИСТ false РЕЗ = (ВЫР)? ВЫР_ИСТ : ВЫР_ЛЖ РЕЗ=ВЫР_ЛЖ
Задачи • Квадратное уравнение • Работа с массивом • Использование условных операторов и выражений
Работа с массивом (1) import java. lang. Math; class Example. Array { public static void main(String s[ ]) { double Arr[ ][ ]; int i; Arr = new double [3][ ]; //создание массива for(i=0; i<3; i++) Arr[i]=new double [i+2];
Работа с массивом (2) //инициализация элементов массива int j; for(i = 0; i < Arr. length; i++) for(j = 0; j < Arr[i]. length; j++) Arr[i][j] = Math. random(); //печать элементов массива for(i = 0; i < Arr. length; i++) for(j = 0; j < Arr[i]. length; j++) System. out. println(""+Arr[i][j]); } }
Философская мудрость века настоящего становится всеобщим здравым смыслом века последующего. /Г. Бичер/ Введение в программирование на Java Базовые понятия объектноориентированного программирования в Java
Понятие класса и объекта Класс • Свойства • Методы Объекты - экземпляры класса
Описание класса ВИДИМОСТЬ class ИМЯ_КЛАССА { ВИДИМОСТЬ МОДИФИКАТОР ТИП ИМЯ; ВИДИМОСТЬ МОДИФИКАТОР ТИП ИМЯ(АРГ) { РЕАЛИЗАЦИЯ МЕТОДА } }
Объекты и классы в Java Объект Создание объектов Объект Переменная Объект Класс Переменная Ссылки на объекты
Доступ к полям и методам Ссылка. Имя_поля Ссылка. Имя_метода( арг 1, арг 2, арг. N)
Поля класса • Отражают внутреннее состояние объекта • Могут иметь любой тип • Могут глобальными для всех объектов модификатор static • Могут быть константными модификатор final
Методы класса • Предназначены для воздействия на объект или другие объекты • Принимают аргументы по их значению и не могут изменить содержимое переменной, чье значение передано в качестве аргумента • Могут возвращать значение - оператор return • Могут быть статическими ( static ) - доступ только к статическим полям класса • могут быть перегружены (должны различаться списком аргументов)
Переменная this Набор данных объекта № 1 Методы объекта Набор данных объекта № 2 Набор данных объекта № X this
Варианты использования this • Когда необходимо указать ссылку на сам объект • Когда в методах имена аргументов и имена полей класса совпадают
Специальный метод конструктор • Предназначен для инициализации полей объекта • Имя совпадает с именем класса • Не возвращает значения • Может быть перегружен
Создание объекта ОБЪЕКТ_ПЕРЕМ = new КЛАСС( АРГ)
Специальный метод finalize • Вызывается Java virtual machine при уничтожении объекта • Необязателен • Может выполнять завершающие действия, которые нужно выполнить при уничтожении объекта
Выркалось. Хливкие шорьки Пырялись по наве И хрюкотали зелюки, Как мюмзики в мове. /Л. Кэрролл/ Введение в программирование на Java Использование принципов объектного программирования в языке Java
Принципы объектноориентированного программирования • Инкапсуляция • Наследование • Полиморфизм
Инкапсуляция Методы
Видимость класса, полей методов • private • public
Наследование
Наследование • Позволяет создать класс с присущими ему новыми свойствами и поведением • Все поля и методы суперкласса входят в подкласс • Можно регулировать видимость полей суперкласса подклассом
Описание подкласса class ПОДКЛАСС extends СУПЕРКЛАСС { //реализация подкласса }
Обращение к полям и методам суперкласса • Вызов конструктора - super(АРГ) • Обращение к неперекрытому полю ИМЯ_ПОЛЯ • Обращение к перекрытому полю super. ИМЯ_ПОЛЯ
Видимость • private • protected • public
Пакетная организация Javaприложений X. class Пакет PACK 1 Пакет PACK 2 Y. class P. class S. class
Требования к работе с пакетами • Имя пакета должно совпадать с именем каталога где он хранится • В начале каждого файла одного пакета должен содержаться оператор package • Можно создавать иерархию пакетов, разделяя разные уровни точками в имени • В программе использующей классы из пакета должен стоять оператор import
Видимость (сводная таблица)
Полиморфизм ?
Полиморфизм • Позволяет определить фактический тип объекта во время выполнения программы • Позволяет хранить ссылку на объект подкласса в переменной суперкласса
Пример полиморфизма class Shape { void draw( ) { //реализация метода } } class Circle extends Shape { void draw( ) { //реализация метода } } Shape s ; Circle c ; c = new Circle( ); s = с; s. draw( );
Интерфейсы • Позволяют определить сигнатуру метода безотносительно класса • Не имеют полей, а методы являются абстрактными • Не чувствительны к изменению формата класса (тип полей и их количество) • Методы интерфейса должны реализовываться в классах его поддерживающих
Описание интерфейса interface ИНТЕРФЕЙС { ЗАГОЛОВОК_МЕТОДА (АРГ); }
Реализация интерфейса class КЛАСС implements СПИС. ИНТЕРФЕЙСОВ { ЗАГОЛОВОК_МЕТОДА (АРГ) { //Реализация метода для этого класса } }
Использование интерфейсов 1 2 3 4
Многие скорее считают добродетелью раскаяние в ошибках, чем желание их избежать. /Г. Лихтенберг/ Обработка ошибочных ситуаций в Java • понятие исключения • типы исключений • исключения Java • исключения пользователя
технология обработки ошибок Основная программа Передача управления Возникновение ошибки Обработчик ошибок
Форма блока обработки исключения try { //блок кода }catch(Тип. Исключения 1 e) { { //обработчик исключения }catch(Тип. Исключения 2 e) { //обработчик исключения } finally { //завершающие действия }
Иерархия исключений
Пример обработчика int d = 0; int t = 10; try { t = t /d; } catch(Arithmetic. Exception e) { System. out. println(“Divide by zero”); }
Механизм поиска обработчика • Просматриваются catch-блоки путем сравнения типа инициированного исключения • Если найден catch-блок совпадающий любым типом из иерархии (от Exception до типа инициированного исключения) он получает управление • Если catch-блок не найден просматриваются блоки верхних уровней • Если ни на одном из уровней catch-блоки не найдены программа завершается
Передача исключений вызывающим методам ЗАГОЛОВОК_МЕТОДА(АРГ) throws СПИС. ИСКЛ { //реализация метода без обработки исключений //указанный в списке throws }
Возбуждение исключений throw ОБЪЕКТ_ИСКЛЮЧЕНИЕ
Создание собственных исключений • Создайте подкласс от класса Exception • Определите обработчики для вашего исключения во всех методах, где это необходимо • В методах где ваше исключение не обрабатывается, но его возбуждение возможно укажите список throws • Для возбуждения исключения используйте оператор throw.
Все уже описано. К счастью, не обо всем еще подумано. /С. Лец/ Стандартные классы Java • String • Vector • Hash. Table • Runtime
Создание строк String s = “abcd”; String s = new String( ); char Arr[ ] ={ ‘a’, ’b’, ’c’, ’d’}; String s = new String(Arr, 2, 1);
Слияние строк String s = “He is “ + age + “ years old”; String s = new String. Buffer(“He is”). append(age). append(“years old”). to. String( ); Все операции по изменению строк проводятся через объекты родственного класса String. Buffer
Перевод значения стандартного типа в строку String ПЕР = String. value. Of(ПСТ); String L = String. value. Of(123456789); System. out. println(L);
Преобразование объекта в строку class Point { int x, y; Point(int x, int y){ this. x = x; this. y = y; } public String to. String( ) { return "Point["+x+", "+y+"]"; } }
Извлечение символов String s = “This is example”; char c =s. char. At(3) String s = “This is example”; char buf[ ] = new char[5]; s. get. Chars(2, 6, buf, 0);
Сравнение строк String s 1 = “Hello”; String s 2 = “HELLO”; s 1. equals(s 2); //неравные строки -> false s 1. equals. Ignore. Case(s 2); //строки равны -> true
Поиск подстроки boolean region. Matches(int toffset, String other, int ooffset, int len); boolean region. Matches(boolean ignore. Case, int toffset, String other, int ooffset, int len); String s 1 = “Hello”; String s 2 = “HELLO WORLD”; s 1. region. Mathes(0, s 2, 0, 11); // false s 1. region. Mathes(0, s 2, 0, 5); // false s 1. region. Mathes(true, 0, s 2, 0, 5); //true
Подробное сравнение строк public int compare. To(String another. String); > 0 - строка больше чем another. String < 0 - another. String больше чем строка = 0 - строки равны
Некоторые методы класса String public String substring(int begin. Index, int end. Index) ; //извлечение подстроки public String replace(char old. Char, char new. Char); //замена всех символов // old. Char в строке на символ new. Char public boolean starts. With(String prefix, int toffset) ; //определить, начало //строки совпадает с prefix public String to. Upper. Case( ); //перевести все символы //в верхний регистр
Класс Vector Некоторые методы • add. Element(ОБЪЕКТ) - добавление • element. At(ИНДЕКС) - получение • remove. Element. At(ИНДЕКС) - удаление • capacity( ) - емкость вектора • size( ) - количество элементов в векторе
Класс Stack Некоторые методы • push(ОБЪЕКТ) - поместить в стек • pop( ) - получить элемент на вершине стека и удалить • peek( ) - получить элемент на вершине стека, но не удалять его • search(ОБЪЕКТ) - вернуть индекс объекта в стеке, если есть (-1 объекта нет)
Интерфейс Enumeration • elements( ) - вернуть ссылку на Enumeration (метод принадлежит объекту-структуре данных) • has. More. Elements( ) - вернуть true - если получены еще не все элементы • next. Elements( ) - возвратить текущий элемент
Класс Object перегрузка некоторых методов
Under construction!!!
Два человека одинаковой комплекции дрались бы недолго, если бы сила одного превозмогла силу другого. /К. Прутков/ Параллельная обработка использование потоков в Java и управление ими
Необходимость параллельной обработки • Блокировка программы когда ожидается приема данных откуда-либо или при иной операции • Сложные вычислительные операции или операции при работе с графическим изображением • Выполнение фоновой работы не связанной напрямую с решением задачи
Сущность параллельной обработки Основной поток команд Приложение доп. поток № 1 команд доп. поток №N команд
Понятия параллельной обработки • • • Поток команд Выполнение потоков Приоритеты потоков Сообщения Синхронизация взаимные блокировки
Жизнь и периоды потока Создание потока start( ) stop( ) suspend( ) Работа потока Приостановка потока resume( ) Завершение потока stop( ) завершение
Класс Thread • Реализует поток команд • Метод run( ) содержит основной алгоритм потока команд • Метод start( ) запускает поток • Метод stop( ) завершает поток • Метод suspend( ) приостанавливает поток • Метод resume( ) возобновляет поток
Создание собственного потока class ИМЯ extends Thread { public void run( ) { //реализация алгоритма потока } }
Использование интерфейса Runnable • Необходимо когда определенный класс должен реализовать поток, и одновременно он наследуется от другого класса • Требует реализации метода run( ) где содержится основной алгоритм потока
Применение Runnable class Circle extends Shape implements Runnable { public void draw( ) { //реализация метода } public void run( ) { while(true) draw( ); //вызов метода } }
Применение Runnable Circle c = new Circle( ); Thread t = new Thread(c); t. start( );
Проблемы многопоточной обработки • Два потока могут одновременно вызывать один и тот же метод с одним набором данных • Взаимное влияние на изменение состояния переменных несколькими потоками одновременно • Взаимные блокировки
Синхронизация synchronized Обработка данных
Реализация синхронизации метода synchronized ЗАГОЛОВОК_МЕТОДА(АРГ) { //реализация метода. Гарантируется, что //вызов будет только одним потоком, а не //несколькими }
Реализация синхронизации для блока работы с объектом synchronized(ОБЪЕКТ) { //группа операторов, работающих //с объектом. Гарантируется, что //здесь работу ведет только один поток, //а все остальные в состоянии ожидания }
Взаимодействие потоков wait( ); //переводит текущий поток в режим //ожидания notify( ); //выводит первый поток из состояния //ожидания, вызвавший ранее wait( ) //с данным объектом notify. All( ); //выводит из состояния ожидания //все потоки, вызвавшие ранее wait( ) //с данным объектом
Взаимная блокировка Блокировка A Блокировка B synchronized(a){ synchronized(b) { } } synchronized(b){ synchronized(a) { } } Блокировка A
Приоритеты потоков • Каждый поток может иметь определенный приоритет • Все потоки начинают жизнь с приоритетом, равным приоритету потока, который их создал • В процессе работы можно изменить приоритет потока // set. Priority( )
Групповое управление потоками Главная группа 1 группа А 2 3 группа C группа B 5 группа D 4
Объединение потоков в группу Thread. Group top. Group = new Thread. Group(“Top. Group”); Thread thread 1 = new Thread(top. Group, ”Thread 1”); Thread thread 2 = new Thread(top. Group, ”Thread 2”); top. Group. start( ); … top. Group. stop( );
Природу легче всего подчинить, повинуясь ей. /Ф. Бэкон/ Апплеты Основы Политика безопасности Графические примитивы
Понятие апплета Броузер Контроль безопасности Вызов метода Апплет Выполнение команд метода
Жизненный цикл апплета апплет на WWW сервере
Тег загрузки апплета
Синтаксис тега
Передача параметров
Апплет class ИМЯ extends Applet { //реализация апплета }
Основные методы класса Applet • init( ) Вызывается после загрузки апплета • start( ) Вызывается при старте апплета или возобновлении его работы • paint( ) Вызывается при необходимости прорисовки апплета • update( ) Закраска фоном и последующий вызов метода paint( ) • stop( ) - Вызывается, когда броузер покидает документ с апплетом • destroy( ) - Вызывается, когда апплет удаляется из памяти
Политика безопасности • Броузер осуществляет постоянный контроль за апплетом • При попытки нарушения генерируется исключение Security. Exception • Применяется разная политика к апплетам загруженным по сети или локально • Загруженные по сети апплеты не могут: читать или писать в файлы, получать информацию о каких-либо файлах системы, запускать процессы, и т. д.
Прорисовка апплета public void paint(Graphics ОБЪЕКТ) { //формирование изображения } Graphics
Класс Graphics • Является средством доступа к области прорисовки • Содержит методы отрисовки простейших фигур • Позволяет оперировать цветом и шрифтами
Некоторые методы класса Graphics • draw. Rect( int x, int y, int dx, int dy) прямоугольник • fill. Rect(int x, int y, int dx, int dy) - закрашенный прямоугольник • draw. String(String s, int x, int y) - рисование строки в текущих координатах
Рисование окружностей и подобных фигур классом Graphics X dx Y Start. Angle dy End. Angle = 00
Некоторые методы класса Graphics • draw. Arc(int x, int y, int dx, int dy, int Start. Angle, int End. Angle) - рисует дугу, ограниченную прямоугольником • draw. Polygon(int x[ ], int y[ ], int counts) рисование контура
Закругленные прямоугольники x dx width y dy • draw. Round. Rect(int x, int y, int dx, int dy, int width, int height) height
Управление текущим цветом new Color(int r, int g, int b) new Color(int color) Color. ИМЯ_ЦВЕТА • Создать новый объект класса Color, указав нужный цвет • вызвать метод set. Color( ) и передать ему ранее созданный объект класса Color
Управление шрифтом new Font(ИМЯ_ШРИФТА, СТИЛЬ, ВЫСОТА) • Создать объект класса Font • Вызвать метод set. Font( ) и передать ему созданный ранее объект класса Font
Метрики шрифта height X ascent Java-glasgow baseline Y descent • get. Font. Metrics( ) - получить объект Font. Metrics
Художник думает рисунком. /С. Дали/ Работа с графическим изображением • Загрузка графических изображений • Использование буферизации • Создание анимации
Загрузка графических изображений Image ОБЪЕКТ = get. Image(URL, ИМЯ); Апплет порции paint( ) изображения
Использование интерфейса Image. Observer public class Sample extends Applet implements Image. Observer { public boolean image. Update(Image img, int status, int x, int y, int width, int height) { //контроль загрузки графического изображения } }
Флаги интерфейса Image. Observer
Использование Media. Tracker tracker = new Media. Tracker(this) Image image = get. Image(get. Document. Base(), «example. gif» )); tracker. add. Image(image, id); if (tracked. check. ID(id) == true) { //изображение готово }
Создание анимационного апплета • Апплет должен реализовывать интерфейс Runnable • Загрузите кадры-изображения в методе init( ) • Реализуйте в методе run( ) бесконечный цикл, с вызовом метода repaint( ) • В методе paint( ) реализуйте прорисовку нужного изображения и переключение счетчиков кадра
Использование двойной буферизации • Создать буферное изображение • Обеспечить, чтобы только метод update( ) вызывал метод paint( ) • Выполнить весь рисунок в буферном изображении • Нарисовать буферное изображение в окне (апплете), применив метод draw. Image( )
Создание буферного изображения Image off. Screen = create. Image(width, height) Graphics g. Off = off. Screen. get. Graphics( )
Выполнение рисунка в буфере g. Off. fill. Rect(x, y, width, height); g. Off. draw. String(“Hello”, 5, 2);
Перенос буферного рисунка на экран public void paint(Graphics g) { g. draw. Image(off. Screen, 0, 0, this) }
Когда будет нужно вас позовут /О. Бендер/ Взаимодействие апплетов с пользователем • Модель «реакции на события» • Работа с окном • Использование органов управления
Модель «реакция на события» public boolean action. Perfomed( … ) { //реакция на события }
Механизм обработки события Адаптер Обработчик
Схема адаптера события class ИМЯ implements ИНТЕРФЕЙС_СОБЫТИЯ { ЭЛЕМЕНТ p; ИМЯ(ЭЛЕМЕНТ p) { this. p = p; } ОБРАБОТЧИК(ОПИСАТЕЛЬ e) { p. ОБРАБОТЧИК(e) } }
Регистрация адаптера ОБЪЕКТ. add. ТИП_СОБЫТИЯListener(АДАПТЕР)
Интерфейс общего события элемента (action) interface Action. Listener { public abstract void action. Performed(Action. Event e) } e. get. ID( ) - тип события
интерфейс события мыши (mouse) interface Mouse. Listener { mouse. Clicked(Mouse. Event); mouse. Entered(Mouse. Event) ; mouse. Exited(Mouse. Event); mouse. Pressed(Mouse. Event); mouse. Released(Mouse. Event) } class Mouse. Event { int get. X(); int get. Y(); Point get. Point(); *** } class Mouse. Adapter implements Mouse. Listerner { *** }
Интерфейс события клавиатуры (key) interface Key. Listener { key. Pressed(Key. Event) ; key. Released(Key. Event); key. Typed(Key. Event); } class Key. Event { public char get. Key. Char( ); public int get. Key. Code( ) *** } class Key. Adapter implements Mouse. Listerner { *** }
Интерфейс событий компонента (component) interface Component. Listener { component. Hidden(Component. Event) ; component. Moved(Component. Event); component. Resized(Component. Event); component. Shown(Component. Event); } class Component. Event { public Component get. Component( ) }
Интерфейс событий фокуса ввода (Focus) interface Focus. Listener { focus. Gained(Focus. Event) focus. Lost(Focus. Event) } class Focus. Event { public int get. ID( ) } class Focus. Adapter { *** }
Пример реакции на движения мыши public boolean handle. Event(Event e) { if(e. id = = Event. MOUSE_DRAG) { Graphics g = get. Graphics( ); g. draw. String( «Hello» , e. x, e. y); } }
Работа с элементами управления • Создать менеджер компоновки • Создать элемент управления • Поместить элемент управления в контейнер, вызвав метод add( ) • Описать обработку события для этого элемента путем регистрации адаптера и создания обработчика
Менеджер компоновки Элемент управления
Стандартные менеджеры компоновки • • • Последовательная укладка (Flow. Layout) Укладка - компас (Border. Layout) Укладка таблицей (Grid. Layout) Укладка сложной таблицей (Grid. Bag. Layout) Карточная укладка (Card. Layout)
Установка менеджера компоновки set. Layout(new МЕНЕДЖЕР_КОМПОНОВКИ( ));
Укладка - компас North West Center East South add(РАСПОЛОЖЕНИЕ, ЭЛЕМЕНТ);
Класс Frame • Реализует объект окно • Позволяет, как и в апплете размещать элементы управления • Поддерживает модель «реакции на события»
Кто не предъявляет своих требований, о том никто не заботится. /Н. Г. Чернышевский/ Организация доступа к базам данных на основе пакета Java Database Connectivity • Технология JDBC • Подключение к базе данных • Организация запросов набора данных • Работа с результатами запросов
Технология JDBC Java-приложение Диспетчер драйверов Драйвер базы данных СУБД JDBC
Типы JDBC драйверов • • JDBC-ODBC bridge Native-API JDBC-Net Native pure Java Native-protocol pure Java driver
JDBC-ODBC bridge Java-приложение Диспетчер драйверов JDBC-ODBC bridge ODBC Драйвер базы данных СУБД
Подключение к базе данных Connection ОБЪЕКТ= Driver. Manager. get. Connection(URL) URL “JDBC: ДОП ПРОТОКОЛ: ДОП ИМЯ” ДОП ПРОТОКОЛ ODBC драйвер ODBC ДОП ИМЯ ИСТОЧНИК; АТРИБУТЫ
Загрузка класса драйвера try { Class ОБЪЕКТ = Class. for. Name( «ИМЯ КЛАССА» ); } catch (Class. Not. Found. Exception e) { //невозможно загрузить класс }
Driver. Manager • Управляет подключениями к базам данных, включая регистрацию пользователей СУБД • Регистрация новых не предустановленных драйверов - объектов, классы которых реализуют интерфейс Driver • Управление таймаутом подключения к СУБД • Вывод информации в протокол отладки драйвера базы данных
Connection • Позволяет получить доступ к хранилищу SQL команд Statement - Create. Statement( ) • Позволяет осуществлять управление транзакциями: – set. Auto. Commit( ) – commit( ) – rollback( ) • Позволяет получить доступ к метаданным get. Meta. Data( )
Организация запросов к базе данных • Statement - простой запрос • Prepared. Statement - Запрос с параметрами • Callable. Statement - Выполнение хранимых процедур Connection con = Driver. Manager. get. Connection(URL); Statement ОБЪЕКТ = con. create. Statement( );
Выполнение запроса при помощи Statement-объекта Statement db. Stat = con. create. Statement( ); Result. Set ОБЪЕКТ = db. Stat. execute. Query(SQL) Result. Set
Доступ к полям при помощи объектов класса Result. Set get. ТИП(ИМЯ ПОЛЯ) get. ТИП(НОМЕР ПОЛЯ) • String • Object • Int • Long • Float • Double • Date • Short next( ) previous( ) чтение • Time • Blob Перемещение по записям
Запрос с параметрами Prepared. Statement ОБЪЕКТ = con. Prepared. Statement( «SQL с параметрами» ); SELECT * FROM PEOPLE WHERE FISTNAME = ? AND LASTNAME= ? ОБЪЕКТ. set. ТИП(НОМЕР, ЗНАЧЕНИЕ)
Применение технологии Java в Web-приложениях • Java Server Page • Servlet
Основные положения технологии Java-servlet • Основывается на технологии Java • Запрос от http-клиента выполняется Javaприложением – сервлетом • Сервлет имеет возможность полного использования Java API и его подмножеств – Java MAIL, JDC, …
http-сервера с поддержкой Java-servlet • Apache-Tomcat • Java Web Development KIT • Java Web Server 2. 0
Структура servletа public class ИМЯ extends HTTPServlet { protected void do. Get(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { //обработка GET-запроса} protected void do. Post(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { //обработка POST-запроса} ***//аналогичные методы для других методов //http-протокола }
Пример простого servleta import java. io. *; import javax. servlet. http. *; public class Hello. World extends Http. Servlet { public void do. Get(Http. Servlet. Request request, Http. Servlet. Response response) throws Servlet. Exception, IOException { Print. Writer out = response. get. Writer( ); out. println("Hello World"); } }
Инкапсуляция запроса • Запрос в объекте класса Http. Servlet. Request • Некоторые методы класса Http. Servlet. Request – – – – get. Parameter(“ИМЯ”) get. Parameter. Names( ) get. Content. Type( ) get. Content. Length( ) get. Remote. Addr( ) get. Locale( ) get. Session( ) или get. Session(флаг_создания_сессии)
Инкапсуляция http-сессии • Объект класса HTTPSession • Некоторые методы класса HTTPSession – get. Id() – get. Attribute(“ИМЯ”) – set. Attribute(“ИМЯ”, ЗНАЧЕНИЕ) – is. New( ) – set. Max. Inactive. Interval(ИНТЕРВАЛсекунды) – invalidate( )
Инкапсуляция http-ответа • Объект класса Http. Response • Некоторые методы и константы – SC_xxx – add. Header(“ИМЯ”, ”ЗНАЧЕНИЕ”) – send. Error(СТАТУС, “ПОЯСНЕНИЕ”) – get. Writer( ) – set. Content. Type(“MIME-тип”) – send. Redirect(“URL”)