АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Вопрос 16.1

Читайте также:
  1. E. Некорректный вопрос
  2. I. Перечень вопросов и тем для подготовки к экзамену
  3. II. Вопросительное предложение
  4. VII. Вопросник для анализа учителем особенностей индивидуального стиля своей педагогической деятельности (А.К. Маркова)
  5. X. примерный перечень вопросов к итоговой аттестации
  6. Аграрный вопрос
  7. Анализ влияния рекламы на продвижение противопростудных средств
  8. Балканский вопрос в начале XXв. Русско-германские отношения
  9. Бланк вопросов
  10. БЛОК № 1 (1 – 10 вопрос)
  11. БЛОК № 2 (11 – 20 вопрос)
  12. Блок № 4 (31 – 40 вопрос)

Какой существует способ описания данных в XML? (выберите два)

1. XML использует DTD для описания данных

2. XML использует XSL для описания данных

3. XML использует XSD для описания данных

4. XML использует CSS для описания данных

Вопрос 16.2.

В каких строках XML документа есть ошибки? (выберите два)

1 <?xml version="1.0"?>

2 <folder>

3 <file><name><contents></contents></name></file>

4 <file><name/><contents></contents><name/></file>

5 <file><name/><contents></contents></name></file>

6 <file><name><contents/><name/></file>

7 </folder>

 

1. 1;

2. 2;

3. 3;

4. 4;

5. 5;

6. 6;

7. 7;

8. нет ошибок.

Вопрос 16.3.

Какое из данных имен не является корректным именем для XML элемента? (выберите 2)

1. <hello_dolly>;

2. <big bang>;

3. <xmldocument>;

4. <7up>;

5. только одно имя некорректно.

Вопрос 16.4.

Значения атрибутов XML всегда должны помещаться в …? (выберите два)

1. двойные кавычки “ ”;

2. апострофы ‘ ‘;

3. фигурные скобки { };

4. квадратные скобки [];

5. могут обходиться без ограничивающих символов.

Вопрос 16.5.

Какие виды событий нельзя обрабатывать с помощью SAX-анализатора?

1. события документа;

2. события загрузки DTD-описаний;

3. события при анализе DTD-описаний;

4. ошибки;

5. все перечисленные события можно обработать.

 


Часть 3.
ТЕХНОЛОГИИ РАЗРАБОТКИ
WEB-ПРИЛОЖЕНИЙ

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

Глава 17

ВВЕДЕНИЕ В СЕРВЛЕТЫ И JSP

Согласно заявлению Sun Microsystems, на настоящий момент более 90% корпоративных систем поддерживают платформу Java Enterprise Edition.

Первый сервлет

Сервлеты – это компоненты приложений Java Enterprise Edition, выполняющиеся на стороне сервера, способные обрабатывать клиентские запросы и динамически генерировать ответы на них. Наибольшее распространение получили сервлеты, обрабатывающие клиентские запросы по протоколу HTTP.

Все сервлеты реализуют общий интерфейс Servlet из пакета javax.servlet. Для обработки HTTP-запросов можно воспользоваться
в качестве базового класса абстрактным классом HttpServlet из пакета javax.servlet.http.

Жизненный цикл сервлета начинается с его загрузки в память контейнером сервлетов при старте контейнера либо в ответ на первый запрос. Далее производятся инициализация, обслуживание запросов и завершение существования.

Первым вызывается метод init(). Он дает сервлету возможность инициализировать данные и подготовиться для обработки запросов. Чаще всего в этом методе программист помещает код, кэширующий данные фазы инициализации.

После этого сервлет можно считать запущенным, он находится в ожидании запросов от клиентов. Появившийся запрос обслуживается методом
service(HttpServletRequest req, HttpServletResponse res) сервлета, а все параметры запроса упаковываются в объект req класса HttpServletRequest, передаваемый в сервлет. Еще одним параметром этого метода является объект res класса HttpServletResponse, в который загружается информация для передачи клиенту. Для каждого нового клиента при обращении к сервлету создается независимый поток, в котором производится вызов метода service(). Метод service() предназначен для одновременной обработки множества запросов.

После завершения выполнения сервлета контейнер сервлетов вызывает метод destroy(), в теле которого следует помещать код освобождения занятых сервлетом ресурсов.

При разработке сервлетов в качестве базового класса в большинстве случаев используется не интерфейс Servlet, а классHttpServlet, отвечающий за обработку запросов HTTP. Этот класс уже имеет реализованный метод
service().

Метод service() класса HttpServlet служит диспетчером для других методов, каждый из которых обрабатывает методы доступа к ресурсам. В спецификации HTTP определены следующие методы: GET, HEAD, POST, PUT, DELETE, OPTIONS и TRACE. Наиболее часто употребляются методы GET и POST, с помощью которых на сервер передаются запросы, а также параметры для их выполнения.

При использовании метода GET (по умолчанию) параметры передаются как часть URL, значения могут выбираться из полей формы или передаваться непосредственно через URL. При этом запросы кэшируются и имеют ограничения на размер. При использовании метода POST (method=POST) параметры (поля формы) передаются в содержимом HTTP-запроса и упакованы согласно полю заголовка Content-Type.

По умолчанию в формате:

<имя>=<значение>&<имя>=<значение>&...

Однако форматы упаковки параметров могут быть самые разные, например в случае передачи файлов с использованием формы

enctype="multipart/form-data".

