Электронный магазин на Java и XML

         

Начало кода сервлета...



Листинг 7.4. Начало кода сервлета QuestionnaireServ (QuestionnaireServ.java)

package com.XmlEcomBook.Chap07; import com.XmlEcomBook.DOMlibrary ; import org.w3c.dom.* ; import java.io.*; import java.util.* ; import javax.servlet.*; import javax.servlet.http.*; public class QuestionnaireServ extends HttpServlet { static String brcrlf = "<br>
\r\n" ; static String homedir = "e:\\scripts\\questionnaire" ; static String handler = "http://www.lanw.com/servlet/Questionnaire" ; static String version = "v1.0"; Properties qProp ; public void init(ServletConfig config) throws ServletException { super.init(config);
String tmp = config.getInitParameter("homedir");
if( tmp != null ) homedir = tmp ; System.out.println("Start QuestionnaireServ using " + homedir );
File f = new File( homedir, "questionnaire.properties");
try { qProp = new Properties();
qProp.load( new FileInputStream(f) );
tmp = qProp.getProperty("handler");
if( tmp != null ) handler = tmp ; System.out.println ("Loaded properties for Questionnaire handler: " + handler );
}catch(IOException e){ System.out.println("Error loading " + e );
} }

Сервлет QuestionnaireServ отслеживает взаимодействие с каждым пользователем, отвечающим на вопросы анкеты, в сеансах. Предполагается, что исходный запрос — это запрос методом GET с HTML-страницы, на которой имеется простая форма для определения значения переменной qname, идентифицирующей требуемую анкету. Приспосабливая этот сервлет для своего приложения, вы на этом этапе можете также записать идентификатор пользователя.

Метод doGet, показанный в листинге 7.5, отыскивает объект document, соответствующий значению переменной qname, используя путь, указанный в файле свойств, и служебную библиотеку DOMlibrary. Если ему удается найти этот объект, далее он получает объект HttpSession и присоединяет к сеансу новый объект Interpreter, в котором хранится документ. Новый объект Recorder также инициализируется и присоединяется к сеансу. Для обработки любой ошибки и создания соответствующего сообщения используется метод errorMsg (см. листинг 7.7).

Объект Interpreter отвечает за создание форм HTML, с помощью которых будет осуществляться опрос, а объект Recorder отвечает за запись ответов пользователя. Эти классы обсуждаются в разделах «Класс Interpreter» и «Класс Recorder».

Результатом вызова метода doGet является страница с текстом, содержащимся в теге Intro документа XML. Для отображения этого текста на странице используется метод dolntro объекта Interpreter; также на странице располагается форма с кнопкой, при щелчке на которой появляется первый вопрос анкеты.



Содержание раздела