Чтобы вызвать сервлет с помощью броузера из HTML страницы, поместите URL сервлета в соответствующий HTML тег. (В этом разделе необходимы знания языка HTML.) Теги, в которые можно помещать URL включают те, что начинаются с <A... и <FORM..., а также мета теги.

В этом разделе будут обсуждаться сервлеты ShowCart, Cashier, и Receipt из примера магазина Duke's Bookstore. По счастливой случайности, рассматриваемые примеры идут в том же порядке, что и сервлеты отображают страницы, когда Вы просматриваете Вашу корзину и покупаете книги.

Для более быстрого доступа к сервлету ShowCart, нажмите ссылку Show Cart на главной странице магазина Duke's Bookstore. Если Вы используете servletrunner или сервер для запуска примера, перейдите на главную страницу магазина используя советы предыдущего урока. Но ради интереса, Вы можете добавить книгу в Вашу корзину, прежде чем получите доступ к сервлету ShowCart.

Примеры URL сервлетов в HTML тегах

Страница, возвращаемая сервлетом ShowCartServlet, имеет несколько ссылок, каждая из которых имеет ссылку на сервлет. Вот код, который показывает одну из этих ссылок:

 public class ShowCartServlet extends HttpServlet { 
    public void doGet (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        ...
        out.println(... + "<a href=\"" 
                + response.encodeUrl("/servlet/cashier") 
                + "\">Check Out</a>" + ...);
        ...
    }
    ...
}

Этот код позволяет вывести HTML страницу со следующим кодом:

<a href="http://localhost:8080/servlet/cashier>Check Out</a>

Вы увидите эту ссылку, если просмотрите код страницы загруженный сервлетом showcart. Нажмите на ссылку. Сервлет cashier вернет Вам страницу, которая содержит следующий пример.

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

 public class CashierServlet extends HttpServlet { 
    public void doGet (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        ...
        out.println(... 
                + "<form action=\"" 
                + response.encodeUrl("/servlet/receipt") 
                + "\" method=\"post\">" 
                + ...
                + "<td><input type=\"text\" name=\"cardname\"" 
                + "value=\"Gwen Canigetit\" size=\"19\"></td>" 
                + ...
                + "<td><input type=\"submit\"" 
                + "value=\"Submit Information\"></td>" 
                + ...
                + "</form>" 
                + ...);
        out.close();
    }
    ...
}

Код генерирует HTML страницу с тегом:

<form action="http://localhost:8080/servlet/receipt" method="post">

Вы увидите эту ссылку, если просмотрите код страницы загруженный сервлетом cashier. Отправьте форму. Сервлет receipt вернет Вам страницу, которая содержит следующий пример.

Страница, загруженная сервлетом receipt, перегружает сама себя так, что если хотите посмотреть HTML код, делайте это быстро!

Страница, возвращаемая сервлетом receipt, содержит мета тег, который использует URL сервлета в качестве значения атрибута http-equiv. Вообще говоря, тег перенаправляет на главную страницу магазина Duke's Bookstore после того, как отблагодарит пользователя за помещенный заказ. Ниже приведен код для вывода данного тега:

public class ReceiptServlet extends HttpServlet { 
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        ...
        out.println("<html>" 
                + "<head><title> Receipt </title>" 
                + "<meta http-equiv=\"refresh\" content=\"4; url=" 
                + "http://" 
                + request.getHeader("Host") 
                + "/servlet/bookstore;\">" 
                + "</head>" 
                + ...
        ...
    }
    ...
}

Этот код генерирует HTML страницу со следующим тегом:

<meta http-equiv="refresh" 
      content="4; url=http://localhost:8080/servlet/bookstore;">