http://host:port/context-root[/url-pattern]
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
Приложение hello2
— это веб-модуль, использующий Java Servlet для отображения приветствия и ответа. Вы можете использовать текстовый редактор или IDE NetBeans для просмотра файлов приложения.
Исходный код этого приложения находится в каталоге tut-install/examples/web/servlet/hello2/
.
Здесь рассматриваются следующие темы:
Когда веб-контейнер получает запрос, он должен определить, какой веб-компонент этот запрос обрабатывает. Веб-контейнер делает это сопоставлением пути 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
ведёт себя почти идентично приложению hello1
, но оно реализовано с использованием Java Servlet вместо JavaServer Faces. Вы можете использовать текстовый редактор или IDE NetBeans для просмотра файлов приложения.
Чтобы просмотреть веб-модуль hello2
с IDE NetBeans:
В меню «Файл» выберите «Открыть проект».
В диалоговом окне «Открыть проект» перейдите к:
tut-install/examples/web/servlet
Выберите каталог hello2
и нажмите «Открыть проект».
Разверните узел «Исходные пакеты», затем разверните узел javaeetutorial.hello2
.
Выполните двойной клик на файле 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>");
}
}
...
Выполните двойной клик на файле 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>");
}
}
}
...
Вы можете использовать IDE NetBeans или Maven для сборки, упаковки, развёртывания и запуска примера hello2
.
Здесь рассматриваются следующие темы:
Чтобы запустить пример hello2
с IDE NetBeans:
Запустите GlassFish Server, как описано в Запуск GlassFish Server с IDE NetBeans, если вы этого ещё не сделали.
В меню «Файл» выберите «Открыть проект».
В диалоговом окне «Открыть проект» перейдите к:
tut-install/examples/web/servlet
Выберите каталог hello2
.
Нажмите Открыть проект.
На вкладке Проекты кликните правой кнопкой мыши проект hello2
и выберите Сборка для упаковки и развёртывания проекта.
В веб-браузере откройте следующий URL:
http://localhost:8080/hello2/greeting
URL указывает корень контекста, за которым следует шаблон URL.
Приложение очень похоже на приложение hello1
. Основное отличие состоит в том, что после клика кнопки «Отправить» ответ появляется под приветствием, а не на отдельной странице.
Чтобы запустить пример hello2
с помощью Maven:
Запустите GlassFish Server, как описано в Запуск GlassFish Server с помощью командной строки, если вы этого ещё не сделали.
В окне терминала перейдите в:
tut-install/examples/web/servlet/hello2/
Введите следующую команду:
mvn install
Эта команда собирает WAR-файл, копирует его в каталог tut-install/examples/web/hello2/target/
и развёртывает его.
В веб-браузере откройте следующий URL:
http://localhost:8080/hello2/greeting
URL указывает корень контекста, за которым следует шаблон URL.
Приложение очень похоже на приложение hello1
. Основное отличие состоит в том, что после клика кнопки «Отправить» ответ появляется под приветствием, а не на отдельной странице.
Назад | Вперёд | Содержание |