Опубликован: 04.12.2009 | Доступ: свободный | Студентов: 8416 / 657 | Оценка: 4.30 / 3.87 | Длительность: 27:27:00
Лекция 10:

Введение в сетевое программирование

< Лекция 9 || Лекция 10: 1234 || Лекция 11 >

10.4. Технология JSP – Java Server Pages

Одним из важнейших видов серверных программ являются приложения, использующие технологию JSPJava Server Pages. Несмотря на то, что она опирается на использование сервлетов, JSP является самостоятельной технологией. Идеология JSP основана на внедрение в HTML-документы специальных конструкций, позволяющих со стороны сервера выполнять программную обработку данных и выводить в соответствующее место документа результат.

В качестве примеров в NetBeans Enterprise Pack приведены примеры Tomcat JSP Example и JSTL Example. Отметим, что Tomcat – название программного сервера, варианта сервера apache, который автоматически конфигурируется и запускается при выполнении примеров, а example означает "пример". Большим достоинством среды NetBeans является то, что оригиналы всех примеров, открываемых в NetBeans, остаются в неприкосновенности – автоматически создаются копии примеров. Поэтому даже если вы внесете исправления в исходный код проекта с примером, это не повлечет изменений в новом проекте с таким же примером.

Для правильной работы серверных примеров требуется, чтобы на компьютере была установлена работа с Интернет. Реально выходить в Интернет не надо, идет соединение http://localhost:8084//. Но после запуска другого серверного приложения идет соединение по тому же адресу, поэтому документ берется из буфера – и показывается документ, созданный предыдущим приложением. Для показа правильного документа требуется нажать в браузере кнопку "обновить", и в случае автономной работы в появившемся диалоге, предлагающем выбрать режим работы, выбрать "Подключиться". Реального соединения с Интернет для адреса http://localhost:8084// не будет – все коммуникации станут проходить локально.

Первый из примеров иллюстрирует базовые конструкции JSP, его можно просмотреть, создав проект File/New Project…/ Samples/J2EE1.4/Web /Tomcat JSP Example.

Второй пример – надстройка над JSP, специальный набор тегов JSP, разработанный группой экспертов для облегчения разработки серверных приложений. Пример можно просмотреть, создав проект File/New Project…/ Samples/J2EE1.4/Web / JSTL Example.

