Короткий огляд технологій динамічного формування HTML сторінок, HTML, XML, DHTML, Інтернет-технології, статті

Введення.


Написати цю статтю мене спонукала та обставина, що, на жаль, на даний момент російськомовна аудиторія чомусь абсолютно ігнорує цю тему. Звісно технологія досить нова, може бути трохи складніше, ніж хотілося б, проте дуже цікава і, на мій погляд, має великі перспективи.

Англомовний Internet не так консервативний і намагається просувати JSP, проте і в ньому знайти корисного можна не так багато як хотілося б. Навіть такий гігант як IBM намагається (на мою думку) стати основним постачальником рішень для Java, хоч і дає інформацію (всі посилання ви знайдете в кінці огляду), але в дуже малій кількості. Звичайно, у кого є достатні грошові ресурси, можуть зайти на сервер www.amazon.com/, Набрати в рядку пошуку “JSP” і отримати в результаті пошуку як мінімум 40 видань, присвячених даній темі, за ціною від 40 доларів і вище.

А якщо вам це не по кишені, то, можливо, ця публікація допоможе вам ознайомитися з JSP – чудовою технологією корпорації Sun.


Кілька слів про Java.


Головний девіз Java, який ви знайдете на будь web-сторінці фірми Sun – “Написано один раз – працює скрізь”. Однак виникає питання – “А навіщо, то що ми написали повинно працювати скрізь?”.


За статистикою близько 90% кінцевих користувачів працюють на комп’ютерах зі встановленою 32-розрядної ОС Windows. Так що досить написати програму, яка буде працювати під Windows і девіз фірми Sun можна, з деякими застереженнями застосувати наприклад і для Delphi – “Написане одного разу на Delphi – працює майже скрізь” (жарт). Якщо серйозно підійти до цього питання, то треба собі поставити запитання: а якою ціною ваша програма, написана на Java, працює скрізь. А ціна цього – продуктивність. Я думаю ні для кого не секрет, що програми, написані на Java, працюють під управлінням віртуальної машини Java. Тож виникає проблема: писати, то що працює повільніше але повсюдно, або те, що працює прийнятно, але тільки під Windows. Але не треба турбуватися, не все так погано в королівстві Java (Навпаки, все дуже навіть добре! Навіть під ОС Windows постійна міграція додатків на Java видна неозброєним оком. Це, до речі, особливо видно в Європі та Скандинавії. Прим. Ред.). Один із секторів, в якому Java більш ніж доречна – це додатки для Internet.

Короткий огляд технологій динамічного формування HTML сторінок.

Динамічне формування Web сторінок – тема досить стара. І вона існувала задовго до появи Java. Одним з улюблених інструментів фахівців був і залишається мова Perl. І, напевно, Perl залишиться надовго – надто вже багато на ньому всього написано, витрачені колосальні зусилля, щоб просто так все кинути і кинутися з головою в ASP, JSP, XML, сервлети і т.п. (Любителям абревіатури рекомендую відвідати сервер www.computerjobs.com там ви знайдете все, що зараз в моді).

Однією з основних технологій підтримки динамічних таблиць є CGI. У ній використовується величезна кількість мов, але основним, судячи з усього, є все ж Perl. Плюси такої реалізації тільки в те, що напрацьовано велику кількість рішень, не треба нічого вигадувати, та й документації написано величезна кількість. Мінуси – це продуктивність. У CGI-моделі кожен раз при надходженні запиту від користувача ініціюється новий процес, внаслідок чого характеристики сервера погіршуються. Крім цього CGI-програми не можуть взаємодіяти з Web сервером, т.к. вони виконуються в різних потоках.

