@GetMappingとは?@GetMappingの使い方を完全ガイド!初心者でもわかるSpring MVCのGETリクエスト処理
新人
「Spring MVCで@GetMappingって何に使うんですか?なんだかよく分からなくて…」
先輩
「@GetMappingは、ユーザーがブラウザでURLにアクセスしたときに、そのリクエストを処理するメソッドを指定するために使うんだ。簡単に言うと、Webページを表示させたいときに便利なんだよ。」
新人
「なるほど!じゃあ、どうして@RequestMappingじゃなくて@GetMappingを使うんですか?」
先輩
「それじゃあ、@GetMappingの役割や利便性について詳しく見ていこう!」
1. @GetMappingとは?
@GetMappingは、Spring MVCで使用されるアノテーションで、特定のURLに対するGETリクエストを処理するために使います。GETリクエストは、ユーザーがブラウザでURLを入力したり、リンクをクリックしたときに発生します。@GetMappingを使うことで、簡潔にメソッドとURLのマッピングができ、コードが見やすくなります。
以前は@RequestMappingにmethod = RequestMethod.GETを指定していましたが、@GetMappingを使うことでコードが短くなり、より直感的に理解できます。
2. @GetMappingがなぜ使われるのか(役割と利便性)
@GetMappingは、コードの簡潔さと可読性を高めるために導入されました。特に、Webアプリケーションでよく使われるGETリクエストの処理を記述する際に便利です。以下に、@RequestMappingと@GetMappingの違いを比較したコードを示します。
① @RequestMappingを使用した例
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class SampleController {
@RequestMapping(value = "/home", method = RequestMethod.GET)
public String home() {
return "home";
}
}
② @GetMappingを使用した例
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class SampleController {
@GetMapping("/home")
public String home() {
return "home";
}
}
上記のように、@GetMappingを使うとコードがすっきりして読みやすくなります。特に複数のGETリクエストを処理する場合、可読性が向上し、メンテナンスがしやすくなります。
③ 実行結果のイメージ
ホームページへようこそ!
実際にブラウザでlocalhost:8080/homeにアクセスすると、「ホームページへようこそ!」と表示されます。このように、@GetMappingはWebページの表示に非常に役立ちます。
開発環境のポイント:
- 開発環境は
pleiadesを使用し、依存関係はSpring Webを追加してください。 - ビルドツールは
Gradleを使用し、build.gradleで依存関係を管理します。 - HTMLファイルは
src/main/resources/templatesフォルダに配置します。
3. @GetMappingの基本的な使い方(簡単なコード例付き)
@GetMappingは、特定のURLに対するGETリクエストを処理するために使います。ユーザーがブラウザでURLを入力したり、リンクをクリックしたときに発生するGETリクエストを簡単に処理できるのが特徴です。@GetMappingを使うと、コードが短くなり、読みやすさが向上します。
ここでは、ユーザーが「/hello」にアクセスしたときに、挨拶メッセージを表示する簡単な例を紹介します。
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class GreetingController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
上記のコードでは、@Controllerをクラスに付けてSpringにコントローラであることを伝えています。@GetMapping("/hello")は、ブラウザで「/hello」にアクセスしたときにhello()メソッドが呼ばれ、resources/templates/hello.htmlというHTMLファイルを返します。
次に、対応するHTMLファイルの内容を示します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>挨拶ページ</title>
</head>
<body>
<h1>こんにちは、Spring MVC!</h1>
<p>@GetMappingを使った基本的な例です。</p>
</body>
</html>
【実行結果のイメージ】
こんにちは、Spring MVC!
@GetMappingを使った基本的な例です。
このように、@GetMappingを使うことで簡単にURLとメソッドを結びつけられ、Webページを表示できます。
4. パス変数を使ったリクエスト処理
@GetMappingでは、URLの一部を変数として受け取ることができます。これを「パス変数」と呼び、ユーザーIDや商品IDなどをURLから取得したいときに便利です。
以下の例では、ユーザーIDをパス変数として取得しています。
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@Controller
public class UserController {
@GetMapping("/user/{id}")
public String getUser(@PathVariable("id") int id, Model model) {
model.addAttribute("userId", id);
return "user";
}
}
@PathVariable("id")でURLから{id}の値を取得し、userIdという名前でビューに渡しています。
次に、HTMLファイル(user.html)の内容を示します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ユーザー情報</title>
</head>
<body>
<h1>ユーザー情報</h1>
<p th:text="'ユーザーID: ' + ${userId}">ユーザーID: 未取得</p>
</body>
</html>
【実行結果のイメージ】
ユーザー情報
ユーザーID: 42
ブラウザでlocalhost:8080/user/42にアクセスすると、「ユーザーID: 42」と表示されます。このように、@GetMappingを使うことでURL内の値を簡単に取得できます。
5. クエリパラメータを使ったリクエスト処理
クエリパラメータは、URLの末尾に?key=valueの形式でデータを渡す方法です。ユーザーが検索フォームに入力したデータを取得したい場合に便利です。
以下は、クエリパラメータで名前を受け取り表示する例です。
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class QueryController {
@GetMapping("/greet")
public String greet(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "greet";
}
}
@RequestParam("name")でURLからnameパラメータの値を取得し、ビューに渡しています。
対応するHTMLファイル(greet.html)の内容です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>挨拶</title>
</head>
<body>
<h1>挨拶ページ</h1>
<p th:text="'こんにちは、' + ${name} + 'さん!'">こんにちは、ゲストさん!</p>
</body>
</html>
【実行結果のイメージ】
挨拶ページ
こんにちは、太郎さん!
ブラウザでlocalhost:8080/greet?name=太郎にアクセスすると、「こんにちは、太郎さん!」と表示されます。@RequestParamを使うことで簡単にクエリパラメータを取得でき、検索機能やフィルタ機能に活用できます。
6. @GetMappingを使った簡単なWebアプリケーション作成例
ここでは、@GetMappingを使って簡単なWebアプリケーションを作成してみましょう。今回作成するのは、ユーザーが名前を入力して送信すると、挨拶メッセージを表示するアプリケーションです。
① コントローラクラスの作成
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class GreetingController {
@GetMapping("/greeting")
public String greeting(@RequestParam(name = "name", defaultValue = "ゲスト") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
このコードでは、@GetMapping("/greeting")で「/greeting」URLへのGETリクエストを処理しています。@RequestParamでクエリパラメータからnameを取得し、Modelを使ってビューにデータを渡しています。
② ビュー(HTMLファイル)の作成
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>挨拶ページ</title>
</head>
<body>
<h1>挨拶ページ</h1>
<p th:text="'こんにちは、' + ${name} + 'さん!'">こんにちは、ゲストさん!</p>
</body>
</html>
【実行結果のイメージ】
挨拶ページ
こんにちは、花子さん!
ブラウザでlocalhost:8080/greeting?name=花子にアクセスすると、「こんにちは、花子さん!」と表示されます。クエリパラメータを使うことで、ユーザー入力に応じた動的なページを作成できます。
7. よくあるエラーとその解決方法
@GetMappingを使う際に初心者がつまずきやすいエラーと、その解決方法について解説します。
① 404エラー: ページが見つからない
原因: URLが間違っている、または対応するメソッドがない場合に発生します。
解決方法: コントローラ内のURLとブラウザでアクセスするURLが一致しているか確認してください。
@GetMapping("/hello")
public String hello() {
return "hello";
}
アクセス時はlocalhost:8080/helloにしてください。
② Whitelabel Error Page(ホワイトラベルエラー)
原因: ビュー(HTMLファイル)が存在しない場合に表示されます。
解決方法: resources/templatesフォルダ内に対応するHTMLファイルがあるか確認してください。
③ パス変数やクエリパラメータの取得エラー
原因: @PathVariableや@RequestParamの指定が間違っている場合に発生します。
@GetMapping("/user/{id}")
public String getUser(@PathVariable("id") int userId, Model model) {
model.addAttribute("userId", userId);
return "user";
}
URLにアクセスするときはlocalhost:8080/user/1のように入力してください。
8. @GetMappingを学ぶ際のポイントと今後の学習ステップ
@GetMappingの基本を学んだ後は、さらに以下の内容を学ぶことで、より実践的なWebアプリケーションを作成できるようになります。
① @PostMappingとの違いと使い分け
フォームからデータを送信する場合、@PostMappingが使われます。GETとPOSTの使い分けを学びましょう。
② フォーム入力処理
ユーザーが入力した情報をサーバーで処理する方法を学びます。これはユーザー登録や検索機能でよく使います。
③ エラーハンドリングの方法
実際の開発では、ユーザーの誤操作やシステムエラーへの対応が必要です。@ExceptionHandlerを使用して適切なエラーメッセージを表示する方法を学びましょう。
④ サービス層の分離
コントローラとビジネスロジックを分離することで、コードの再利用性と可読性が向上します。@Serviceアノテーションを使用してサービス層を作成することをお勧めします。
⑤ 実践課題
- 自分で簡単なTodoアプリを作ってみる。
- クエリパラメータを使用した検索機能を実装してみる。
- エラー処理を含めたユーザー登録機能を作成する。
上記を学習することで、@GetMappingだけでなく、Spring MVC全体の理解が深まり、より高度なWebアプリケーション開発が可能になります。