この記事ではURLのGETリクエストパラメータを受け取ってブラウザに表示する仕組みを説明します。
VSCodeでSpringBootのMavenプロジェクトを作成します。
手順は以下の記事を参照。
新規でSpringBootプロジェクトを作成したら、以下のソースを用意して実行できる状態にします。
(SimpleCtrl.java)
SimpleCtrl.java
@Controller
public class SimpleCtrl {
@GetMapping("/")
public String hello() {
return "hello"; //hello.htmlを表示する。
}
@GetMapping("/hello")
public String hello(@RequestParam("apple") String msg,Model model){
model.addAttribute("sample", msg);
return "hello"; //hello.htmlを表示する。
}
}
(hello.html)
hello.html
<body>
<h2>HelloWorld</h2>
<p>hello.htmlを表示しています。</p>
<p th:text="${sample}"</p>
</body>
上記のソースを実行してブラウザでhttp://localhost:8080/hello?apple=100にアクセスすると以下のように表示されます。
@RequestParam("apple") String msg
は、URL中の「apple=100」という組み合わせを受け取ります。
model.addAttribute("sample", msg);
はhello.html
側で定義した変数${sample}
にmsg
を代入することを意味します。
ブラウザでhttp://localhost:8080/hello2?apple=100&lemon=200と複数のGET値を渡した場合は以下のように記述します。
Java
@GetMapping("/hello2")
public String hello2(@RequestParam("apple") String msg,
@RequestParam("lemon") String msg2,
Model model){
String result = msg + msg2;
model.addAttribute("sample", result);
return "hello"; //hello.htmlを表示する。
}
@RequestParam
の書き方2選@RequestParam
の書き方はいろいろな書き方ができます。
GETリクエストの名前と変数名を別々にしたい場合は、@RequestParam("apple") String msg
のように記述します。
GETリクエストの名前と変数名を同一にしたい場合は、
@RequestParam("apple") String apple
↓
@RequestParam String apple
に短縮できます。以下がそのサンプルです。
Java
@GetMapping("/hello2")
public String hello2(@RequestParam String apple,
@RequestParam String lemon,
Model model){
String result = apple + lemon;
model.addAttribute("sample", result);
return "hello"; //hello.htmlを表示する。
}
@PathVariable
でGetリクエストを受け取る@PathVariable
を使用して、URLパスからデータを取得するが出来ます。
Java
@Controller
public class SimpleCtrl {
@GetMapping("/")
public String hello() {
return "hello"; //hello.htmlを表示する。
}
@GetMapping("/hello/{fruit}")
public String hello(@PathVariable String fruit,
Model model){
model.addAttribute("sample", fruit);
return "hello"; //hello.htmlを表示する。
}
}
以上で記事の解説はお終い!
もっとJavaやSpringを勉強したい方にはUdemyがオススメ!同僚に差をつけよう!