Тепер про ASP. Свого часу компанія Microsoft дуже прагнула завоювати ринок Web. Пакети випускалися один за іншим. І в якійсь мірі завдання захоплення Web вдалася – якщо знову закликати на допомогу статистику, то виявиться, що близько 20% Web серверів побудовані на основі Internet Information Service – зовсім непогано (Але це й не такий видатний результат, як у Apache J Прим. Ред.). Так от в основі технології ASP – ключовому елементі IIS – лежить все та ж знаменита компонентна технологія COM. Так що писати ASP можна з використанням тих продуктів, які можуть оперувати з COM-об’єктами (природно вся лінійка продуктів від Microsoft, а також Delphi і C + + Builder від Borland та ін.) Мінусом є лише те, що ви будете обмежені тільки однією операційною системою Windows.


Крім цього існують Netscape NSAPI і Microsoft ISAPI. Це програмні інтерфейси прямих викликів сервісів конкретного сервера Web. Тут ми маємо гарні результати в продуктивності, проте дуже сильно прив’язані до конкретного сервера. Розробка так само усложнаяется.


Сервлети і JSP.

Java-рішення для формування дінамічекіх сторінок. Сервлет – програма на Java яка виконується всередині Web сервера або сервера додатків (Як правило, для таких цілей у серверів додатків є спеціальні web-контейнери. Прим. Ред.). JSP – технологія, що дозволяє динамічно згенерувати відповідь сервера. Основне її застосування – відокремити зовнішній дизайн і програмний код в HTML-сторінках.


На питання “що все таки краще, а що гірше”, по-моєму, відповіді не існує. А ось обчислити, що популярніше набагато простіше. Скористаємося інформацією сервера www.computerjobs.com і в рядку пошуку наберемо ASP, потім Perl і потім JSP. Ось, що у Вас приблизно вийде.
















Категорія Кількість пропозицій від роботодавців
Загальне у пропозицій 67332
ASP 4121
Perl 2709
JSP 1179

Як говоритися, статистика річ уперта, звичайно Америка нам не указ, але все ж ми можемо отримати загальну розстановку сил

Використання JDBC.


І знову статистика. Майже 50% всіх програм використовують у тій чи іншій мірі доступ до баз даних (“Thinking in Java, 2nd Edition” Bruce Eckel стор 920). Так що для багатьох розробників це дуже цікавий питання. У даному огляді ми будемо будувати перші сторінки віртуального Internet-магазину. При доступі до таблиць БД ми будемо використовувати JDBC. Чому JDBC, а не DataExpress? Це, звичайно, приватна думка, але мені здається, що використовувати JDBC набагато простіше (в сенсі кількості рядків у програмі), наприклад запит до таблиці:


JDBC версія


Connection con;
ResultSet rs;
PreparedStatement pstmt;
String email = new String (“bob@mail.ru”);


/ / З’єднання з сервером
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
con = DriverManager.getConnection (“jdbc:oracle:thin:@192.37.3.58:1521:BOOK”, “scott”, “tiger”);


/ / Виконання запиту
pstmt = con.prepareStatement (“Select * from customer where email = ?”);
pstmt.setString(1, email);
rs = pstmt.executeQuery();


/ / Друк результатів
while (rs.next ()) System.out.println(rs.getString(“Name”));


DataExpress версія


QueryDataSet queryDataSet1 = new QueryDataSet();
ParameterRow parameterRow1 = new ParameterRow();
Column column1 = new Column();


/ / З’єднання з сервером
queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, “SELECT * FROM CUSTOMER WHERE EMAIL = :EMAIL”, parameterRow1, false, Load.ALL));
database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor(“jdbc:odbc:dataset book”, “SYSDBA”, “masterkey”, false, “sun.jdbc.odbc.JdbcOdbcDriver”));


/ / Установка властивостей
column1.setColumnName(“EMAIL”);
column1.setDataType(com.borland.dx.dataset.Variant.STRING);
column1.setServerColumnName(“NewColumn1”);
column1.setSqlType(0);
parameterRow1.setColumns(new Column[] {column1});
parameterRow1.setString(“EMAIL”,”bob@mail.ru”);


/ / Виконання запиту
queryDataSet1.executeQuery();


/ / Друк результатів
while (queryDataSet1.next()) System.out.println (queryDataSet1.format(“Name”));


