Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Веб-модуль с использованием сервлетов Java: пример hello2

Приложение hello2 — это веб-модуль, использующий Java Servlet для отображения приветствия и ответа. Вы можете использовать текстовый редактор или IDE NetBeans для просмотра файлов приложения.

Исходный код этого приложения находится в каталоге tut-install/examples/web/servlet/hello2/.

Здесь рассматриваются следующие темы:

Маппинг URL на веб-компоненты

Когда веб-контейнер получает запрос, он должен определить, какой веб-компонент этот запрос обрабатывает. Веб-контейнер делает это сопоставлением пути URL, содержащегося в запросе, с веб-приложением и веб-компонентом. Путь URL всегда содержит корень контекста и, необязательно, шаблон URL:

http://host:port/context-root[/url-pattern]

Вы задаёте шаблон URL для сервлета аннотацией @WebServlet в исходном файле сервлета. Например, файл GreetingServlet.java в приложении hello2 содержит следующую аннотацию, в которой шаблон URL указан как /greeting:

@WebServlet("/greeting")
public class GreetingServlet extends HttpServlet {
    ...

Эта аннотация указывает, что шаблон URL /greeting следует за корневым контекстом. Поэтому, когда сервлет развёртывается локально, он доступен по следующему URL:

http://localhost:8080/hello2/greeting

Чтобы получить доступ к сервлету с помощью только корневого контекста, укажите "/" в качестве шаблона URL.

Изучение веб-модуля hello2

Приложение hello2 ведёт себя почти идентично приложению hello1, но оно реализовано с использованием Java Servlet вместо JavaServer Faces. Вы можете использовать текстовый редактор или IDE NetBeans для просмотра файлов приложения.

Просмотр веб-модуля hello2 в IDE NetBeans

Чтобы просмотреть веб-модуль hello2 с IDE NetBeans:

  1. В меню «Файл» выберите «Открыть проект».

  2. В диалоговом окне «Открыть проект» перейдите к:

    tut-install/examples/web/servlet
  3. Выберите каталог hello2 и нажмите «Открыть проект».

  4. Разверните узел «Исходные пакеты», затем разверните узел javaeetutorial.hello2.

  5. Выполните двойной клик на файле GreetingServlet.java чтобы просмотреть его.

    Этот сервлет переопределяет метод doGet, реализуя метод GET HTTP. Сервлет отображает простую HTML-форму приветствия, кнопка Submit которой, как и в случае с hello1, задаёт страницу ответа для своего действия. Следующий фрагмент начинается с аннотации @WebServlet, указывающей шаблон URL относительно корневого контекста:

    @WebServlet("/greeting")
    public class GreetingServlet extends HttpServlet {
    
        @Override
        public void doGet(HttpServletRequest request,
                HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setContentType("text/html");
            response.setBufferSize(8192);
            try (PrintWriter out = response.getWriter()) {
                out.println("<html lang=\"en\">"
                        + "<head><title>Servlet Hello</title></head>");
    
                // запись данных в ответ
                out.println("<body  bgcolor=\"#ffffff\">"
                    + "<img src=\"duke.waving.gif\" "
                    + "alt=\"Duke waving his hand\">"
                    + "<form method=\"get\">"
                    + "<h2>Hello, my name is Duke. What's yours?</h2>"
                    + "<input title=\"My name is: \"type=\"text\" "
                    + "name=\"username\" size=\"25\">"
                    + "<p></p>"
                    + "<input type=\"submit\" value=\"Submit\">"
                    + "<input type=\"reset\" value=\"Reset\">"
                    + "</form>");
    
                String username = request.getParameter("username");
                if (username != null && username.length()> 0) {
                    RequestDispatcher dispatcher =
                        getServletContext().getRequestDispatcher("/response");
    
                    if (dispatcher != null) {
                        dispatcher.include(request, response);
                    }
                }
                out.println("</body></html>");
            }
        }
        ...
  6. Выполните двойной клик на файле ResponseServlet.java чтобы просмотреть его.

    Этот сервлет также переопределяет метод doGet, отображая только ответ. Следующий фрагмент начинается с аннотации @WebServlet, которая указывает шаблон URL относительно корневого контекста:

    @WebServlet("/response")
    public class ResponseServlet extends HttpServlet {
    
        @Override
        public void doGet(HttpServletRequest request,
                HttpServletResponse response)
                throws ServletException, IOException {
            try (PrintWriter out = response.getWriter()) {
    
                // запись данных в ответ
                String username = request.getParameter("username");
                if (username != null && username.length()> 0) {
                    out.println("<h2>Hello, " + username + "!</h2>");
                }
            }
        }
        ...

Запуск hello2

Вы можете использовать IDE NetBeans или Maven для сборки, упаковки, развёртывания и запуска примера hello2.

Здесь рассматриваются следующие темы:

Запуск hello2 из IDE NetBeans

Чтобы запустить пример hello2 с IDE NetBeans:

  1. Запустите GlassFish Server, как описано в Запуск GlassFish Server с IDE NetBeans, если вы этого ещё не сделали.

  2. В меню «Файл» выберите «Открыть проект».

  3. В диалоговом окне «Открыть проект» перейдите к:

    tut-install/examples/web/servlet
  4. Выберите каталог hello2.

  5. Нажмите Открыть проект.

  6. На вкладке Проекты кликните правой кнопкой мыши проект hello2 и выберите Сборка для упаковки и развёртывания проекта.

  7. В веб-браузере откройте следующий URL:

    http://localhost:8080/hello2/greeting

    URL указывает корень контекста, за которым следует шаблон URL.

    Приложение очень похоже на приложение hello1. Основное отличие состоит в том, что после клика кнопки «Отправить» ответ появляется под приветствием, а не на отдельной странице.

Запуск hello2 с использованием Maven

Чтобы запустить пример hello2 с помощью Maven:

  1. Запустите GlassFish Server, как описано в Запуск GlassFish Server с помощью командной строки, если вы этого ещё не сделали.

  2. В окне терминала перейдите в:

    tut-install/examples/web/servlet/hello2/
  3. Введите следующую команду:

    mvn install

    Эта команда собирает WAR-файл, копирует его в каталог tut-install/examples/web/hello2/target/ и развёртывает его.

  4. В веб-браузере откройте следующий URL:

    http://localhost:8080/hello2/greeting

    URL указывает корень контекста, за которым следует шаблон URL.

    Приложение очень похоже на приложение hello1. Основное отличие состоит в том, что после клика кнопки «Отправить» ответ появляется под приветствием, а не на отдельной странице.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)