В задачу метода service() класса HttpServlet входит анализ полученного через запрос метода доступа к ресурсам и вызов метода, имя которого сходно с названием метода доступа к ресурсам, но перед именем добавляется префикс do: doGet() или doPost(). Кроме этих методов, могут использоваться методы doHead(), doPut(), doDelete(), doOptions() и doTrace(). Разработчик должен переопределить нужный метод, разместив в нем функциональную логику.

В следующем примере приведен готовый к выполнению шаблон сервлета:

// пример # 1: простейший сервлет: MyServlet.java

package chapt17;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public class MyServlet extends HttpServlet {

public MyServlet() {

super ();

}

public void init() throws ServletException {

}

protected void doGet(

HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.print("This is ");

out.print(this. getClass().getName());

out.print(", using the GET method");

}

protected void doPost(

HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.print("This is ");

out.print(this. getClass().getName());

out.print(", using the POST method");

}

public void destroy() {

super. destroy(); // Just puts "destroy" string in log

}

}

Практика включения HTML-кода в код сервлета не считается хорошей, так как эти действия “уводят” сервлет от его основной роли – контроллера приложения. Это приводит к разрастанию размеров сервлета, которое на определенном этапе становится неконтролируемым и реализует вследствие этого анти-шаблон “Волшебный сервлет”. Даже приведенный выше маленький сервлет имеет признаки анти-шаблона, так как содержит метод print(), используемый для формирования кода HTML. Сервлет должен использоваться только для реализации бизнес-логики приложения и обязан быть отделен как от непосредственного формирования ответа на запрос, так и от данных, необходимых для этого. Обычно для формирования ответа на запрос применяются возможности JSP, JSPX или JSF. Признаки наличия анти-шаблонов все же будут встречаться ниже, но это отступление сделано только с точки зрения компактности примеров.

Сервлет является компонентом Web-приложения, который будет называться FirstProject и размещен в папке /WEB-INF/сlasses проекта.

Запуск контейнера сервлетов и размещение проекта

Здесь и далее применяется контейнер сервлетов Apache Tomcat в качестве обработчика страниц JSP и сервлетов. Последняя версия может быть загружена
с сайта jakarta.apache.org.

При установке Tomcat предложит значение порта по умолчанию 8080, но во избежание конфликтов с иными Application Server рекомендуется присвоить другое значение, например 8082.

Ниже приведены необходимые действия по запуску сервлета из предыдущего примера с помощью контейнера сервлетов Tomcat 5.5.20, который установлен в каталоге /Apache Software Foundation/Tomcat5.5. В этом же каталоге размещаются следующие подкаталоги:

/bin – содержит файлы запуска контейнера сервлетов tomcat5.exe,
tomcat5w.exe и некоторые необходимые для этого библиотеки;

/common – содержит библиотеки служебных классов, в частности Servlet API;

/conf – содержит конфигурационные файлы, в частности конфигурационный файл контейнера сервлетов server.xml;

/logs – помещаются log-файлы;

/webapps – в этот каталог помещаются папки, содержащие сервлеты и другие компоненты приложения.

В каталог /webapps необходимо поместить папку /FirstProject с вложенным в нее сервлетом MyServlet. Кроме того, папка /FirstProject должна содержать каталог /WEB-INF, в котором помещаются подкаталоги:

/classes – содержит класс сервлета chapt17.MyServlet.class;

/lib – содержит используемые внешние библиотеки (если они есть), упакованные в JAR-файлы (архивы java);

/src – содержит исходный файл сервлета MyServlet.java (опционально);

а также web.xml – дескриптор доставки приложения располагается в каталоге /WEB-INF.

В файле web.xml необходимо прописать имя и путь к сервлету. Кроме того, в дескрипторном файле можно определять параметры инициализации, MIME-типы, mapping сервлетов и JSP, стартовые страницы и страницы с сообщениями об ошибках, а также параметры для безопасной авторизации и аутентификации. Этот файл можно сконфигурировать так, что имя сервлета в браузере не будет совпадать с истинным именем сервлета. Например:

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name> FirstProject </display-name>

< servlet >

<display-name> MyServletdisplay </display-name>

<servlet-name> MyServletname </servlet-name>

<servlet-class> chapt17.MyServlet </servlet-class>

</ servlet >

< servlet-mapping >

<servlet-name> MyServletname </servlet-name>

<url-pattern> /MyServlettest </url-pattern>

</ servlet-mapping >

<session-config>

<session-timeout>30</session-timeout>

</session-config>

<welcome-file-list>

<welcome-file> index.jsp </welcome-file>

</welcome-file-list>

<login-config>

<auth-method>BASIC</auth-method>

</login-config>

</web-app>

Здесь указано имя сервлета MyServletname, путь к откомпилированному классу сервлета MyServlet.class, а также URL-имя сервлета, по которому происходит его вызов MyServlettest.

Таким образом, требуется выполнить следующие действия:

1. Компиляцию сервлета с указанием в –cp пути к архиву

2. servlet-api.jar;

3. Полученный файл класса MyServlet.class поместить в папку /FirstProject/WEB-INF/classes/chapt18;

4. В папку /MyProject/WEB-INF поместить файл конфигурации web.xml;

5. Переместить папку /FirstProject в каталог /webapps контейнера сервлетов Tomcat;

6. Стартовать Tomcat;

7. Запустить браузер и ввести адрес:


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.012 сек.)