Як бачите результат один і той же, а шляхи його досягнення – різні. Причому, на мій погляд, другий довше. Однак не будемо забувати, що другий був створений автоматично в середовищі пакету JBuilder. Так що вам вирішувати, що вважати за краще. Що стосується мене, то я вибираю перший варіант. Крім простоти реалізації, ми можемо використовувати вже напрацьований код (наприклад пул з’єднань з базою даних).


Прим. У JBuilder 4, наскільки мені відомо, з’явився набір нових компонент для побудови Internet-додатків InternetBeans, але я нічого не можу сказати з цього приводу, тому що я не мав ще можливості оцінити нових продукт від Borland (Коментар).


Практична реалізація.


Для прикладу ми розглянемо кілька перших сторінок Internet-магазину, який торгує книгами. Як сервер додатків (контейнера), який буде управляти компіляцією, запускати наші JSP-сторінки і сервлети, ми будемо використовувати Tomcat 3.1. В принципі, ті користувачі, хто працює з JBuilder Enterprise, можуть скористатися вбудованим сервером. Перевага використання Tomcat тільки в тому, що користувачі володіють JBuilder Foundation (розповсюджується безкоштовно) можуть також проектувати, налагоджувати й виконувати JSP сторінки і сервлети. Установки для роботи з Tomcat 3.1 ви можете знайти за адресою community.borland.com/article/0,1410,22057,00.html.


Прим. Для користувачів JBuilder 3.0 зробити все те ж саме, але встановити виконуваним файлом Tomcat.java, який можна знайти в [TOMCAT_HOME] srcorgapache omcatstartupTomcat.java

– створюємо клас Book з ідентифікатором book. У зв’язку з тим, що всі наші класи будуть мати максимальну область видимості “session”, то немає потреби замислюватися про синхронізацію потоків.


Book.jsp.


Сторінка, де формується відомості про конкретну книжку. Крім цього формується список з думками читачів, якщо вони є.


AddOpinion.jsp.


Сторінка, де користувач може висловити свою думку про книгу. Для цього ми будемо використовувати форму і два приховані поля, що б ідентифікувати запит
<input type=”hidden” name=”bookId” value=”<%= bookId %>”>
<input type=”hidden” name=”thankx” value=”opinion”>


Thankx.jsp


Після відправки форми викликається сторінка Thankx.jsp, яка буде використовуватися для різних “дякую” і її зміст буде змінюватися в залежності від значення параметра Thankx. У нашому випадку ми використовуємо метод addOpinion класу Opinion.


Одне зауваження з приводу перекодування. Т.к. ми змусили користувача використовувати кодування Cp1251, в кожній JSP сторінці є рядок
<%@ page contentType=”text/html; charset=windows-1251″ %>
то наступний процес перекодування вірний і ми можемо спокійно користуватися цією обставиною в Opinion.java String opinion = new String (req.getParameter (“opiniontext”). getBytes (“ISO-8859-1”), “Cp1251”)


Чого не вистачає в додатку?


Сподіваюся, що в продовженні статті ми розглянемо всі ці питання і наше додаток буде повністю відповідати всім вимогам віртуального магазину.


Програми


Таблиці бази даних.


Цей додаток було побудовано з використанням сервера Oracle, тому файл crttbl.sql використовує діалект цього сервера. Я думаю, що не складе труднощів перевести його на інший сервер.


Менеджер з’єднань.


Його теж потрібно настроїти. Для цього існує файл
[TOMCAT_HOME] webapps ookshopWEB-INFclassesdb.properties Ñ Ð ¾ Ñ Ð »ÐμÐ’ÑƒÑŽÑ ‰ Ð ¸ Ð ¼ Ñ Ð ¾ Ð’ÐμÐ ¾ Ð ¶ Ð ° Ð ½ Ð ¸ ÐμÐ ¼


