2010-07-01 5 views
1

RequestDispatcher в основном отправляет запрос на другой ресурс, то есть он не выполняет перенаправление, а просто пересылает страницу на какую-либо страницу (ресурс). Таким образом, история браузера и т. Д. Не обновляется, а параметры, доступные в request, все еще доступны на другой странице, так как мы не создаем новый запрос с использованием перенаправления.Что эквивалентно RequestDispatcher # forward() Java в PHP?

Что эквивалентно этому в PHP? А также какая функция используется для перенаправления страницы?

Заранее спасибо :)

ответ

1

Нет прямого эквивалента.

include и семьи похожи, но отличаются по нескольким аспектам:

  • Текущее состояние сценария сохраняется (любых глобальных переменных, функций и классов определения и т.д.)
  • Файл путь должен

Возможно, наиболее похожее внутреннее подзапрос Apache (см. virtual), но это не имеет никакого отношения к самому PHP. Когда PHP вызывается, запрос уже «отправлен». Конечно, вы можете, если хотите, сделать виртуальную «логику отправки запроса» с PHP, что означает отправку всех запросов на какой-то исходный скрипт, который затем решает, что включать/выполнять. Это то, что делают несколько фреймворков.

Чтобы перенаправить страницу, вы вручную отправить заголовок:

header("{$_SERVER['SERVER_PROTOCOL']} $code"); //code can be 301, 302, 303, 307 
header("Location: $url"); 
0

понятия Перенаправление и вперед, как в Java, может быть достижимо в PHP тоже.

Перенаправление (URL в адресной строке изменения) - header("Location: redirect.php");

Forward (URL без изменений в адресной строке) - include forward.php ;

Я надеюсь, что его управляемым с этим & других логик программирования известных.