Не очень понятно про оболочечные Данные,ячейки памяти могут наверно размер менять,какое это значение те же операции только ячейки больше,по скорости тоже самое |
Введение в сетевое программирование
10.4. Технология JSP – Java Server Pages
Одним из важнейших видов серверных программ являются приложения, использующие технологию JSP – Java 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.
Рассмотрим подробнее первый пример.
Как и в предыдущем случае, при нажатии на гиперссылку "Execute" выполняется соответствующий пример – в данном случае запускается страница JSP. А при нажатии гиперссылки Source показывается HTML-страница с примерным видом исходного кода.
Страницы JSP представляют обычные HTML-документы, но имеющие расширение имени файла .jsp , а не .html или .htm . Это – заготовка HTML-документа, который будет показан пользователю-клиенту. При создании клиентского HTML-документа в этой заготовке выражения в фигурных скобках после знака доллара вычисляются, а в HTML-документ подставляется строковое представление результата.
Например, выражение вида ${1 + 2} выдаст в соответствующее место документа символ 3. Последовательность \$ означает, что выражение ${…} не вычисляется, а рассматривается как строка.
Имеется ряд встроенных в 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. При переходе по данной гиперссылке мы получаем пример
При нажатии на "шестеренки" получаем результат работы программы:
Соответствующий фрагмент исходного кода этого 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 (как преобразовать его в строку?).