URL не показывает правильный адрес после использования переадресации запроса сервлета - PullRequest
2 голосов
/ 03 октября 2010

У меня здесь странная проблема, и я действительно застрял, мне нужно плохо работать.

так что у меня есть страница с именем index.jsp со ссылкой "a href = servlet? Action = viewMenu". когда я нажимаю на эту ссылку, она переходит к doGet () в моем сервлете, и вот код в моем сервлете.

 protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
                 String action = request.getParameter("action");
                   if(action.equals("viewMenu")){
                        address = "/viewAdminMenu.jsp";
                   }
                RequestDispatcher dispatcher = request.getRequestDispatcher(address);
                dispatcher.forward(request,response);
     }

Таким образом, приведенный выше код работает нормально, но после пересылки запроса мой браузер отображает URL-адрес как

локальный / проект / сервлет? Действие = viewMenu. (с http: // в начале)

Мне не нужен вышеуказанный URL, поскольку я не могу установить базовую аутентификацию с помощью tomcat, мне нужно

localhost / project / viewAdminMenu.jsp (с http: // в начале)

Я пытался найти информацию об этом, но не смог ее выяснить.

Любая помощь будет очень ценится.

1 Ответ

4 голосов
/ 03 октября 2010

Если вы хотите, чтобы браузер перешел на другой URL, вам нужно указать его перенаправить, а не делать пересылку на сервере.См. sendRedirect() метод HttpServletResponse .

Переадресация

  • Переадресация выполняется внутри сервлета
  • браузер полностью не знает, что это произошло, поэтому его исходный URL-адрес остается неизменным
  • любая перезагрузка браузера на полученной странице просто повторяет исходный запрос с исходным URL-адресом

Перенаправление

  • перенаправление - это двухэтапный процесс, при котором веб-приложение инструктирует браузер извлечь второй URL, который отличается от исходного
  • перезагрузка браузера второго URL-адреса не будет повторять исходный запрос, а скорее принесет второй URL
  • редирект незначительно медленнее, чем переадресация, поскольку для него требуется два запроса браузера, а не один
  • объекты, помещенные в исходную область запроса, недоступны для второго запроса

( С Java Practices .)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...