Spring MVC Controller: Разница между return forward, redirect, и возвратом jsp-файла
Не понимаю, что использовать и когда.
Есть две страницы - intro.jsp(1) и booksList.jsp(2). Для каждой страницы создано по одному классу-контроллеру.
На первой странице есть кнопка, открывающая вторую странцу:
<form method="GET" action="/request-list">
<input type="submit"/>
</form>
Первый вопрос: не уверен насчёт правильности этой кнопки - она вроде работает OK, но как сделать правильно, чтобы при открытии не было вопросительного знака на конце URL.
Второе:
Когда происходит нажатие на кнопку (кнопка на первой странице), срабатывает метод с аннотацией (контроллер для первой страницы):
@RequestMapping(value = "request-list")
А вот класс-контроллер, который отвечает за действия со второй страницей:
@RequestMapping(value = "/books")
@Controller
public class BooksListController {
/**
* запрос на страницу-список
*/
@RequestMapping
public String booksList() {
return "jsp/books/booksList";
}
}
А что возвращать этим методом? То есть как мне делать переход из первой на вторую страницу? Как писать:
return "redirect:/books";
вернулhttp://localhost:8080/books?
return "jsp/books/booksList";
вернулhttp://localhost:8080/request-list?
return "forward:/books";
вернулhttp://localhost:8080/request-list?
Вроде бы результат одинаков (страница 2 открывается), ну кроме URL в браузере - они разные. Для каких случаев что использовать?