Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Javax.servlet.http.HttpServlet

Основные интерфейсы и классы Servlet API

Введение в Web-приложения и сервлеты

Лекция 6

В общем виде типичное web-приложение представляет собой набор из следующих программных компонент:

  • Web-браузер;
  • Web-сервер;
  • Сетевая инфраструктура, позволяющая передавать трафик HTTP[13,14].

При этом под Web-сервером в случае с Java web-приложением обычно подразумевают как непосредственно сам web-сервер, т.е. сервер, принимающий запросы по текстовому протоколу HTTP. В простейшем случае сервер HTTP можно себе представить как процесс-демон ожидающий входящих соединений по протоколу HTTP на указанном порту (обычно по умолчанию используют 80 порт). Приняв соединение, сервер ожидает входящей команды, которая в самом примитивном случае может выглядеть следующим образом:

GET /

Получив эту команду, сервер считывает из локальной файловой системы файл по умолчанию (обычно это index.html) и записывает его в установленное соединение как поток символов. (Следует заметить что это не является в общем случае потоком байт, так как может использоваться и много-байтовая кодировка, вообще говоря, протокол HTTP поддерживает работу в различных кодировках, таким образом достигается возможность публиковать документы на различных языках в различных кодировках; для достижения этого эффекта используются, так называемые, HTTP header’ы или заголовки, в которых сервер указывает кодировку документа)

В технологии Java, web-сервер передаёт полученный запрос на обслуживание сервлету, при этом оборачивая входящий запрос, заголовки и параметры в объектную форму в виде интерфейса HttpRequest. В свою очередь, сервлет генерирует ответ используя предоставленный контейнером интерфейс HttpResponse, который служит обёрткой над нижележащим соединением с клиентским браузером. Вообще говоря, сервлет в простом случае может быть представлен реализацией интерфейса HttpServlet.

Public class MyServlet extends HttpServlet{

public void init() throws ServletException{

}

public void destroy(){

}

public void service(HttpRequest request, HttpResponse response) throws ServletException{

}

}

Основная логика сервлета сосредоточена в методе service().

 

Рисунок 2. Типичная архитектура web-приложения

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

  • Статические;
  • Динамические.

 

Под статическими ресурсами подразумевается статическое содержимое web-сайта, например: картинки и статические страницы.

Под динамическими ресурсами обычно подразумевают динамически формируемые страницы, т.е. страницы, содержимое которых зависит от конкретного запроса, состояния каких либо данных (например, в БД).

 

Статические ресурсы удобно располагать в файловой системе web-сервера, в то время как динамические ресурсы, по определению, не могут располагаться где либо и должны формироваться «на лету», например, сервлетами. Аналогичными технологиями, позволяющими формировать динамическое содержимое web-сайта являются страницы ASP, ASP.Net, скрипты CGI (написанные, например на Perl или C) или страницы PHP.

 

В спецификации Servlet API описан ряд абстракций, которые следует использовать при создании web-приложения на основе сервлетов и JSP. Наиболее интересными с т. Зрения курса являются:

  • javax.servlet.http.HttpServlet
  • javax.servlet.http.HttpServletRequest
  • javax.servlet.http.HttpServletResponse
  • javax.servlet.http.HttpSession
  • javax.servlet.ServletConfig
  • javax.servlet.ServletContext
  • javax.servlet.Filter

 

Рассмотрим каждую из перечисленных абстракций и кратко опишем типичные примеры использования.

 

Это основная абстракция представленная абстрактным классом, которую разработчики сервлета должны реализовать для получения готового решения. В контекстве контейнера сервлетов всё обращение с ним происходит только через этот класс, т.е. все вызовы для управления жизненным циклом сервлета происходят посредством вызова контейнером соответствующих методов (init(), destroy(), service()). В простейшем случае для реализации логики сервлета достаточно лишь реализовать метод service(), который принимает два параметра HttpServletRequest и HttpServletResponse. В методе service() разработчик реализует логику отвечающую за один HTTP запрос (например GET или POST). Для того чтобы получить параметры запроса из метода service() можно использовать HttpServletRequest.getParameter(“paramName”). Таким образом если пользователь наберёт в браузере http://localhost/MyServlet?paramName=paramValue то вышеприведённый вызов метода вернёт “paramValue”. Для генерации ответа клиенту следует использовать Writer который можно получить из HttpServletResponse.getWriter(). После чего записывать во Writer генерацию HTTP страницы, например:

writer.write(«<html><body>Hello World!</body></html>»);

 

<== предыдущая лекция | следующая лекция ==>
Контейнеры компонент | Javax.servlet.http.HttpSession
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 462; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.