Сервлет

Сервлет

Сервлет является Java-программой, выполняющейся на стороне сервера и расширяющей функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ.

Сервлеты должны реализовывать Servlet интерфейс, который определяет методы жизненного цикла.

Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов. Для таких приложений технология Java Servlet определяет HTTP-специфичные сервлет классы.

Пакеты javax.servlet и javax.servlet.http обеспечивают интерфейсы и классы для создания сервлетов.

Содержание

История

Первая спецификация сервлетов была создана в Sun Microsystems (версия 1.0 была закончена в июне 1997). Начиная с версии 2.3, спецификация сервлетов разрабатывалась под руководством Java Community Process. Стандарт JSR 53 определял как Servlet 2.3, так и спецификацию JavaServer Page 1.2. JSR 154 включает в себя спецификации Servlet 2.4 и текущую на данный момент 2.5.

Хронология Servlet API
Servlet API версия Релиз Платформа Важнейшие изменения
Servlet 3.0 Декабрь 2009 JavaEE 6, JavaSE 6 //REALLY? Pluggability, простота разработки, асинхронные сервлеты, безопасность, загрузка файлов
Servlet 2.5 Сентябрь 2005 JavaEE 5 , J2SE 5.0 Требует J2SE 5.0, поддержка annotations
Servlet 2.4 Ноябрь 2003 J2EE 1.4, J2SE 1.3 web.xml использует XML Schema
Servlet 2.3 Август 2001 J2EE 1.3, J2SE 1.2 Появление Filter
Servlet 2.2 Август 1999 J2EE 1.2, J2SE 1.2 Становится частью J2EE, предлагает независимые веб-приложения в .war файлах
Servlet 2.1 Ноябрь 1998 не оговорено Первая официальная спецификация, добавлены RequestDispatcher, ServletContext
Servlet 2.0 JDK 1.1 Часть Java Servlet Development Kit 2.0
Servlet 1.0 Июнь 1997

Жизненный цикл Сервлета

Жизненный цикл сервлета состоит из следующих шагов:

  1. В случае отсутствия сервлета в контейнере.
    1. Класс сервлета загружается контейнером.
    2. Контейнер создает экземпляр класса сервлета.
    3. Контейнер вызывает метод init(). Этот метод инициализирует сервлет и вызывается в первую очередь, до того, как сервлет сможет обслуживать запросы. За весь жизненный цикл метод init() вызывается только однажды.
  2. Обслуживание клиентского запроса. Каждый запрос обрабатывается в своем отдельном потоке. Контейнер вызывает метод service() для каждого запроса. Этот метод определяет тип пришедшего запроса и распределяет его в соответствующий этому типу метод для обработки запроса. Разработчик сервлета должен предоставить реализацию для этих методов. Если поступил запрос, метод для которого не реализован, вызывается метод родительского класса и обычно завершается возвращением ошибки инициатору запроса.
  3. В случае если контейнеру необходимо удалить сервлет, он вызывает метод destroy(), который снимает сервлет из эксплуатации. Подобно методу init(), этот метод тоже вызывается единожды за весь цикл сервлета.

Пример

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class NewServlet extends HttpServlet {
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
        // Параметр
        String parameter = request.getParameter("parameter");
 
        // Старт HTTP сессии
        if (request.getSession() == null) {
            HttpSession session = request.getSession(true);
            session.setAttribute("parameter", parameter);
        }
 
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Заголовок</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Пример сервлета"+parameter+"</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    } 
 
    @Override
    public String getServletInfo() {
        return "Пример сервлета";
    }
 
}

См. также

Серверы

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Сервлет" в других словарях:

  • сервлет — Java аплет, который выполняется по запросу на сервере. Сервлеты позволяют расширять функциональные возможности веб серверов более гибким путем, чем это позволяют CGI скрипты, и к тому же в большей степени мобильными средствами. Название сервлет… …   Справочник технического переводчика

  • сервлет — се/рвлет , род. сервлета, мн. сервлети, род. мн. сервлетів це технологія платформи Java для розширення й покращення Web серверів. Сервлети аналог технологій PHP, CGI і ASP.NET. Сервлет може зберігати інформацію між багатьма транзакціями,… …   Фізико-технічний словник-мінімум

  • Сервлет (Java) — Сервлет является Java интерфейсом, реализация которого расширяет функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос ответ. Хотя сервлеты могут обслуживать любые запросы, они обычно используются для …   Википедия

  • Servlet — Сервлет является программой, выполняющейся на стороне сервера и расширяющей функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос ответ. Сервлеты должны реализовывать Servlet интерфейс, который… …   Википедия

  • JSP — Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка. Статью следует исправить согласно стилистическим правилам Википедии. JSP (JavaServer Pages)  технология, позволяющая веб разработчикам легко создавать содержимое, которое… …   Википедия

  • Java Platform, Enterprise Edition — Тип Платформа программирования Разработчик Sun Microsystems …   Википедия

  • Java Platform — Java Platform, Enterprise Edition Java Platform, Enterprise Edition Тип Платформа программирования Разработчик Sun Microsystems …   Википедия

  • Дескриптор развертывания — Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей. Дескриптор …   Википедия

  • WAR (тип файла) — Web Archive или Web Application Archive это формат файла, описывающий, как полное Веб приложение упаковывается в соответствии с Java Сервлет спецификацией в файл в JAR или ZIP формата.[1] Такие файлы имеют расширение „.war“ и поэтому называются… …   Википедия

  • WebLogic — Тип Сервер приложений Разработчик Oracle Corporation Операционная система Кроссплатформенное программное обеспечение Последняя версия 12c (1 декабря 2011 года) Лицензия Собственническое ПО …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»