Клиентский доступ из интернета или корпоративного интранета, конечно же, является легким способом позволить многим получить или предоставить доступ к данным и ресурсам [4].

Этот тип доступа основывается на клиентах, использующий стандартный для World Wide Web Язык Гипертекстовой Разметки (Hypertext Markup Language -- HTML) и Протокол Передачи Гипертекста (Hypertext Transfer Protocol -- HTTP). Сервлетное API является набором абстрактных общих решений рабочей среды, соответствующих HTTP запросам.

Традиционно, способ решения таких проблем, как возможность для Интернет клиента обновления базы данных, состояла в создании HTML страницы с текстовыми полями и кнопкой "Submit". Пользователь впечатывал соответствующую информацию в текстовые поля и нажимал кнопку "Submit". Данные передавались вместе с URL, который говорил серверу, что делать с данными, указывая расположение программы Common Gateway Interface (CGI), которую запускал сервер, обеспечивая программу данными, которые она требовала. CGI программа обычна написана на Perl, Python, C, C++ или любом другом языке, который умеет читать стандартный ввод и писать в стандартный вывод. Это все, что предоставлял Web сервер: вызывалась CGI программа и использовались стандартные потоки (или, как возможный вариант для ввода, использовалась переменная окружения) для ввода и вывода. CGI программа отвечала за все остальное. Во-первых, она просматривала данные и решала, является ли их формат корректным. Если нет, CGI программа должна производить HTML страницу для описания проблемы; эта страница передавалась Web серверу (через стандартный вывод из CGI программы), который посылал ее назад пользователю. Пользователь должен был, обычно, вернуться на страницу и попробовать снова. Если данные были корректными, CGI программа обрабатывала данные соответствующим способом, возможно, добавляла их в базу данных. Затем она должна была произвести соответствующую HTML страницу для Web сервера, чтобы он вернул ее пользователю.

Было бы идеально перейти к решению, полностью основанному на Java - апплет на клиентской стороне для проверки и пересылки данных и сервлет на серверной стороне для приема и обработки данных. К сожалению, хотя апплеты предоставляют технологию с вполне достаточной поддержкой, они проблематичны в использовании на Web, поскольку вы не можете рассчитывать на поддержку определенной версии Java на клиентском Web браузере; фактически, вы не можете рассчитывать, что Web браузер вообще поддерживает Java! В Интранете вы можете потребовать, чтобы определенная поддержка была доступна, что позволит реализовать намного большую гибкость в том, что вы можете сделать, но в Web более безопасный подход состоит в том, чтобы вся обработка была на стороне сервера, а клиенту доставлялся обычный HTML. Таким образом, ни один пользователь не будет отклонен вашим сайтом по причине того, что у него нет правильно установленного программного обеспечения.

Поскольку сервлеты предоставляют великолепное решение для программной поддержки на стороне сервера, они являются одним из наиболее популярных причин перехода на Java. Не только потому, что они предоставляют рабочую среду, которая заменяет CGI программирование (и снижает количество throny CGI проблем), но весь ваш код приобретает портируемость между платформами, получаемую от использования Java, и вы приобретаете доступ ко всему Java API (за исключением, конечно, того, которое производит GUI, такого, как Swing).

Основа сервлета

Сервлеты и многопоточность (multithreading)

Обработка сессий с помощью сервлетов

Класс Cookie

Класс Session

Упражнения