1.RequestDispatcher.forward()
работает на стороне сервера. При использовании forward() механизм сервлетов передает HTTP-запрос от текущего сервлета или JSP другому сервлету, JSP или обычному HTML-файлу, то есть ваша форма отправляется в другой файл. a.jsp, функцияward() используется в a.jsp для перенаправления на b.jsp. В это время вся информация, отправленная формой, может быть получена в b.jsp, и параметры передаются автоматически.
Однако функцияward() не может перенаправить на файл jsp с рамкой. В то же время функцияward() не может быть передана с параметрами в конце, например servlet?name=frank. Если это не сработает, вы можете передать ответ в программе .setAttribute("name",name) для перехода на следующую страницу.
URL-адрес адресной строки браузера остается неизменным после перенаправления.
Пример: перенаправление в сервлете.
Содержимое кода обычно используется в сервлетах, а не в jsp.
public void doPost (запрос HttpServletRequest, ответ HttpServletResponse)
выдает ServletException,IOException ...{
response.setContentType("text/html; charset=gb2312");
ServletContext sc = getServletContext();
RequestDispatcher rd = null;
rd = sc.getRequestDispatcher("/index.jsp"); //Направленная страница
rd.forward(запрос, ответ);
}
2.ответ.sendRedirect()
Он работает в браузере пользователя. sendRedirect() может передавать параметры, такие как servlet?name=frank, на следующую страницу. В то же время он может перенаправлять на разные хосты. sendRedirect() может перенаправлять файлы jsp.
После перенаправления URL-адрес перенаправленной страницы появится в адресной строке браузера.
Пример: перенаправление в сервлете
Содержимое кода
public void doPost(запрос HttpServletRequest, ответ HttpServletResponse)
выдает ServletException,IOException ... {
response.setContentType("text/html;
charset=gb2312")
;
Поскольку ответ является неявным объектом на странице jsp, метод response.sendRedirect() можно использовать для прямой реализации перемещения на странице jsp.
Примечание.
(1) При использовании response.sendRedirect вывод HTML невозможен.
Это не является абсолютным. Отсутствие вывода HTML на самом деле означает, что HTML не может быть отправлен в браузер. Фактически, сегодняшние серверы имеют механизм кэширования, обычно 8K (я имею в виду JSP SERVER). Это означает, что, если вы не отключите кеш или не используете out.flush() для принудительного обновления, то перед использованием sendRedirect, небольшое количество. HTML-вывода также разрешен.
(2) После .response.sendRedirect должен следовать возврат;
мы уже знаем, что response.sendRedirect перенаправляется через браузер, поэтому никаких реальных действий не будет до завершения обработки страницы. Теперь, когда вы уже выполнили рулевое управление, каково значение конечного результата? И возможно, что рулевое управление выходит из строя из-за последующего выхода.
Сравнивать:
(1).Request Dispatcher.forward() — это перенаправление управления в контейнере, при этом перенаправленный адрес не будет отображаться в адресной строке клиентского браузера;
(2).response.sendRedirect() — это полный переход. Браузер получит адрес перехода и повторно отправит ссылку на запрос. Таким образом, адрес ссылки после перехода можно будет увидеть в адресной строке браузера.
Первый вариант более эффективен. Если первый вариант соответствует потребностям, попробуйте использовать метод RequestDispatcher.forward().
Примечание. В некоторых случаях, например, если вам нужно перейти к ресурсу на другом сервере, необходимо использовать метод. Метод HttpServletResponse.sendRequest().
3.<jsp:forward page="" />
Базовая часть реализуется RequestDispatcher, поэтому она несет в себе отпечаток метода RequestDispatcher.forward(). Если перед <jsp:forward> имеется большой объем вывода, а предыдущий вывод заполнил буфер и будет автоматически выведен клиенту, то этот оператор не будет работать. На это следует обратить особое внимание.
Также обратите внимание: он не может изменить адрес браузера. Обновление приведет к повторной отправке.
4. Измените атрибут Location HTTP-заголовка для перенаправления.
Перенаправьте страницу, напрямую изменив адресную строку.
Код файла jsp выглядит следующим образом:
Содержание кода: 5. JSP реализует автоматическое перенаправление на другую страницу после пребывания на определенной странице в течение нескольких секунд.
В html файле следующий код:
<meta http-equiv="refresh" content="300; url=target.jsp">
Что это означает. Через 5 минут страница, которую вы просматриваете, автоматически изменится на страницу target.html. 300 в коде — время задержки обновления в секундах. target.html — это целевая страница, на которую вы хотите перенаправить. Если это именно эта страница, она автоматически обновится.
Как видно из вышеизложенного, вы можете использовать setHeader для автоматического перенаправления на другую страницу после пребывания на ней в течение нескольких секунд.
Ключевой код:
Содержание кода
<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = "/newpath/jsa.jsp";
response.setHeader("Местоположение",newLocn);
%>
String content=stayTime+";URL="+URL;
response.setHeader("ОБНОВИТЬ",content);