Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 модуль.docx
Скачиваний:
15
Добавлен:
02.11.2018
Размер:
92.62 Кб
Скачать

Раздел 13. Технология Java Servlet

Java Servlet (или просто сервлет) — это Java-класс, который выполняется на стороне веб-сервера и обрабатывает запросы клиентов. Веб-сервер, поддерживающий работу сервлетов, называют сервлет-контейнером (например, Tomcat и Jetty).

Сервлет — наследник абстрактного класса javax.servlet.http.HttpServlet. Пакеты javax.servlet и javax.servlet.http (так называемое Servlet API) входят в состав J2EE.

Сервлет-контейнер при получении запроса от клиента вызывает соответствующий метод у сервлета (метод service), который обрабатывает запрос и генерирует ответ. Методу service в параметрах передаются объекты, которые позволяют получить информацию о запросе и сгенерировать ответ.

Сервлеты — это технология по назначению аналогичная CGI, но ориентированная на язык Java. Основное отличие сервлетов от CGI в том, что для обработки каждого запроса не создается новый процесс, а все запросы обрабатываются одним экземпляром сервлета в рамках одного процесса сервлета-контейнера. Это существенно влияет на производительность сервлетов и общую архитектуру веб-приложения.

13.1. Веб-модули

Пример сервлета

Ниже приводится пример простого сервлета, который выводит форму для ввода имени; если имя уже введено, то сервлет выводит приветствие. Внизу страницы выводится счетчик с количеством обращений к странице.

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

public class HelloServlet extends HttpServlet {

int counter = 0;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException {

request.setCharacterEncoding("windows-1251");

response.setContentType("text/html; charset=windows-1251");

PrintWriter out = response.getWriter();

String name = request.getParameter("name"); // имя пользователя

if (name != null && !name.equals("")) // если введено имя...

out.printf("<h1>Здравствуйте, %s!</h1>", name);

else

out.printf("<form action=\"%s\">Ваше имя: " + "<input type=text name=name><input type=submit></form>",

request.getRequestURI()

);

out.printf("<div align=right>%d</div>", ++counter); // счетчик

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {

doGet(request,response);

}

}

Метод doGet вызывается при HTTP-запросе типа GET, метод doPost — при HTTP-запросе типа POST. Этим методам передается два параметра: первый — это информация о запросе, второй — объект для формирования ответа.

Компиляция сервлетов

Чтобы разместить на веб-сервере сервлет, его предварительно необходимо откомпилировать. Для этого понадобится библиотека классов Servlet API (пакеты javax.servlet, javax.servlet.http). Эти пакеты входят в состав J2EE, а также поставляются вместе с веб-сервером Tomcat (путь: common/lib/servlet-api.jar).

Чтобы Java-компилятор находил и использовал нужную библиотеку классов, в переменной окружения CLASSPATH следует указать путь к библиотеке (jar-архиву) или скопировать библиотеку в каталог JRE\lib\ext (из вашей инсталляции JDK). При использовании интегрированной среды разработки (например, Eclipse или NetBeans), следует добавить библиотеку к проекту средствами самой среды.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]