4 страница. 41. Обработка запроса. Многопоточность.
41. Обработка запроса. Многопоточность.
Распределенное приложение может быть эффективным только в случае, если оно способно принимать информацию от физически удаленных клиентов.
При нажатии кнопки типа происходит подтверждение формы и вызывается сервлет. В форме задан метод POST, при помощи которого происходит передача дан- ных формы в виде отдельных заголовков. Если не задавать этот метод, то по умолчанию будет использоваться метод GET, и данные формы будут передаваться через универсальный запрос (URL), в который к адресу будут добавлены значения соответствующих элементов.
Контейнер сервлетов будет иметь несколько потоков выполнения, распреде- ляемых согласно запросам клиентов. Вероятна ситуация, когда два клиента одновременно вызовут методы doGet() или doPost(). Метод service() должен быть написан с учетом вопросов многопоточности. Любой доступ к разделяемым ресурсам, которыми могут быть файлы, объекты, необходимо защитить ключе- вым словом synchronized. Можно синхронизировать и весь сервлет целиком, но причиной, почему это не делается, является возможность нахождения критической секции вне основно- го пути выполнения программы.
42. Стандартные элементы action. JSP-документ.
Наиболее используемыми являются стандартные действия версии JSP 2.0. Они позволяют создавать правильные JSP –документы с помощью следующих тегов: 1) jsp:declaration – объявление, аналогичен тегу <%! ... %>; 2) jsp:scriptlet – скриптлет, аналогичен тегу <% ... %>; 3) jsp:expression – скриптлет, аналогичен тегу <%= ... %>; 4) jsp:text – вывод текста; 2 jsp:useBean – позволяет использовать экземпляр компонента Java Bean. Если экземпляр с указанным идентификатором не существует, то он будет создан с областью видимости page (страница), request (за- прос), session (сессия) или application (приложение). Объявля- ется, как правило, с атрибутами id (имя объекта), scope (область ви- димости), class (полное имя класса), type (по умолчанию class). <jsp:useBean id=”ob” scope=”session” class=”test.MyBean” />
Создан объект ob класса MyBean, и в дальнейшем через этот объект можно вызывать доступные методы класса. Специфика компонентов JavaBean в том, что если компонент имеет поле field, экземпляр ком- понента имеет параметр field, а метод, устанавливающий значение, должен называться setField(type value), возвращающий значе- ние – getField(). package test; public class MyBean { private String field = "нет информации"; public String getField() { return info; } public void setField(String f) { field = f; } } 5) jsp:setProperty – позволяет устанавливать значения полей ука- занного в атрибуте name объекта. Если установить значение property в «*», то значения свойств компонента JavaBean будут установлены таким образом, что будет определено соответствие между именами параметров и именами методов-установщиков (setter-ов) ком- понента: <jsp:setProperty name=”ob” property=”field” value=”привет” /> e) jsp:getProperty – получает значения поля указанного объекта, преобразует его в строку и отправляет в неявный объект out: <jsp:getProperty name=”ob” property=”field” /> f) jsp:include – позволяет включать файлы в генерируемую страницу при запросе страницы: <jsp:include page=”относительный URL” flush=”true”/> g) jsp:forward – позволяет передать запрос другой странице: <jsp:forward page=”относительный URL”/> h) jsp:plugin – замещается тегом <OBJECT> или <EMBED>, в зави- симости от типа браузера, в котором будет выполняться подключаемый апплет или Java Bean. i) jsp:params – группирует параметры внутри тега jsp:plugin. 6) jsp:param – добавляет параметры в объект запроса, например в эле- ментах forward, include, plugin. 7) jsp:fallback – указывает содержимое, которое будет использовать- ся браузером клиента, если подключаемый модуль не сможет запустить- ся. Используется внутри элемента plugin. В качестве примера можно привести следующий фрагмент: <jsp:plugin type=”bean | applet” code=”test.com.ReadParam”
width=”250” height=”250”> <jsp:params> <jsp:param name=”bNumber” value=”7” /> <jsp:param name=”state” value=”true” /> </jsp:params> <jsp:fallback> <p> unable to start plugin </p> </jsp:fallback> </jsp:plugin> Код апплета находится в примере 5 главы 11, и пакет, в котором он объявлен, должен быть расположен в корне папки /WEB-INF, а не в папке /classes. Элементы <jsp:attribute>, <jsp:body>, <jsp:invoke>, <jsp:doBody>, <jsp:element>, <jsp:output> используются в основном при включении в страницу пользовательских тегов.
JSP-документ Предпочтительно создавать JSP-страницу в виде JSP-документа – коррект- ного XML-документа, который ссылается на определенное пространство имен, содержит стандартные действия JSP, пользовательские теги и теги ядра JSTL, XML-эквиваленты директив JSP. В JSP-документе вышеперечисленные пять те- гов неприменимы, поэтому их нужно заменять стандартными действиями и кор- ректными тегами. JSP-документы необходимо сохранять с расширением .jspx. Директива taglib для обычной JSP: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> для JSP-документа: <jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core"/> Директива page для обычной JSP: <%@ page contentType="text/html"%> для JSP-документа: <jsp:directive.page contentType="text/html" /> Директива include для обычной JSP: <%@ include file="file.jspf"%> для JSP-документа: <jsp:directive.include file="file.jspf" />
43. Технология взаимодействия JSP и сервлета.
В большинстве приложений используются не сервлеты или JSP, а их сочетание. В JSP представляется, как будут выглядеть результаты запроса, а сервлет отвечает за вызов классов бизнес-логики и передачу результатов выполнения бизнес-логики в соответствующие JSP и их вызов. Т.е. сервлеты не генерируют ответа сами, а только выступают в роли контроллера запросов. Такая архитектура построения приложений носит название MVC (Model/View/Controller). Model – классы бизнес- логики и длительного хранения, View – страницы JSP, Controller – сервлет. Реализацию достаточно простой, но эффективной технологии построения распределенного приложения можно рассмотреть на примере решения задачи проверки логина и пароля пользователя с выводом приветствия в случае положи- тельного результата. Схематично организацию данного приложения можно пред- ставить в виде следующей диаграммы:
Дата добавления: 2015-01-10; просмотров: 1256;