Чтение онлайн

на главную

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

HttpServletResponse response)

throws ServletException, IOException {

// Выставляем тип содержимого

response.setContentType("text/html");

// Инициализируем выходящий поток

OutputStreamWriter o_sw =

new OutputStreamWriter(response.getOutputStream);

PrintWriter out = new PrintWriter(response.getOutputStream);

//
Получаем объекты

cookie Cookie[] cookies = request.getCookies;

// Создаем выходящий документ

XMLDocument doc = new XMLDocument;

// Создаем корневой элемент

Request Element elRequest = doc.createElement("Request");

doc.appendChild(elRequest);

// Создаем элемент General

Element elGeneral = addElement(elRequest, "General", null);

// Создаем элементы, содержащие общую информацию

addElement(elGeneral, "ServerName", request.getServerName);

addElement(elGeneral, "ServerPort",

Integer.toString(request.getServerPort));

addElement(elGeneral, "RemoteAddr", request.getRemoteAddr);

addElement(elGeneral, "Protocol", request.getProtocol);

addElement(elGeneral, "Method", request.getMethod);

addElement(elGeneral, "RequestURI", request.getRequestURI);

addElement(elGeneral, "QueryString", request.getQueryString);

// Создаем элемент Param

Element elParam = addElement(elRequest, "Param", null);

// В элементе Param создаем элементы, описывающие параметры запроса

for (Enumeration e = request.getParameterNames;

e.hasMoreElements;) {

String name = e.nextElement.toString;

String[] values = request.getParameterValues(name);

// Для каждого из значений каждого из параметров

// создаем соответствующий элемент

for (int i=0; i < values.length; i++)

addElement(elParam, name, values[i]);

}

// Создаем элемент Session

Element elSession = addElement(elRequest, "Session", null);

// Получаем объект HTTP-сессии

HttpSession session = request.getSession(true);

// Получаем имена параметров сессии

String[] names = session.getValueNames;

//
В элементе Session создаем по элементу

// для каждого из параметров сессии

for (int i=0; i < names.length; i++)

addElement(elSession, session.getValueNames[i],

session.getValue(session.getValueNames[i]).toString);

// Создаем элемент Cookie

Element elCookie = addElement(elRequest, "Cookie", null);

// Создаем по элементу для каждого из объектов cookies

for (int i=0; i < cookies.length; i++)

addElement(elCookie, cookies[i].getName, cookies[i].getValue);

// Преобразовываем созданный документ и выводим результат

try {

// Загружаем преобразование

XSLStylesheet stylesheet = new XSLStylesheet(

new URL("http://localhost/stylesheet.xsl"), null);

// Выполняем преобразование

XMLDocumentFragment fragment =

(XMLDocumentFragment)doc.transformNode(stylesheet);

// Выводим результат

fragment.print(out);

}

catch (MalformedURLException mue) {}

catch (XSLException xsle) {}

// Закрываем выходящий поток

out.close;

 }

}

В этом сервлете вместо того, чтобы просто печатать в выходящий поток данные и HTML-разметку, в переменной

doc
мы генерируем DOM-объект XML-документа. После того как все текстовые узлы и узлы элементов будут сгенерированы, документ, содержащийся в переменной
doc
, примет приблизительно следующий вид.

Листинг 9.24. XML-документ, сгенерированный в сервлете

<Request>

 <General>

<ServerName>aphrodite.fzi.de</ServerName>

<ServerPort>80</ServerPort>

<RemoteAddr>127.0.0.1</RemoteAddr>

<Protocol>HTTP/1.1</Protocol>

<Method>GET</Method>

<RequestURI>/servlet/example1</RequestURI>

<QueryString>x=1&amp;y=2&amp;z=3&amp;x=4&amp;y=5&amp;z=6

Поделиться:
Популярные книги

Дворянская кровь

Седой Василий
1. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Дворянская кровь

Газлайтер. Том 16

Володин Григорий Григорьевич
16. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 16

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

Стрелок

Астахов Евгений Евгеньевич
5. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Стрелок

Шатун. Лесной гамбит

Трофимов Ерофей
2. Шатун
Фантастика:
боевая фантастика
7.43
рейтинг книги
Шатун. Лесной гамбит

Проклятый Лекарь V

Скабер Артемий
5. Каратель
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Проклятый Лекарь V

На границе империй. Том 3

INDIGO
3. Фортуна дама переменчивая
Фантастика:
космическая фантастика
5.63
рейтинг книги
На границе империй. Том 3

Новый Рал

Северный Лис
1. Рал!
Фантастика:
фэнтези
попаданцы
5.70
рейтинг книги
Новый Рал

Его наследник

Безрукова Елена
1. Наследники Сильных
Любовные романы:
современные любовные романы
эро литература
5.87
рейтинг книги
Его наследник

Венецианский купец

Распопов Дмитрий Викторович
1. Венецианский купец
Фантастика:
фэнтези
героическая фантастика
альтернативная история
7.31
рейтинг книги
Венецианский купец

Мастер темных Арканов

Карелин Сергей Витальевич
1. Мастер темных арканов
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мастер темных Арканов

Всплеск в тишине

Распопов Дмитрий Викторович
5. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Всплеск в тишине

Начальник милиции

Дамиров Рафаэль
1. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции

Возвышение Меркурия. Книга 2

Кронос Александр
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 2