TIL/JAVA

[Spring] 회원 관리 예제 - 웹 MVC 개발

아람2 2025. 1. 6. 16:57
반응형

회원 관리 예제 - 웹 MVC 개발 

듣고 있는 강의 - 김영한의 Spring 입문편

 

1. 회원 웹 기능 - 홈 화면 추가 

홈 컨트롤러 추가 

package hello.hello_spring.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;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data", "hello!!");
        return "hello";
    }

    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }

    @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name, Model model) {
        return "hello " + name;
    }

    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name) {
        Hello hello = new Hello();
        hello.setName(name);
        return hello;
    }

    static class Hello {
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}

회원 관리용 홈 

<!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>

 

❓ 아무 것도 없을 때 이동할 수 있는 index.html 이 있는데 왜 home.html 로 이동할까? 

❗️ 이동할 때 우선 순위가 있다 

2. 스프링 웹 개발 기초

이것처럼, 컨트롤러에서 "/" 가 있으면 호출되고 바로 끝난다 (기존에 만들었던 정적 리소스 무시) 

컨트롤러가 정적 파일보다 우선순위가 높기 때문이다

 

2. 회원 웹 기능 - 등록 

회원 등록 폼 컨트롤러 

package hello.hello_spring.controller;

import hello.hello_spring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MemberController {
    private final MemberService memberService;

    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }

    @GetMapping("/members/new") // 이동할 페이지 URL 을 넣어준다
    public String createForm() {
        // 반환된 문자열은 뷰 이름으로 사용되어 해당 HTML 파일을 렌더링한다
        return "members/createMemberForm";
    }
}

회원 등록 폼 HTML 은 resources/templates/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>

 

회원 등록 컨트롤러

웹 등록 화면에서 데이터를 전달 받을 폼 개선

 

01월01일 WED 에 인강 듣다가 중간에 끄게 되었는데

2주는 못 들을 거 같아서 포스팅 먼저 한다 

반응형