|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Вопрос 18.6Как можно получить всю информацию из запроса, посланного следующей формой? (выберите два варианта ответа) <HTML><BODY> <FORM action="/com/MyServlet"> <INPUT type="file" name="filename"> <INPUT type="submit" value="Submit"> </FORM></BODY></HTML> 1) request.getParameterValues("filename"); 2) request.getAttribute("filename"); 3) request.getInputStream(); 4) request.getReader(); 5) request.getFileInputStream().
Java Server Pages Технология Java Server Pages (JSP) была разработана компанией Sun Microsystems, чтобы облегчить создание страниц с динамическим содержанием. В то время как сервлеты наилучшим образом подходят для выполнения контролирующей функции приложения в виде обработки запросов и определения вида ответа, страницы JSP выполняют функцию формирования текстовых документов типа HTML, XML, WML и некоторых других. под терминами “динамическое/статическое содержание” обычно понимаются не части JSP, а содержание Web-приложения: 1) динамические ресурсы, изменяемые в процессе работы: сервлеты, JSP, а также java-код; 2) статические ресурсы, не изменяемые в процессе работы – HTML, JavaScript, изображения и т.д. Смысл разделения динамического и статического содержания в том, что статические ресурсы могут находиться под управлением HTTP-сервера, в то время как динамические нуждаются в движке (Servlet Engine) и в большинстве случаев в доступе к уровню данных. Рекомендуется разделить и разрабатывать параллельно две части приложения: Web-приложение, состоящее только из динамических ресурсов, и Web-приложение, состоящее только из статических ресурсов. Некоторые преимущества использования JSP-технологии над другими методами создания динамического содержания страниц: d) Разделение динамического и статического содержания. Возможность разделить логику приложения и дизайн Web-страницы снижает сложность разработки Web-приложений и упрощает их поддержку. d) Независимость от платформы. Так как JSP-технология, основанная на языке программирования Java, не зависит от платформы, то JSP могут выполняться практически на любом Web-сервере. Разрабатывать JSP можно на любой платформе. e) Многократное использование компонентов. Использование JavaBeans и Enterprise JavaBeans (EJB) позволяет многократно использовать компоненты, что ускоряет создание Web-сайтов. f) Скрипты и теги. Спецификация JSP объявляет собственные теги, кроме того, JSP поддерживают как JavaScript, так и HTML-теги. JavaScript обычно используется, чтобы добавить функциональные возможности на уровне HTML-страницы. Теги обеспечивают возможность использования JavaBean и выполнение обычных функций. Чтобы облегчить внедрение динамической структуры, JSP использует ряд тегов, которые дают возможность проектировщику страницы вставить значение полей объекта JavaBean в файл JSP. Содержимое Java Server Pages (теги HTML, теги JSP и скрипты) переводится в сервлет код-сервером. Этот процесс ответствен за трансляцию как динамических, так и статических элементов, объявленных внутри файла JSP. Об архитектуре сайтов, использующих JSP/Servlet-технологии, часто говорят как о thin-client (использование ресурсов клиента незначительно), потому что большая часть логики выполняется на сервере. JSP составляется из стандартных HTML-тегов, JSP-тегов, action-тегов, JSTL и пользовательских тегов. В спецификации JSP 2.0 существует пять основных тегов: <%@ директива %> –используются для установки параметров серверной страницы JSP. <%! объявление %> –содержит переменные Java и методы, которые вызываются в expression-блоке и являются полями генерируемого сервлета. Объявление не должно производить запись в выходной поток out страницы, но может быть использовано в скриптлетах и выражениях. <% скриптлет %> –вживление Java-кода в JSP-страницу. Скриптлеты обычно используют маленькие блоки кода и выполняются во время обработки запроса клиента. Когда все скриптлеты собираются воедино в том порядке, в котором они записаны на странице, они должны представлять собой правильный код языка программирования. Контейнер помещает код Java в метод _jspService() на этапе трансляции. <%= вычисляемое выражение %> –операторы языка Java, которые вычисляются, после чего результат вычисления преобразуется в строку String и посылается в поток out. <%-- JSP-комментарий --%>–комментарий, который не отображается в исходных кодах JSP-страницы после этапа выполнения. Стандартные элементы action Большинство тегов, объявленных выше, применяются не так уж часто. Наиболее используемыми являются стандартные действия версии 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" /> Ниже приведены два примера, демонстрирующие различие применения стандартных действий и тегов при создании JSP-страниц и JSP-документов. <!--пример # 1: обычная jsp-страница: page.jsp --> <%@ page contentType="text/html; charset=Cp1251" %> <html><head><title>JSP-страница</title></head> <%! private int count = 0; String version = new String("J2EE 1.5"); private String getName(){ return "J2EE 1.6";} %> <% out.println("Значение count: "); %> <%= count++ %> <br/> <% out.println("Значение count после инкремента: " + count); %> <br/> <% out.println("Старое значение version: "); %> <%= version %> <br/> <% version=getName(); out.println("Новое значение version: " + version); %> </html> Версия в виде JSP-документа несколько более громоздка, но читать и искать ошибки в таком документе проще, нежели в предыдущем. <!--пример # 2: правильный jsp-документ: page.jspx --> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> <jsp:directive.page contentType= "text/html; charset=UTF-8" /> <html><body> <jsp:declaration> private int count = 0; String version = new String("J2EE 1.5"); private String getName(){ return "J2EE 1.6";} </jsp:declaration> <jsp:scriptlet> out.println("Значение count: "); </jsp:scriptlet> <jsp:expression> count++ </jsp:expression> <br /> <jsp:scriptlet> out.println("Значение count после инкремента:" + count); </jsp:scriptlet> <br/> <jsp:scriptlet> out.println("Старое значение version: "); </jsp:scriptlet> <jsp:expression> version </jsp:expression> <br/> <jsp:scriptlet> version=getName(); out.println("Новое значение version: " + version); </jsp:scriptlet> </body></html> </jsp:root> Далее в главе примеры будут приведены в виде JSP-документов. JSTL JSP-страницы, включающие скриптлеты, элементы action (стандартные действия) и пользовательские теги, не могут быть технологичными без использования JSTL (JSP Standard Tag Library). Создание страниц с применением JSTL позволяет упростить разработку и отказаться от вживления Java-кода в JSP. Как было показано ранее, страницы со скриптлетами трудно читаемы, что вызывает проблемы как у программиста, так и у веб-дизайнера, не обладающего глубокими познаниями в Java. Библиотеку JSTL версии 1.1.2 (jstl-1.1.2.jar и standard-1.1.2.jar) или более позднюю версию можно загрузить c сайта apache.org. Библиотеки следует разместить в каталоге /lib проекта. При указании значения параметра xmlns элемента root (для JSP-страницы значение параметра taglib uri="") необходимо быть внимательным, так как если адрес будет указан неправильно, JSP-страница не сможет иметь доступ к тегам JSTL. Проверить правильность значение параметра uri (оно же справедливо и для параметра xmlns) можно в файле подключаемой библиотеки (например c.tld). Простейшая JSP с применением тега JSTL, выводящим в браузер приветствие будет выглядеть следующим образом: <!--пример # 3: правильный jsp-документ: simple.jspx --> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c=http://java.sun.com/jsp/jstl/core version="2.0"> <jsp:directive.page contentType= "text/html; charset=Utf-8"/> <html><body> <c:out value="Welcome to JSTL"/> </body></html> </jsp:root> Тег <c:out/> отправляет значение параметра value в поток JspWriter. JSTL предоставляет следующие возможности: - поддержку Expression Language, что позволяет разработчику писать простые выражения внутри атрибутов тега и предоставляет “прозрачный” доступ к переменным в различных областях видимости страницы; - организацию условных переходов и циклов, основанную на тегах, а не на скриптовом языке; - простое формирование доступа (URL) к различным ресурсам; - простую интернационализацию JSP; - взаимодействие с базами данных; - обработку XML, а также форматирование и разбор строк. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.017 сек.) |