|
|
|||||||||||||||||||||||||||||
|
Java и данные из Oracle в web - все очень простоВладимир Пржиялковский
Содержание
Это третья статья из серии про употребление Java в Oracle. Напомню, что цель серии - показать, что средств обыкновенной штатной поставки Oracle Enterprise Edition или Standard Edition хватает, чтобы строить Java-приложения для Oracle, в том числе для использования в сети web. Web-сервер Apache и его расширения JServ и TomcatВ качестве базового элемента операционной среды построения web-узлов на базе своей СУБД фирма Oracle, начиная с версии 8.1.6 (и продолжая версией 9), выбрала web-сервер Apache. Для эффективного обслуживания большого числа одновременных запросов по internet в web-сервере Apache имеется поддержка механизма сервлетов (servlets). Она реализуется средствами так называемого сервера JServ, являющегося расширением базовой поставки Apache (модулем сервлетов по терминологии, принятой в проекте Apache), и предназначенного именно для сервлетов на Java. Нынешняя разработка очередных версий Apache происходит в рамках более общего проекта Jakarta, и в рамках того же проекта создается сервер поддержки сервлетов Tomcat, предлагаемый на смену JServ. В штатной поставке Oracle сервер Apache уже сконфигурирован с JServ. Тем не менее, установка и того, и другого может быть при желании осуществлена самостоятельно (см. http://java.apache.org/ и httpd.apache.org). В примерах ниже значения настроек Apache и JServ соответствуют штатной поставке Oracle. Эти настройки несколько разнятся в версиях 8.1 и 9. Например, в поставках 8.1 используется HTTP-порт № 80, а в версии 9 - порт № 7778. В примерах ниже используется вариант порта версии 8.1, который, к тому же, обычно воспринимается браузерами номером порта по умолчанию. Имена каталогов в примерах также относятся к версии 8.1 и могут несколько отличаться от версии 9. Для дальнейшей работы удобно завести переменные среды окружения ОС: set APACHE_HOME=%ORACLE_HOME%\Apache\Apache Работа с сервлетами JavaОбщие сведения о сервлетах Java в webJava-сервлет представляет собой Java-программу, хранимую на web-сервере (точнее - в модуле JServ или Tomcat), кешируемую и исполняемую там же. С точки зрения Java, сервлет - это объект класса (прямо или опосредованно) javax.servlet.GenericServlet, удовлетворяющего интерфейсу javax.servlet.Servlet. Сервлет обладает всеми возможностями объектов Java, например, общения с данными Oracle. Наборы классов и интерфейсов, удобных для создания сервлетов Java в web, содержатся в двух пакетах: javax.servlet и javax.servlet.http. Согласно интерфейсу javax.servlet.Servlet сервлет имеет жизненный цикл, диктуемый следующими методами: public void init (ServletConfig config) throws ServletException;
public void service (ServletRequest request, ServletResponse response)
public void destroy();
Интерфейс javax.servlet.ServletRequest, которому удовлетворяет поступающий на обработку сервлетом запрос, содержит методы для получения сведений об источнике поступления запроса и о параметрах, передаваемых запросом. Интерфейс javax.servlet.ServletResponse, в соответствии с которым сервлет формирует свой ответ, содержит методы для выдачи результатов и установки характеристик выдачи. На практике сервлеты web-сервера удобнее создавать как экземпляры класса javax.servlet.http.HttpServlet, являющегося наследником GenericServlet,. Среди прочих, методы HttpServlet содержат следующие: protected void doGet (HttpServletRequest request,
protected void doPost (HttpServletRequest request,
Подробнее о технике Java Servlet см. на http://java.sun.com/products/servlet/. Пример сервлета с обращением к базе данныхНиже приводится пример файла , программирующего Java-сервлет, выдающий в браузер перечень сотрудников из схемы SCOTT
Трансляция сервлета: SET CLASSPATH=%ORACLE_HOME%\lib\servlet.jar;. Пример обращения к сервлетуПрежде, чем выполнить обращение к сервлету, следует перенести полученный в результате трансляции сервлета файл MyServletAgent.class в каталог %JSERV_HOME%\servlets. После этого достаточно в строке источника документа для браузера указать http://localhost/servlet/StaffByServletTransactional (в версии 9 -- http://localhost:7778/servlet/StaffByServletTransactional). Первое обращение к этому сервлету проинициализирует его и разместит в памяти в web-сервера, так что последующие обращения окажутся значительно быстрее. Работа с JavaServer PagesJavaServer Pages (JSP) - другая техника организации динамических web-страниц. В отличие от Java Servlets, в JSP применяется не генерация HTML-кода из программы, а вставки в HTML-код JSP-указаний, исполняемых, тем не менее, тоже на сервере. При первом обращении к JSP-странице JServ автоматически транслирует ее в Java-сервлет и впоследствии переадресует все запросы к нему. (Подробнее о технике JavaServer Pages см. на http://java.sun.com/products/jsp/). Пример составления страницы JSPДля показа работы JSP-страницы составим файл с названием :
Пример обращения к странице JSPПеренесем созданный файл в каталог %APACHE_HOME%\htdocs\demo. Обратимся из браузера по адресу http://localhost/demo/MyJSPDemo.jsp (в версии 9 http://localhost:7778/demo/MyJSPDemo.jsp). Обратим внимание, что в каталоге, обозначенном выше, появился подкаталог _pages\_demo с файлами: _MyJSPDemo$__jsp_StaticText.class Способы обращения к БД из страницы JSPВ случае JSP не существует единственного способа обращения страницы к базе данных. Вместо этого имеется несколько возможных вариантов: - прямое обращение Далее рассматриваются примеры обращения по первым двум вариантам. Пример страницы JSP с непосредственным обращением к базе данныхНиже приводится пример файла , программирующего JSP-страницу, выдающую в браузер перечень сотрудников из схемы SCOTT прямым обращением к базе:
Пример страницы JSP с обращением к базе данных с использованием собственной разметкиНиже приводится пример файла , программирующего JSP-страницу, выдающую в браузер перечень сотрудников из схемы SCOTT обращением к базе с использованием «меток пользователя» (custom tags) из библиотеки в штатной поставке Oracle (описание библиотеки - в файле %APACHE_HOME%\htdocs\WEB-INF\sqltaglib.tld):
Модель MVC организации приложения для webДля построения web-приложений на основе Java часто используют подход («модель») Model-View-Controller (MVC), предложенный фирмой Xerox в 80-х годах для своего языка Smalltalk-80. Согласно этому подходу приложение представляет собой в общем случае организованный набор страниц HTML и JSP, а также сервлетов и компонент JavaBeans и Enterprise JavaBeans (EJB). Задачи, которые решают эти элементы web-приложения, разделяются на задачи моделирования прикладной области (Model), представления данных приложения клиенту (View) и управления работой приложения (Controller):
|
|