Lecture14 (Лекции по Технологии программирования. Компонентный подход), страница 5
Описание файла
Файл "Lecture14" внутри архива находится в папке "Лекции по Технологии программирования. Компонентный подход". PDF-файл из архива "Лекции по Технологии программирования. Компонентный подход", который расположен в категории "". Всё это находится в предмете "основы программной инженерии" из 6 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 5 страницы из PDF
Сами запросы автоматически строятся браузером на основе действийпользователя — в основном, переходов по ссылкам и действий с элементами управления в HTMLформах.Если стандартных элементов управления HTML не хватает для реализации функцийприложения или они становятся неудобными, используются специальные библиотеки элементовуправления WebUI, предоставляющие более широкие возможности для пользователя и болееудобные с точки зрения интеграции с остальными компонентами приложения.В рамках J2EE версии 1.4 два основных вида компонентов WebUI — сервлеты (servlets) исерверные страницы Java (Java Server Pages, JSP) — отвечают, соответственно, за обработкудействий пользователя и представление данных в ответе на его запросы. В следующей версииJ2EE 5.0 будут также использоваться компоненты серверного интерфейса Java (Java ServerFaces, JSF) — библиотека элементов управления WebUI.Сервлеты представляют собой классы Java, реализующие обработку запросов HTTP игенерацию ответных сообщений в формате этого протокола.
Страницы JSP являются упрощеннымпредставлением сервлетов, основанным на описании генерируемого в качестве ответа HTMLдокумента при помощи смеси из его постоянных элементов и кода на Java, генерирующего егоизменяемые части. При развертывании Web-приложения содержащиеся в нем страницы JSPтранслируются в сервлеты и далее работают в таком виде. Описание генерируемых документов насмеси из HTML и Java делает страницы JSP более удобными для разработки и значительно менееобъемными, чем получаемый из них и эквивалентный по функциональности класс-сервлет.СервлетыИнтерфейс Java-сервлетов определяется набором классов и интерфейсов, входящих в составпакетов javax.servlet и javax.servlet.http, являющихся частью J2EE SDK.
Первый пакетсодержит классы, описывающие независимые от протокола сервлеты, второй — сервлеты,работающие с помощью протокола HTTP.Основные классы и интерфейсы пакета javax.servlet.http следующие.•HttpServletПредназначен для реализации сервлетов, работающих с HTTP-сообщениями. Содержитзащищенные методы, обрабатывающие отдельные методы HTTP-запросов, из которыхнаиболее важны void doGet(HttpServletRequest, HttpServletResponse),определяющий обработку GET-запросов, и void doPost(HttpServletRequest,HttpServletResponse), обрабатывающий POST-запросы.
В обоих методах первый параметрсодержит всю информацию о запросе, а второй — о генерируемом ответе.•HttpServletRequest и HttpServletResponse — интерфейсы, содержащие методы дляполучения и установки (второй) заголовков и других атрибутов HTTP-запросов и ответов.Второй интерфейс также содержит метод, возвращающий поток вывода для построениясодержимого ответа.•CookieКласс, представляющий закладки сервера, которые хранятся на клиентской машине длязапоминания информации о данном пользователе.•HTTPSessionИнтерфейс, предоставляющий методы для управления сеансом обмена HTTPсообщениями.
Информация о сеансе используется в том случае, если она должна бытьдоступна нескольким сервлетам.При развертывании J2EE приложения, помимо самих классов сервлетов, надо создать ихдескриптор развертывания, который оформляется в виде XML-файла web.xml.Web-приложение поставляется в виде архива .war, содержащего все его файлы. На самом делеэто zip-архив, расширение .war нужно для того, чтобы Web-контейнер узнавал архивыразвертываемых на нем Web-приложений. Содержащаяся в этом архиве структура директорийWeb-приложения должна включать директорию WEB-INF, вложенную непосредственно вкорневую директорию приложения. Директория WEB-INF содержит две поддиректории — classesдля .class-файлов сервлетов, классов и интерфейсов EJB-компонентов и других Java-классов, и libдля .jar и .zip файлов, содержащих используемые библиотеки. Файл web.xml также долженнаходится непосредственно в директории WEB_INF.Заголовок дескриптора развертывания сервлета выглядит так.<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc...ВЕВ Web Application 2.2..
EN"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd>Содержимое дескриптора развертывания помещается внутри тега <web-app>. В немуказывается список сервлетов, входящих в приложение и отображение сервлетов в URL, запросык которым они обрабатывают. Один сервлет описывается в следующем виде.<servlet><servlet-name>ServletName</servlet-name><servlet-class>com.company.deprtment.app.ServletClassName</servlet-class><description>…</description><init-param><param-name>ParameterName</param-name><param-value>ParameterValue</param-value><description>…</description></init-param></servlet>Значения параметров инициализации сервлета можно получить с помощью методов StringgetInitParameter(String) и Enumeration getInitParametersNames() связанного с сервлетомобъекта класса ServletContext.Отображение сервлета на URL описывается так.<servlet-mapping><servlet-name>ServletName</servlet-name><url-pattern>URL</url-pattern></servlet-mapping>Серверные страницы JavaСерверные страницы Java [7,8] представляют собой компоненты, разрабатываемые на смеси изHTML и Java и предназначенные для динамического создания HTML-документов, содержащихрезультаты обработки запросов пользователя.
Таким образом, JSP обычно играют рольпредставления в образце «данные-представление-обработчик», принятом за основу архитектурыприложений J2EE. Результатом работы JSP является HTML-страничка, а вставки Java кода служатдля построения некоторых ее элементов на основе результатов работы приложения.При работе Web-приложения JSP компилируются в сервлеты специального вида. При этомосновное содержание страницы JSP превращается в метод doGet(), в котором HTML-элементызаписываются в поток содержимого ответа в неизменном виде, а элементы Java-кодапреобразуются в код, записывающий некоторые данные в тот же поток на основании параметровзапроса или данных приложения.Для развертывания JSP-страниц необходимо их описание в дескрипторе развертыванияприложения web.xml, которое устроено так же, как описание сервлетов.
Сами JSP-страницыпомещаются, вместе с HTML-файлами и другими файлами, используемыми приложением вкорневую директорию этого приложения или ее поддиректории.Основные интерфейсы и базовые классы JSP-страниц и их отдельных элементов находятся вовходящих в J2EE SDK пакетах javax.servlet.jsp, javax.servlet.jsp.el,javax.servlet.jsp.tagext.Элементами JSP-страниц могут быть обычные теги HTML, а также специальные элементы JSP— директивы, теги или действия (tags, actions) и скриптовые элементы.JSP-директивы описывают свойства страницы в целом и служат для передачи информациимеханизму управления JSP-страницами.Директивы имеют следующий общий синтаксис.<%@ directive attribute1="value1" ...
attributeN="valueN" %>.Основные директивы JSP следующие.• Директива page предоставляют общую информацию о данной странице и статическивключаемых в нее файлах. Такая директива на странице может быть только одна. Онаможет иметь следующие атрибуты.o import = "имена включаемых классов и пакетов через запятую"Порождает соответствующую Java-директиву import в сгенерированном коде сервлета.o contentType = "MIME-тип[;charset=таблица символов]"Задает тип MIME для генерируемого документа. По умолчанию используетсяtext/html.
Эквивалентен скриплету<% response.setContentType(MIME-тип); %> (см. далее).o isThreadSafe = "true|false"Значение true позволяет использовать один экземпляр сервлета, полученного изстранички, для обработки множественных запросов. При этом необходимосинхронизовать доступ к данным этого сервлета.o session = "true|false"Значение true предписывает привязать сервлет к имеющейся HTTP-сессии, значениеfalse говорит, что сессии использоваться не будут и обращение к переменной sessionприведет к ошибке.o autoFlush = "true|false"Определяет необходимость сбрасывать буфер вывода при заполнении.o buffer = "размер в KB|none"Задает размер буфера для выходного потока сервлета.o extends = "наследуемый класс"Определяет класс, наследуемый сгенерированным из данной JSP сервлетом.o errorPage = "url странички с информацией об ошибках"Определяет страницу, которая используется для обработки исключений, необрабатываемых в рамках данной.o isErrorPage = "true|false"Допускает или запрещает использование данной страницы в качестве страницыобработки ошибок.o language = "java"Определяет язык программирования, применяемый в скриптовых элементах даннойстраницы.
Пока есть возможность использовать только Java. Впоследствиипредполагается (аналогично .NET) разрешить использование других языков, кодкоторых будет также транслироваться в байт-код, интерпретируемый JVM.• Директива include обеспечивает статическое (в ходе трансляции JSP в сервлет) включениев страничку внешнего документа. Она имеет атрибут file, значением которого должнабыть строка, задающая URL включаемого файла.• Директива taglib указывает используемую в данной странице библиотекупользовательских тегов. Она имеет два атрибута — uri, значением которого является URIбиблиотеки, и prefix, определяющий префикс тегов из данной библиотеки.
Префиксупотребляется в дальнейшем с тегами только данной библиотеки. Он не может бытьпустым и не должен совпадать с одним из зарезервированных префиксов jsp, jspx, java,javax, servlet, sun, sunw.Теги или действия определяют основные действия, выполняемые при обработке данных ипостроении результирующего документа.Теги могут быть стандартными, использование которых возможно в любой странице бездополнительных объявлений, или пользовательскими, которые могут употребляться, только еслипредварительно с помощью директивы taglib была подключена содержащая их библиотека.Любой тег имеет следующий синтаксис.<tagprefix:tag attribute1="value1" … attributeN="valueN" />Теги могут содержать вложенные теги, такие как jsp:param, jsp:attribute.