Controller
- 解説
- 1. Controllerとは
解説
1. Controllerとは
ログイン機能をカスタマイズする中で、「AuthController.java」という以下のようなファイルを作成しました。
package net.digskill.tweet_spring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class AuthController {
@GetMapping("/login")
public String login() {
return "auth/login";
}
}
『Java WEB中級』コースではサーブレットクラスがMVCにおけるControllerの機能を果たしていましたが、Spring Bootでは各種アノテーションを使用してControllerクラスを定義します。
@Controller
@Controllerアノテーションは、Controllerクラスとして機能させたいクラスに付与します。
@RequestMapping・@GetMapping・@PostMapping
@RequestMappingというアノテーションを、クラスやメソッドに付与することで、引数に指定したURLパターンとマッピングさせることができます。またmethod属性を指定することで、GET通信かPOST通信か指定することができます。
メソッドに付与する場合は上記の通信方式を指定する方法を省略した@GetMapping、@PostMappingが利用できます。
構文:@RequestMapping
例1)
@Controller
public class SampleController {
@RequestMapping(value="/sample", method=RequestMethod.GET)
public String sample() {
return "sample";
}
}
「localhost:8080/sample」へのGET通信とマッピングされる。
※「@GetMapping("/sample")」と置き換え可能
例2)
@Controller
@RequestMapping("/sample")
public class SampleController {
@PostMapping("/test")
public String test() {
// DBへの登録処理等
}
}
「localhost:8080/sample/test」へのPOST通信とマッピングされる。
※@RequestMappingは、URLパターンしか指定しない場合は属性名の省略が可能。
前のページで作成した「AuthController.java」のloginメソッドは「localhost:8080/tweet_spring/login」へのGET通信とマッピングしています。
戻り値
Controllerクラスのメソッドの戻り値に、「templates」フォルダーからの相対パスを指定することで、該当のViewファイルを表示することができます。また、ほかにも戻り値に「forward:URLパターン」「redirect:URLパターン」と指定することでURLパターンとマッピングされたControllerに、処理を移す(フォワード)、ブラウザからリクエストし直す(リダイレクト)ことも可能です。
戻り値の種類
例)テンプレートファイルの表示
@GetMapping("/sample")
public String sample() {
return "sample";
}
アクセスすると「templates」フォルダ直下の「sample.html」を表示する。
例)フォワード
@GetMapping("/sample")
public String sample() {
return "forward:/test";
}
「/test」とマッピングしているControllerに処理を移す。
※フォワード処理のため、レスポンス時のURLは「localhost:8080/sample」のまま。
例)リダイレクト
@GetMapping("/sample")
public String sample() {
return "redirect:/test";
}
「/test」とマッピングしているControllerに処理を移す。
※リダイレクト処理のため、レスポンス時のURLは「localhost:8080/test」に変わる。
前のページで作成した「AuthController.java」のloginメソッドは「"auth/login"」を返却しているので、「templates」フォルダ直下の「auth/login.html」ファイルが表示されます。