Servlet

Спецификация сервлетов определяется JCP. Спецификации должен соответствовать и веб-контейнер. Зачастую веб-сервер играет роль и веб-контейнера. Но бывает и когда в раздельности.

Одним из наиболее часто используемых веб-контейнеров является Tomcat.

Tomcat: для запуска Tomcat используются \bin\startup.bat и \bin\shutdown.bat, где  - путь до корневой директории Tomcat

conf - файл настройки. в conf/Catalina/localhost описываются проекты, доступные на данном хосте.

Для того, чтобы руками создать сервлет и запустить его, надо поставить в известность tomcat что приложение такое есть. Для этого в conf/Catalina/localhost создается файл с именем прилоежния, в котором описывается url, в котором приложение, и docBase   path - путь приложения docBase - где находится относительно корня virtualhost

Описание ресурсов использует web.xml Кроме прочего, можно использовать init-param, задающий параметры сервлета (ключ - значение). Эти заданные параметры можно получить из сервлета через getInitParameter. Там же в web.xml load-on-startap = 0 - сервлет запуститься при первом обращении load-on-startup = 1 - сервлет запуститься при старте сервера

Пути: Context path / Servlet path

Чтобы руками запустить сервлет надо в CLASSPATH добавить пути до /lib/servlet-api.jar и /lib/jsp-api.jar

Основные методы для работы с сервлетом содержится в javax.servlet Interface Servlet public void destroy public void init - вызывается один раз при первом запуске сервлета. Используется чтобы инициализировать параметры, но есть два init: init(ServletConfig config) и init без параметров. В первом случае при переопределении init(ServletConfig) надо обязательно вызвать метод базового класса. service - вызывает запросы doGet и doPost и вызывается при получении каждого запроса.

GenericServlet реализует интерфейс Servlet

Обычные сервлеты, чаще всего, расширяют HttpServlet. в нем sendError(int status_code, String message); - отправляет ошибку. Но надо понимать, что вызвать sendError надо до того, как начали что-то отвечать пользователю..

sendRedirect - перенаправляет на другую страницу.

Контекст веб-приложения используется для обмена информацией между разными клиентами. В контекст можно добавлять или извлекать данные, причем делать это в разных приложениях. Контекст позволяет делать логи (метод log ) и обращаться к ресурсам.

Пример параметров веб-прилоежния:

   ...

Отличие от параметров сервлета в том, что context-param доступны всем сервлетам внутри веб-приложения.

Есть три места где можно хранить параметры: контекст, сессия и запрос.

ДЗ: Написать сервлет без netbeans, который должен считывать параметры инициализации сервлета, параметры контекста и выводит их. Причем, надо сделать нескольлко описаний сервлета, использующий один и тотже класс с разными параметрами инициализации (web.xml)