Обучение Java. Сервлеты

Перенаправление запроса


Как только Вы получаете объект RequestDispatcher, Вы можете дать возможность ассоциированному с ним ресурсу отвечать на запрос клиента. Перенаправление очень полезно, например, когда сервлет производит запрос, и ответ носит общий характер, так что он может быть передан другому ресурсу. Сервлет может, например, заведовать информацией кредитных карт, когда пользователь размещает заказ, и потом отправлять запрос клиента к заказу, который возвращает страницу "Спасибо за заказ". В примере Duke's Bookstore, сервлет BookStoreServlet получает сессию пользователя, а потом request dispatcher возвращает стартовую страницу магазина Duke's Bookstore:

public class BookStoreServlet extends HttpServlet {

public void service (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... // Получить или начать новую сессию пользователя

HttpSession session = request.getSession(); // Открыть пользователю стартовую страницу

dispatcher.forward(request, response);

... } }

Запомните, что метод forward должен быть использован тогда, когда необходимо отдать другому ресурсу возможность отвечать пользователю. Если Вы уже получили доступ к объектам ServletOutputStream или PrintWriter, Вы не можете использовать этот метод; он вызовет исключение IllegalStateException.

Если Вы уже начали отвечать пользователю, используя объекты PrintWriter или ServletOutputStream, Вам необходимо использовать метод .



Содержание раздела