掲示板のControllerを作成します。
今回はこれまで作ってきたTopContorollerではなくて、掲示板用のコントローラを作成します。掲示板では、コメントの表示とコメントの投稿の2つの機能が必要ですが、これを1つのページ(URL)で実現してみます。具体的にはたんなる表示の時はGETメソッドを用い、投稿時にはPOSTメソッドを使うようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package net.teachingprogramming.myfirstspringapp.controller; import net.teachingprogramming.myfirstspringapp.entity.Comment; import net.teachingprogramming.myfirstspringapp.repository.CommentRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; /** * BbsController */ @Controller @RequestMapping("/bbs") public class BbsController { @Autowired private CommentRepository commentRepository; @RequestMapping(value = "/", method = RequestMethod.GET) public String indexGet(ModelMap modelMap) { List<Comment> commentList = commentRepository.findAll(); modelMap.addAttribute("commentList", commentList); return "bbs/index"; } @RequestMapping(value = "/", method = RequestMethod.POST) public String indexPost(ModelMap modelMap, @RequestParam("name") String name, @RequestParam("text") String text) { Comment comment = new Comment(); comment.setName(name); comment.setText(text); commentRepository.save(comment); return indexGet(modelMap); } } |
- 18行目: ベースとなるURLを「/bbs」にする。
- 20、21行目: @AutowiredアノテーションでCommentRepositoryをDI(dependency injection、依存性の注入)することを表す。これにより、システムがCommentRepositoryをインスタンス化してくれる。
- 23〜28行目: GETメソッドによるアクセスを処理するメソッド。25行目でデータベースから全てのデータを取得する。26行目で取得したデータをビューに渡す設定をする。
- 30〜37行目: POSTメソッドによるアクセスを処理するメソッド。32〜34行目で、Commentクラスのインスタンスを生成し受け取ったパラメータをそれぞれセットする。35行目でCommentRepositoryを使ってセーブする。これ以降の操作はGETメソッドの場合と同様なので、indexGetを呼んでそれを返り値とする。