[4]メンバー管理例-Web MVCの開発


  • [会員ページ機能-ホームページ追加]
  • [会員ページ機能-登録]
  • [会員ページ機能-閲覧]
  • 会員ページ機能-ホームページの追加


    メインコントローラの追加
    package hello.hellospring.controller;
    import org.springframework.stereotype.Controller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    
    @Controller
    public class HomeController {
      @GetMapping("/")
      public String home() {
        return "home";
      }
    }
    会員管理ホームページ
    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <body>
      <div class="container">
        <div>
          <h1>Hello Spring</h1>
          <p>회원 기능</p>
          <p>
            <a href="/members/new">회원 가입</a>
            <a href="/members">회원 목록</a>
          </p>
        </div>
      </div> <!-- /container -->
    </body>
    </html>

    会員Web機能-登録


    会員登録フォームコントローラ
    @Controller
    public class MemberController {
      private final MemberService memberService;
        @Autowired
        public MemberController(MemberService memberService) {
          this.memberService = memberService;
        }
      
        @GetMapping(value = "/members/new")
        public String createForm() {
          return "members/createMemberForm";
       }
    }
    会員登録フォームHTML
    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <body>
      <div class="container">
        <form action="/members/new" method="post">
          <div class="form-group">
            <label for="name">이름</label>
            <input type="text" id="name" name="name" placeholder="이름을
                                                                  입력하세요">
              </div>
            <button type="submit">등록</button>
            </form>
          </div> <!-- /container -->
    </body>
    </html>
    Web登録画面からデータを受信するフォームオブジェクト
    package hello.hellospring.controller;
    
    public class MemberForm {
      private String name;
    
      public String getName() {
        return name;
      }
    
      public void setName(String name) {
        this.name = name;
      }
    }
    メンバーコントローラに実際にメンバーを登録する機能
    @PostMapping(value = "/members/new")
    public String create(MemberForm form) {
    
      Member member = new Member();
    
      member.setName(form.getName());
      memberService.join(member);
    
      return "redirect:/";
    }

    会員ページ機能-閲覧


    メンバーコントローラのクエリー機能
    @GetMapping(value = "/members")
    public String list(Model model) {
      List<Member> members = memberService.findMembers();
      model.addAttribute("members", members);
      return "members/memberList";
    }
    メンバーリストHTML
    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <body>
      <div class="container">
        <div>
          <table>
            <thead>
              <tr>
                <th>#</th>
                <th>이름</th>
              </tr>
            </thead>
            <tbody>
              <tr th:each="member : ${members}">
                <td th:text="${member.id}"></td>
                <td th:text="${member.name}"></td>
              </tr>
            </tbody>
          </table>
        </div>
      </div> <!-- /container -->
    </body>
    </html>