CITKIT.ru
3 терабайта свободного софта!
Logo    
IT-рынок Новости мира IT Океан(!) софта на CITKIT.ru Форумы Поступления в библиотеку Учебный центр Курилка
CitForum    CITForum на CD Море(!) аналитической информации! :: CITFORUM.RU
IT-консалтинг Software Engineering Программирование Open Source СУБД Безопасность Internet Сети Операционные системы Hardware

23.05.2005

Google
WWW CITForum.ru

Новости мира IT:

  • 11.05 - Intel создает свою группу по Open Source
  • 11.05 - Банк контролирует использование USB устройств при помощи DeviceLock
  • 11.05 - Microsoft устранила опасную дыру в Windows
  • 11.05 - "Корпорация ОСС" создает антимонопольный альянс операторов IP-телефонии
  • 11.05 - В Mac OS X найдены множественные уязвимости
  • 11.05 - "Билайн" запускает услугу "Мобильная почта"
  • 11.05 - Две критические уязвимости в браузере Firefox 1.0.3
  • 11.05 - IBM покупает начинающую Open Source-компанию Gluecode
  • 11.05 - Microsoft готова к битве с Open Source за школы
  • 11.05 - Sun завершит "открытие" Solaris в ближайшие 45 дней
  • 11.05 - Создатели браузера Firefox выпускают юбилейные монеты в честь 50 миллионов скачанных копий
  • 11.05 - Вышла пятая версия мобильной ОС от Microsoft
  • 11.05 - Поисковые движки умнеют быстрее, чем люди
  • 11.05 - Фишеры постоянно совершенствуются
  • 11.05 - Специалисты прогнозируют появление аналога Google Adsense от "Яндекс"
  • 06.05 - ICANN озаботилась проблемой торговых марок
  • 06.05 - Google патентует сортировку новостей
  • 06.05 - Intel готовит двуядерные процессоры второго поколения
  • 06.05 - Schoolforge-UK и OSC продвигают Open Source в школы
  • 06.05 - Новая версия рекламной программы подстрекает пользователей купить ПО для своего лечения
  • 06.05 - Microsoft продает ряд своих закрытых разработок
  • 06.05 - Google Labs анонсировал ускоритель интернета
  • 06.05 - Microsoft подвешивает пиратам "морковку"
  • 06.05 - В США входят в обиход "интеллектуальные" тележки для супермаркетов
  • 06.05 - Microsoft работает над аналогом PDF
  • 05.05 - Yahoo video search теперь доступен массам
  • 05.05 - Алмазы помогут бороться с хакерами
  • 05.05 - Интернет-охоту хотят запретить
  • 05.05 - Microsoft привлекает блоггеров для теста Longhorn
  • 05.05 - Основатель Red Hat предложил Стиву Джобсу помощь в решении проблемы с торговой маркой
  • 05.05 - Компьютерная система оргкомитета Кубка мира по футболу 2006 года пострадала от червя Sober
  • 04.05 - Cisco Systems представила многофункциональный продукт Adaptive Security Appliance 5500
  • 04.05 - Администрация Евросоюза поддержала идею всеевропейской интернет-библиотеки
  • 04.05 - Компьютерный вирус дарит билеты на чемпионат мира по футболу
  • 04.05 - Лаборатория Касперского: Обзор вирусной активности - апрель 2005
  • 04.05 - Microsoft хочет отсудить у россиянина два домена
  • 04.05 - Сделка между Lenovo и IBM завершена
  • 04.05 - Эпидемия червя Sober.p зафиксирована в Западной Европе
  • 04.05 - Panda Software публикует отчет о вирусной активности за апрель
  • 03.05 - Институт SANS обновил список наиболее опасных уязвимостей

    Архив новостей >>>


  • 2003 г

    Java и данные из Oracle в web – все очень просто

    Владимир Пржиялковский,
    координатор Евро-Азиатской Группы Пользователей Oracle,
    преподаватель УКЦ Interface Ltd.

    Содержание

    Это третья статья из серии про употребление 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
    set JSERV_HOME=%ORACLE_HOME%\Apache\Jserv

    Работа с сервлетами Java

    Общие сведения о сервлетах Java в web

    Java-сервлет представляет собой 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)
    throws ServletException, IOException;

    Метод, которым машина сервлетов передает загруженному в память сервлету на обработку пришедший запрос (request) и получает от него ответ (response) всякий раз при обращении к работающему сервлету.

    public void destroy();

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

    Интерфейс javax.servlet.ServletRequest, которому удовлетворяет поступающий на обработку сервлетом запрос, содержит методы для получения сведений об источнике поступления запроса и о параметрах, передаваемых запросом.

    Интерфейс javax.servlet.ServletResponse, в соответствии с которым сервлет формирует свой ответ, содержит методы для выдачи результатов и установки характеристик выдачи.

    На практике сервлеты web-сервера удобнее создавать как экземпляры класса javax.servlet.http.HttpServlet, являющегося наследником GenericServlet,. Среди прочих, методы HttpServlet содержат следующие:

    protected void doGet (HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException;

    Метод, к которому обращается метод service класса, которому прнадлежит сервлет, для обработки операции GET, пришедшей по протоколу HTTP.

    protected void doPost (HttpServletRequest request,
    HttpServletResponse response) throws ServletException,
    IOException;

    Метод, к которому обращается метод service класса, которому прнадлежит сервлет, для обработки операции POST, пришедшей по протоколу HTTP.

    Подробнее о технике Java Servlet см. на http://java.sun.com/products/servlet/.

    Пример сервлета с обращением к базе данных

    Ниже приводится пример файла , программирующего Java-сервлет, выдающий в браузер перечень сотрудников из схемы SCOTT

    import java.io.*;
    import java.sql.*;
    import javax.servlet.*;
    import javax.servlet.http.*;

    public class StaffByServletTransactional extends HttpServlet {

    public void init(ServletConfig config) throws ServletException

    {

    super.init(config);
    try {

    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

    }

    catch (Exception e) { }
    }

    public void doGet(
    HttpServletRequest request, HttpServletResponse response)

    throws IOException, ServletException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head>");
    out.println("<title>Servlet Per Transaction Connection</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<pre>");

    Connection cn = null;

    try {
    cn = DriverManager.getConnection(
    "jdbc:oracle:thin:@localhost:1521:teacher", "scott", "tiger");
    }
    catch (Exception e) { }

    Statement st = null;
    ResultSet rs = null;

    try {
    st = cn.createStatement();
    rs = st.executeQuery("SELECT empno, ename FROM emp");

    while (rs.next()) {
    out.println("Number=" + rs.getString(1) + " " +
    "Name=" + rs.getString(2));
    }

    st.close();
    cn.close();
    }
    catch (Exception e) { }

    out.println("</pre>");
    out.println("<hr>");
    out.println("</body>");
    out.println("</html>");
    }

    public void doPost(
    HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException {
    doGet(request, response);
    }
    }

    Трансляция сервлета:

    SET CLASSPATH=%ORACLE_HOME%\lib\servlet.jar;.
    javac StaffByServletTransactional.java

    Пример обращения к сервлету

    Прежде, чем выполнить обращение к сервлету, следует перенести полученный в результате трансляции сервлета файл MyServletAgent.class в каталог %JSERV_HOME%\servlets.

    После этого достаточно в строке источника документа для браузера указать http://localhost/servlet/StaffByServletTransactional (в версии 9 -- http://localhost:7778/servlet/StaffByServletTransactional). Первое обращение к этому сервлету проинициализирует его и разместит в памяти в web-сервера, так что последующие обращения окажутся значительно быстрее.

    Работа с JavaServer Pages

    JavaServer Pages (JSP) – другая техника организации динамических web-страниц. В отличие от Java Servlets, в JSP применяется не генерация HTML-кода из программы, а вставки в HTML-код JSP-указаний, исполняемых, тем не менее, тоже на сервере. При первом обращении к JSP-странице JServ автоматически транслирует ее в Java-сервлет и впоследствии переадресует все запросы к нему.

    (Подробнее о технике JavaServer Pages см. на http://java.sun.com/products/jsp/).

    Пример составления страницы JSP

    Для показа работы JSP-страницы составим файл с названием :

    <html>

    <head><title>MyJSPDemo JSP demo</title></head>

    <body>
    < h2>Hello, JSP World</h2>
    whith date <%= new java.util.Date().toString() %> now
    and User-Agent <%= request.getHeader("User-Agent") %>
    < /body>

    </html>

    Пример обращения к странице JSP

    Перенесем созданный файл в каталог %APACHE_HOME%\htdocs\demo. Обратимся из браузера по адресу http://localhost/demo/MyJSPDemo.jsp (в версии 9 http://localhost:7778/demo/MyJSPDemo.jsp).

    Обратим внимание, что в каталоге, обозначенном выше, появился подкаталог _pages\_demo с файлами:

    _MyJSPDemo$__jsp_StaticText.class
    _MyJSPDemo.class
    _MyJSPDemo.java

    Способы обращения к БД из страницы JSP

    В случае JSP не существует единственного способа обращения страницы к базе данных. Вместо этого имеется несколько возможных вариантов:

    -    прямое обращение
    -    обращение с использованием user actions (действий пользователя) в странице
    -    опосредованное обращение к БД из Bean-компоненты
    -    опосредованное обращение к БД путем вызова сервлета

    Далее рассматриваются примеры обращения по первым двум вариантам.

    Пример страницы JSP с непосредственным обращением к базе данных

    Ниже приводится пример файла , программирующего JSP-страницу, выдающую в браузер перечень сотрудников из схемы SCOTT прямым обращением к базе:

    <%@ page import="java.sql.*" %>

    <html>
    < head><title>Direct JDBC Query JSP</title></head>
    < body>
    < h3>JSP StaffByJSPDirect result:</h3>
    < pre>
    < %= StaffByJSPDirect() %>
    < /pre>
    < hr>
    < /body>
    < /html>

    <%!
    private String StaffByJSPDirect()
    throws SQLException {
    Connection cn = null;
    StringBuffer sb = new StringBuffer();

    try {
    cn = DriverManager.getConnection(
    "jdbc:oracle:thin:@localhost:1521:teacher", "scott", "tiger");
    }
    catch (SQLException e) { };

    Statement st = null;
    ResultSet rs = null;

    try {
    st = cn.createStatement();
    rs = st.executeQuery("SELECT empno, ename FROM emp");

    while (rs.next()) {
    sb.append("Number=" + rs.getString(1) + " " +
    "Name=" + rs.getString(2) + "\n");
    };
    cn.close();
    }
    catch (SQLException e) { };

    return sb.toString();

    }
    %>

    Пример страницы JSP с обращением к базе данных с использованием собственной разметки

    Ниже приводится пример файла , программирующего JSP-страницу, выдающую в браузер перечень сотрудников из схемы SCOTT обращением к базе с использованием «меток пользователя» (custom tags) из библиотеки в штатной поставке Oracle (описание библиотеки – в файле %APACHE_HOME%\htdocs\WEB-INF\sqltaglib.tld):

    <%@ taglib uri="/WEB-INF/sqltaglib.tld" prefix="jml" %>

    <html>
    < head>
    < title>User Tag Lib JDBC Query JSP</title>
    < /head>
    < body>
    < h3>JSP StaffByJSPTaglib result:</h3>
    < jml:dbOpen URL="jdbc:oracle:thin:@localhost:1521:teacher"
    user="scott" password="tiger">
    <jml:dbQuery>
    select * from emp
    </jml:dbQuery>
    < /jml:dbOpen>

    < hr>
    < /body>
    < /html>

    Модель MVC организации приложения для web

    Для построения web-приложений на основе Java часто используют подход («модель») Model-View-Controller (MVC), предложенный фирмой Xerox в 80-х годах для своего языка Smalltalk-80. Согласно этому подходу приложение представляет собой в общем случае организованный набор страниц HTML и JSP, а также сервлетов и компонент JavaBeans и Enterprise JavaBeans (EJB). Задачи, которые решают эти элементы web-приложения, разделяются на задачи моделирования прикладной области (Model), представления данных приложения клиенту (View) и управления работой приложения (Controller):


     


    ХАЙВЕЙ - лучший российский хостинг-провайдер: хостинг, регистрация доменов, услуга Ваша@почта, поддержка 24 часа


    NetPromoter - единственный российский профессиональный комплекс программ и сервисов для раскрутки сайта и интернет-статистики


    STSS - известный поставщик надежных серверных решений различного назначения на платформе Intel (Xeon) и AMD.


    5-55: the ITIL company. Практический опыт и теоретические знания на лучших семинарах по ITIL и процессам ITSM.


    Подписка на новости IT-портала CITForum.ru
    (библиотека, ftp-архив CITKIT.ru)

    Новые поступления в on-line библиотеку:

    28 апреля

  • Выбор первого дистрибутива Linux: Пособие для начинающих
  • Обфускация и защита программных продуктов
  • Анализ и оптимизация циклов с помощью производящих функций
  • Стратегии объектно-реляционного отображения: систематизация и анализ на основе паттернов

    26 апреля

  • Business Intelligence обещает значительный рост в 2005 году
  • Десять основных тенденций 2005 года в области Business Intelligence и Хранилищ данных
  • Управление эффективностью бизнеса и предсказуемость
  • Увеличение эффективности бизнеса: пять ошибок управления, которых следует избегать
  • Потребность в организационных данных: модель комплексного управления эффективностью бизнеса
  • Технология Хранилищ данных для государственных учреждений
  • Оцените, насколько совершенно ваше Хранилище данных

    21 апреля

  • Исполнение моделей при помощи виртуальной машины
  • Параллельные алгоритмы компьютерной алгебры
  • От стандарта до стандарта (о стандартизации оптических разъемов)
  • За штурвалом IP-станции

    Продолжение дискуссии читателей:

  • Линукс и пользователи, или что мне не нравится в Linux
  • Еще один взгляд на альтернативные ОС (и софт для них)
  • О некомпетентности пользователя Windows
  • Переписка Долгачева В.С. и Монахова В.В.

    19 апреля

  • Межпротокольный шлюз NAT-PT с функциями DNS-ALG и FTP-ALG для обеспечения взаимодействия между сетями IPv4 и IPv6
  • Рефакторинг архитектуры программного обеспечения: выделение слоев
  • Комбинаторика слов и построение тестовых последовательностей
  • Функциональное тестирование Web-приложений на основе технологии UniTesK

    14 апреля

  • Как организовать двойную парольную защиту данных в Oracle
  • Деревянный интерфейс

    Продолжение дискуссии читателей:

  • Microsoft против мира
  • Впечатления от прочитанного

    12 апреля

  • Крупные проблемы и текущие задачи исследований в области баз данных
  • Глава 2 из книги Т.Кайта "Oracle для профессионалов"Архитектура

    Дискуссия читателей о Linux и Windows:

  • Деньги правят миром, и у кого их больше, тот и прав!
  • О злокозненности некомпетентных пользователей, или почему я не люблю ограниченных пользователей Windows

    7 апреля

  • О доблести Билла Гейтса, или почему Windows лучше, чем LINUX или Mac OS
  • Витая пара - все ли так просто?!
  • Выбираем сервер печати
  • Один слой хорошо, а два - лучше (о пишущих DVD-приводах)

    5 апреля

  • Использование Caché SQL Gateway
  • Глава 19 из книги Т.Кайта "Oracle для профессионалов"Хранимые процедуры на языке Java
  • Что такое PostgreSQL?
  • Обновлен PostgreSQL FAQ

    31 марта

  • Использование Веб-сервисов в Caché
  • Защита на уровне строк (Oracle)
  • Секции в реальном мире

    29 марта

  • Разработка успешных приложений для Oracle - первая глава из книги Тома Кайта "Oracle для профессионалов"
  • Web-сервисы: растущие опасения (мнение аналитиков IDC)
  • Технология OLAP - мощная альтернатива электронным таблицам
  • Какой модной стала подготовка отчетности

    24 марта

  • Многоверсионность данных и управление параллельными транзакциями
  • Исключение из правил. Опыт разработки и внедрения финансовой корпоративной системы
  • Обнаружение компрометаций ядра Linux с помощью gdb
  • Корпоративная сервисная шина - "бюджетный" подход к решению задач интеграции
  • Сервис-ориентированная архитектура
  • Бизнес-процессы и XML

    22 марта

  • Доступно. И точка! (обзор точек беспроводного доступа)
  • Коммутаторы Fast/Gigabit Ethernet для "большой" сети
  • Push to Talk: нажми на кнопку и ...говори
  • Сети нового поколения и технология softswitch

    17 марта

  • Часто задаваемые вопросы о proxy (proxy FAQ)
  • Самонастраивающаяся база данных: управляемые приложения и настройка SQL
  • Еще раз о волоконных трассах
  • Настраиваем русский Unicode в FreeBSD-5.3.

    10 марта

  • Еще не сказанное о волоконной оптике
  • Wi-Fi на службе оператора
  • Пора менять платформу?
    (о сокетах LGA775 и PGA478)

    Oracle:

  • Детальный аудит для практических целей
  • Шифруем свои ресурсы данных

    3 марта

  • Требования к проекту. Классификация - первый шаг к пониманию
  • Gtk vs. Qt: драки не будет
  • Управление бизнесом "по максимуму": BPM для финансовых учреждений
  • Реализация решения по управлению эффективностью бизнеса
  • Новые SerialATA-винчестеры
  • Карман для сервера

    1 марта

  • Выбрать корпус - нет ничего проще?
  • Создание виртуальной сети с удаленной загрузкой узлов
  • Текущее состояние и перспективы развития рынка интеграционных технологий
  • Интеграция корпоративной информации: новое направление
  • Архитектурные подходы к консолидации

    24 февраля

  • Каждому проекту своя методология
  • Императив интеграции
  • Безопасность IP-телефонии - полевые зарисовки
  • О злокозненности Билла Гейтса, или почему я не люблю Windows

    22 февраля

  • Oracle10: шифруем данные
  • В версии Oracle10 "виртуальные частные базы данных" данных стали избирательнее
  • Каждому (пользователю) свое (данное в таблице)
    Часть 1
    Часть 2
  • Ускоряем интернет
  • Сетевая аутентификация на практике
  • В фокусе Microsoft Virtual Server 2005

    17 февраля

    Открыт новый раздел
    Все об Open Source

    Все новости >>>



  • IT-консалтинг Software Engineering Программирование Open Source СУБД Безопасность Internet Сети Операционные системы Hardware

    Информация для рекламодателей PR-акции, размещение рекламы - pr@citforum.ru, тел. +7 095 4119920 Пресс-релизы - manager@citforum.ru
    Послать комментарий
    Информация для авторов
    Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
    Copyright © 1997-2000 CIT, © 2001-2004 CIT Forum
    Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...