Надалі ви будете використовувати ім’я guest для з’єднань з базою даних. Взагалі цей файл може перебувати де завгодно аби цей шлях був доступний через змінну CLASSPATH. У нашому випадку TomCat Ð’Ð ¾ Ð ± Ð ° Ð ² Ð »Ñ ÐμÑ, Ð ¿ÑƒÑ, ÑŒ [TOMCAT_HOME] webapps ookshopWEB-INFclasses Ð ² Ð ¾ Ð ² Ñ € ÐμÐ ¼ Ñ Ð · Ð ° Ð ¿ÑƒÑ Ð º Ð °.


Корисні посилання.


Всі номери англомовні, якщо хтось додасть до цього списку російськомовні ресурси, то буду дуже радий

Установка нової програми Tomcat.


Повинна вийти наступна структура каталогів, ви можете зберегти її під ім’ям наприклад template і потім використовувати при створенні нових додатків для Tomcat.

ÐšÑ € Ð ¾ Ð ¼ Ðμ Ñ Ñ, Ð ¾ Ð ³ Ð ¾ Ð ² Ð º Ð ° Ñ, Ð ° Ð »Ð ¾ Ð ³ Ðμ [TOMCAT_HOME] webapps ookshopWEB-INF Ð ¼ Ð ¾ Ð ¶ ÐμÑ, Ð ¿Ñ € Ð ¸ Ñ ÑƒÑ, Ñ Ð ² Ð ¾ Ð ² Ð ° Ñ, ÑŒ Ñ” Ð ° Ð ¹ Ð »web . xml-Ñ Ñ, Ð ¾ Ð ² Ð ° Ñ Ð »Ð ¾ Ð º Ð ° л ьР½ Ñ <Ð ¹ Ñ "Ð ° Ð ¹ л, Ð º Ð ¾ Ñ, Ð ¾ Ñ € Ñ <Ð ¹ Ð ¿ÐμÑ € ÐμÐ º Ñ € Ñ <Ð ² Ð ° ÐμÑ, ÑƒÑ Ñ, Ð ° Ð ½ Ð ¾ Ð ² Ð º Ð ¸ Ð ² Ð ³ Ð »Ð ¾ Ð ± Ð ° л ьР½ Ð ¾ Ð ¼ web.xml [TOMCAT_HOME] confweb.xml.Ð ~ Ð ¿Ð ¾ Ñ Ð »ÐμÐ'Ð ½ Ð ¸ Ð ¹ штрих в файл [TOMCAT_HOME] confserver.xml необхідно додати рядок.


<Context path=”/bookshop” docBase=”webapps/bookshop” debug=”0″ reloadable=”true” ></Context>


Цією рядком ви створюєте додаток bookshop.


Прим. Ще трохи про структуру каталогів та програми. Файл виконується за замовчуванням при завантаженні програми (тобто http://localhost:8080/bookshop) – index.html.
Ð’Ð ° ÑÐ ¸ Ð º Ð »Ð ° Ñ Ñ Ñ <Ð'Ð ¾ л Ð ¶ Ð ½ Ñ <Ð ½ Ð ° Ñ ... Ð ¾ Ð'Ð ¸ Ñ, ÑŒÑ Ñ Ð »Ð ¸ Ð ± Ð ¾ Ð ² CLASSPATH л Ð ¸ Ð ± Ð ¾ Ð ² Ð º Ð ° Ñ, Ð ° Ð »Ð ¾ Ð ³ Ðμ [TOMCAT_HOME] webapps ookshopWEB-INFclasses (Ñ Ñ, Ð ¾ Ñ, Ð ¿ÑƒÑ, ÑŒ Ð ° Ð ² Ñ, Ð ¾ Ð ¼ Ð ° Ñ, Ð ¸ Ñ ‡ ÐμÑ Ð º Ð ¸ Ð ¿Ð ¾ Ð ¿Ð ° Ð 'Ð ° ÐμÑ, Ð ² CLASSPATH Ð ¿Ñ € Ð ¸ Ð · Ð ° Ð ³ Ñ € уР· Ð º Ðμ Tomcat)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*