2013-06-12 3 views
1

Пожалуйста, обратите внимание эти фрагменты кодаразница между Spring MVC редиректа и общее Jsp возвращение имени

protected ModelAndView handleRequestInternal(HttpServletRequest request, 
    HttpServletResponse response) throws Exception { 

    return new ModelAndView("redirect:DummyRedirectPage.htm"); 

} 

и

 protected ModelAndView handleRequestInternal(HttpServletRequest request, 
    HttpServletResponse response) throws Exception { 

    return new ModelAndView("somejsp"); 

} 

Может кто-нибудь сказать мне разницу между этими двумя? В обоих случаях метод обработчика перемещает поток на страницу просмотра.

+0

'redirect:' префиксы обрабатываются 'UrlBasedViewResolver'. – NINCOMPOOP

ответ

1

С первым одним пользователем будет получен ответ HTTP 302 для перенаправления на DummyRedirectPage.htm. Если обработчик был сопоставлен с методом POST, это заставит пользователя выполнить GET в DummryRedierctPage.htm

На втором из ваших решений будет распознан "somejsp" в фактическом виде. Пользователь HTTP 302 ответа не предоставляется.

Просьба ознакомиться с информацией о PRG (Post Redirect Get) design pattern, чтобы узнать, почему это имеет значение.

+0

Спасибо за ответ. Таким образом, это означает, что перенаправление - это просто конвертировать из POST в запрос GET? – user2472968

+0

Это просто небольшая его часть. Когда пользователь выдает новый запрос GET, все данные на вашей модели могут/не потеряться. Синтаксис 'redirect:' полезен в шаблоне POST-REDIRECT-GET: en.wikipedia.org/wiki/Post/Redirect/Get – gerrytan

Смежные вопросы