この期間に私はSpring MVCのショーケースの例(STSのダッシュボードからダウンロード可能)を勉強しています、そして私はRequest Mapping
の例についていくつかの簡単な質問をします:
1)home.jsp
ページにこのリンクがあります。
<li>
<a id="byParameter" class="textLink" href="<c:url value="/mapping/parameter?foo=bar" />">By path, method, and presence of parameter</a>
</li>
このリンクからわかるように、値「bar」を含む「foo」パラメータを持つHTTP GETリクエストを実行しています。
このHTTPリクエストは、コントローラクラスMappingControllerの以下のメソッドによって処理されます。
@RequestMapping(value="/mapping/parameter", method=RequestMethod.GET, params="foo")
public @ResponseBody String byParameter() {
return "Mapped by path + method + presence of query parameter! (MappingController)";
}
このメソッドは、 "foo"という名前のパラメータを持つHTTPリクエスト(GET
タイプのみ)を管理します。
どうやってこのパラメータの値( "bar")を取得し、それを自分のby Parameterメソッドのコード内の変数に入れることができますか?
ドキュメント で説明されているように、@RequestParam
アノテーションを使うことで:
public @ResponseBody String byParameter(@RequestParam("foo") String foo) {
return "Mapped by path + method + presence of query parameter! (MappingController) - foo = "
+ foo;
}
URIテンプレートを使うこともできます。リクエストを安らかなURLに構造化した場合、SpringはURLから提供された値を解析できます。
HTML
<li>
<a id="byParameter"
class="textLink" href="<c:url value="/mapping/parameter/bar />">By path, method,and
presence of parameter</a>
</li>
コントローラー
@RequestMapping(value="/mapping/parameter/{foo}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String foo) {
//Perform logic with foo
return "Mapped by path + method + presence of query parameter! (MappingController)";
}