Оба этих примера также разработаны организацией The Apache Software Foundation (http://www.apache.org/), и их использование также должно соответствовать лицензии http://www.apache.org/licenses/LICENSE-2.0.

Порядок примеров в мастере создания приложений прямо противоположный рассматриваемому нами - сначала предлагается использовать JSTL как наиболее развитое средство, затем – JSP как средство более низкого уровня, и только затем Servlet – как средство еще более низкого уровня. Мы используем при рассмотрении обратный порядок, так как JSP использует сервлеты, а JSTL является надстройкой над JSP.

Рассмотрим подробнее первый пример.

Первая страница запущенного примера JSP

увеличить изображение
Рис. 10.4. Первая страница запущенного примера JSP

Как и в предыдущем случае, при нажатии на гиперссылку "Execute" выполняется соответствующий пример – в данном случае запускается страница JSP. А при нажатии гиперссылки Source показывается HTML-страница с примерным видом исходного кода.

Страницы JSP представляют обычные HTML-документы, но имеющие расширение имени файла .jsp , а не .html или .htm . Это – заготовка HTML-документа, который будет показан пользователю-клиенту. При создании клиентского HTML-документа в этой заготовке выражения в фигурных скобках после знака доллара вычисляются, а в HTML-документ подставляется строковое представление результата.

Например, выражение вида ${1 + 2} выдаст в соответствующее место документа символ 3. Последовательность \$ означает, что выражение ${…} не вычисляется, а рассматривается как строка.

Первый пример JSP- вычисление выражений

увеличить изображение
Рис. 10.5. Первый пример JSP- вычисление выражений

Имеется ряд встроенных в JSP тегов (объектов Java):

  • request – запрос. Тип объекта - класс, реализующий интерфейс javax.servlet.http.HttpServletRequest.
  • response – ответ на запрос. Тип объекта - класс, реализующий интерфейс javax.servlet.http.HttpServletResponce.
  • pageContextконтекст страницы JSP. Обеспечивает доступ к пространству имен и элементам страницы (тегам, атрибутам). Тип объекта - класс javax.servlet.jsp.PageContext.
  • session – сессия (сеанс связи клиента с сервером). Тип объекта - класс, реализующий интерфейс javax.servlet.http.HttpSession
  • application – приложение. Тип объекта - класс, реализующий интерфейс javax.servlet.ServletContext
  • out – выходной поток. Тип объекта - класс javax.servlet.jsp.JspWriter
  • config – объект конфигурации сервлета для текущей страницы. Тип объекта - класс, реализующий интерфейс javax.servlet.ServletConfig
  • page – объект, обрабатывающий запрос для данной страницы. Тип объекта - класс Object.

Данные объекты применяются в виде

<%@ имяОбъекта параметр1=значение1 параметр2=значение2 ... %>

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

<%@ page session=true import="java.util.*" %>

Имеется возможность задания сценариев (интерпретируемого кода) с помощью специальных определений вида

<%@ код %>

Где код - сценарий Java для работы с документом или вычислений. Например,

<%
    for(int i=0; i<table.getEntries().getRows(); i++) {
    cal.Entry entr = table.getEntries().getEntry(i);
%>

В частности, разрешается задавать собственные теги вида

<%@ имяБиблиотеки prefix="имяОбъекта" uri="путь к библиотеке" %>

После чего разрешается использовать теги вида < имяОбъекта:оператор>

Так делается в примере использования оператора out в JSTL Example. Используется пользовательский объект c (сокращение от customer - "покупатель"), задаваемый как prefix="c", и оператор out, заданный в библиотеке taglib по адресу uri="http://java.sun.com/jsp/jstl/core":

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Отметим, что соответствующие библиотеки уже добавлены в проект. Для примера out это пакет org.apache.taglibs.standard.tag.el.core.

После запуска данного приложения в появившемся документе в списке Examples это первый пример - General Purpose Tags. При переходе по данной гиперссылке мы получаем пример


Рис. 10.6.

При нажатии на "шестеренки" получаем результат работы программы:

Пример использования оператора c:out

Рис. 10.7. Пример использования оператора c:out

Соответствующий фрагмент исходного кода этого JSP-документа выглядит так:

<table border="1">
  <c:forEach var="customer" items="${customers}">
    <tr>
      <td><c:out value="${customer.lastName}"/></td>
      <td><c:out value="${customer.phoneHome}"
                 default="no home phone specified"/></td>
      <td>
        <c:out value="${customer.phoneCell}" escapeXml="false">
          <font color="red">no cell phone specified</font>
        </c:out>
      </td>
    </tr>
  </c:forEach>
</table>

В этом примере используется объект customer – "покупатель", заданный в файле Customer.java, расположенном в пакете org.apache.taglibs.standard.examples.beans. То есть самом первом в Source Packages пакете примера. А также объект customers – "покупатели", заданный в файле Customers.java, расположенном в том же пакете.

В классе customer заданы поля lastName, phoneHome, phoneCell и другие. А также ряд методов, которые также можно вызывать в сценарии. С помощью оператора forEach (заданного аналогично оператору out ) осуществляется перебор всех объектов customer, агрегированных в объект customers - список покупателей. А с помощью тега c:out осуществляется вывод необходимой информации в документ.

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

Точно так же, для программирования в локальных и глобальных компьютерных сетях в пакете java.net имеется огромное количество средств разного уровня, описание которых требует отдельной книги. Это и Web-адресация (классы URL, HttpURLConnection, URI, JarURLConnection, URLClassLoader ), и IP-адресация (классы InetAddress, InetAddress4, InetAddress6, NetworkInterface ), и управление соединениями через сокеты (классы Socket, SocketAddress, InetSocketAddress, ServerSocket, SocketPermission ). Классы NetPermission, Authentificator и PasswordAuthentification обеспечивают поддержку авторизации (запрос и обработку имени и пароля).

Кроме упомянутых возможностей пакета java.net имеется дистрибутив j2me, в котором поставляются средства разработки программного обеспечения для "тонких" аппаратных клиентов – то есть таких, которые обладают малыми по сравнению с персональными компьютерами ресурсами. В первую очередь - для сотовых телефонов и наладонных компьютеров. Это также тема для отдельной книги.

Не менее важной и объемной темой является сетевое программирование баз данных.

Так что желающих освоить даже основы сетевых возможностей Java ждет весьма длительная работа.

Краткие итоги

  • HTML - язык разметки гипертекста. Гипертекст ("сверхтекст") – это текст, содержащий дополнительные возможности, в частности – гиперссылки. Документ, написанный на языке HTML, представляет собой текстовый файл, содержащий собственно текст, несущий информацию пользователю, и теги разметки (murkup tags).
  • Теги представляют собой определенные последовательности символов, заключенные между знаками '<' и '>'. Они предназначены для форматирования и разметки документа. Теги бывают парные ("контейнеры") и непарные. Действие парного тега начинается с открывающего тега и заканчивается при встрече соответствующего ему закрывающего, признаком которого является символ " / ".
  • При ссылке на документ, находящийся на другом сервере, необходимо указать адрес (URL - 'Uniform Recourses Location') этого документа: сетевой адрес сервера и путь к этому документу на сервере. Если документ находится на том же сервере, но в другой папке, достаточно указать только путь к этой папке. Гипертекстовая ссылка имеет вид <a href="имя_файла">текст_ссылки</a>
  • Для создания обычного апплета требуется задать класс, являющийся наследником класса java.applet.Applet, а для апплетов, использующих компоненты Swing и/или библиотеку Sun JFC (Java Foundation Classes) - наследником класса javax.swing.JApplet.
  • В классе апплета требуется переопределить ряд методов - init, start, update, paint, getAppletInfo, stop, destroy.
  • Сервлеты – это приложения Java , запускаемые со стороны сервера. Они имеют возможности доступа к файловой системе и другим ресурсам сервера через набор управляющих конструкций, предопределенных в рамках пакета javax.servlet и технологии JSP.
  • Технология JSP заключается в наличии дополнительных конструкций в HTML- или XML-документах, которые позволяют осуществлять вызовы сценариев ("скриптов"), написанных на языке Java. В результате удается очень просто и удобно осуществлять обработку данных или элементов документа, и внедрять в нужные места документа результаты обработки.

Задания

  • Написать апплет, рисующий эллипс, и использующий этот апплет HTML-документ. Проверить показ этого HTML-документа в AppletViewer и браузере.
  • Изучить работу и исходный код TomcatServletExample. Видоизменить в нем пример HelloWorld Example, обеспечив вывод документа с вашими данными: фамилией, именем, отчеством. В конце документа обеспечить вывод даты генерации этого документа. Для этого использовать объект типа Date (как преобразовать его в строку?).
< Лекция 9 || Лекция 10: 1234 || Лекция 11 >
Полетаев Дмитрий
Полетаев Дмитрий
Не очень понятно про оболочечные Данные,ячейки памяти могут наверно размер менять,какое это значение те же операции только ячейки больше,по скорости тоже самое
Максим Старостин
Максим Старостин

Код с перемещением фигур не стирает старую фигуру, а просто рисует новую в новом месте. Точку, круг.