何を使うべきかわかりません。 2つのページ-intro.jsp(1)とbooksList.jsp(2)があります。各ページに対して、コントローラークラスを1つ作成しました。最初のページには、2番目のページを開くボタンがあります。
<form method="GET" action="/request-list">
<input type="submit"/>
</form>
最初の質問は:このボタンの正確性についてはわかりません。うまくいきますが、このボタンを押すと疑問符が表示されます。
2番目の質問は:そのボタンを押すと、次のアノテーションのメソッドが呼び出されます(2ページ目のコントローラー):
@RequestMapping(value = "/books")
@Controller
public class BooksListController {
@RequestMapping
public String booksList() {
return "jsp/books/booksList";
}
}
このメソッドで何を返す必要がありますか?つまり、最初のページから2番目のページにジャンプするにはどうすればよいですか?
return "redirect:/books"; returns http://localhost:8080/books?
return "jsp/books/booksList"; returns http://localhost:8080/request-list?
return "forward:/books"; returns http://localhost:8080/request-list?
結果は同じであることがわかります。これらの文字列はすべて同じページを提供しました(ページ2が開かれました)。どの場合に「リダイレクト」、「フォワード」、「page.jsp」を使用する必要がありますか?
また、 Post/Redirect/Get article を読みました。 POSTメソッド処理の後に「リダイレクト」を使用する必要がありますか?
最初の質問は、このボタンの正確性についてはわかりません。うまくいきますが、このボタンを押すと疑問符が表示されます。
OK、GET httpメソッドを使用するため、疑問符が挿入されます。リクエストペイロードでデータを渡すには、POSTメソッドを使用する必要があります。
return "redirect:/books";
クライアント(ブラウザ)に戻り、http応答を解釈して、リダイレクトURLを自動的に呼び出します
return "jsp/books/booksList";
JSPを処理し、HTMLをクライアントに送信します
return "forward:/books";
要求を転送し、サーバー側でURLを直接呼び出します。
どちらを使用するかを決定するには、各アプローチのいくつかの側面を考慮する必要があります。
転送:より高速で、クライアントブラウザが関与せず、ブラウザに元のURLが表示され、転送されたURLを使用してリクエストが転送されます。
リダイレクト:低速で、クライアントブラウザが関与し、ブラウザはリダイレクトされたURLを表示し、リダイレクトされたURLへの新しいリクエストを作成します。