Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену по ПИИ.docx
Скачиваний:
107
Добавлен:
26.03.2015
Размер:
207.29 Кб
Скачать
  1. Дескриптор развертывания web-приложения. Параметры инициализации web-приложения: назначение, принципы применения.

Дескриптор развертывания является важной частью web-приложения, предназначенный для хранения его основных параметров.

Дескриптор развертывания приложения представляет собой xml-файл, корневым элементом которого является тег <web-app>. Дескриптор приложения может содержать достаточно много различных и повторяющихся элементов. Порядок элементов внутри <web-app> и их синтаксис определяется схемой XML.

В самом простом случае дескриптор развертывания состоит только из одного тега

<web-app>, внутри которого ничего нет. В нашем случае, имеется еще три тега: <displayname>, <welcome-file-list> и <welcome-file>.

Тег <display-name> не является обязательным, но если есть, то не может повторяться более одного раза. Этот тег предназначен для указания имени webприложения, которое потом может быть использовано в графическом интерфейсе. Для этого имени не требуется уникальность и его значение не оказывает влияния на работу приложения.

Тег <welcome-file-list> тоже не является обязательным и предназначен для указания списка стартовых страниц web-приложения. Имена файлов странниц указываются внутри тега <welcome-file-list> с помощью одного или более тегов <welcome-file>.

Может быть указано несколько стартовых страниц для одного webприложения. В этом случае поиск их осуществляется в указанном порядке.

Дескриптор развертывания web-приложения содержит информацию необходимую web-контейнеру для взаимодействия с приложением.

Параметры инициализации сервлета и их значения описываются в теле соответствующего тега <servlet> дескриптора развертывания приложения. На примере фрагмента дескриптора развертывания приложения, описывающего сервлет Hhh с одним па-раметром инициализации.

<servlet>

<servlet-name>Hhh</servlet-name>

<servlet-class>Hhh</servlet-class>

<init-param>

<param-name>fhtml</param-name>

<param-value>male.html</param-value>

</init-param>

</servlet>

Единственный параметр инициализации в примере имеет имя fhtml и значение male.html. Значение параметров инициализации всегда имеют строкой тип. В общем случае параметров инициализации может быть больше, чем один.

Получить значение параметра инициализации в сервлете можно с помощью метода getInitParameter интерфейса Servlet. На примере фрагмент сервлета, считывающего значение параметра fhtml.

public class Hhh extends HttpServlet implements Servlet {

protected void doGet(HttpServletRequest rq, HttpServletResponse rs)

throws ServletException, IOException {

String fhml = getInitParameter("fhtml");

rq.getRequestDispatcher("/" + fhml).forward(rq, rs);

}

}

  1. Атрибуты системных объектов. Назначение. Принципы применения. Атрибуты контекста

Атрибуты являются динамически элементами контекста и могут быть установлены, изменены или удалены в методах сервлетов или в скриплетах JSP. На рис. 5.7 приводится фрагмент сервлета, использующего атрибуты контекста.

public void init() throws ServletException {

super.init();

this.Ab = new ABean("qwerty");

ServletContext sc = getServletContext();

String a1 = "a1";

Integer n1 = 3;

sc.setAttribute("atr_a1", a1);

sc.setAttribute("atr_n1", n1);

sc.setAttribute("atr_Ab", Ab);

}

protected void service(HttpServletRequest rq, HttpServletResponse rs)

throws ServletException, IOException {

ServletContext sc = getServletContext();

PrintWriter pw = rs.getWriter();

Enumeration en = sc.getAttributeNames();

String x;

while (en.hasMoreElements()) {

x = (String) en.nextElement();

pw.println("<br />" + x + "= " + sc.getAttribute(x));

}

}

В методе init сервлета осуществляется установка значений атрибутов с помощью метода контекстаsetAttribute. Первый параметр этого метода задает имя атрибута, второй – его значение. Обратите внимание на атрибут с именемatr_Ab– его значением является ссылка на объект java-класса с именемABean.

В методе serviceсервлета с помощью методов контекстаgetAttributeNames иgetAttributeв окно браузера выводится имена всех атрибутов и их значения. Следует знать, что некоторые атрибуты могут создаваться и устанавливаться самими webконтейнером. Для того чтобы не изменить или не удалить их, необходимо в документации сервера выяснить имена этих атрибутов и не использовать их в своих приложениях. При необходимости удалить атрибут используют методremoveAttribute.