[Spring spring入門]5.会員管理Web MVC開発


n/a.ターゲット

  • 会員ページ機能-ホームページ
  • を追加
  • 会員Web機能-登録
  • 会員Web機能-照会
  • 1.会員ページ機能-ホームページの追加


    メインコントローラの追加

    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>
    コントローラの優先度は静的ファイルより高い.

    2.会員ページ機能-登録


    開発会員登録フォーム


    会員登録フォームコントローラ

    @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(リソース/テンプレート/メンバー/createMemberForm)

    <!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:/";
    }

    3.会員ページ機能-閲覧


    メンバーコントローラのクエリー機能

    public String list(Model model){
            List<Member> members = memberService.findMembers();
            model.addAttribute("members", members);
            return "members/membersList";
        }

    メンバーリスト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>
    htmlビュー->${member}はモデルの値を取得し、メンバーは上のコントローラコードで見つけることができます.
    コントローラビュー->コントローラでは、membersはすべてのメンバーをリストとしてインポートするmembersという鍵のmembers値です.
    html->th:eachを再表示するのは、繰り返し文のように、ループ内でメンバーからメンバー情報を1つずつ抽出します.idと名前をgetId()、getName()にインポートして出力します.