[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 05. 회원 관리 예제 - 웹 MVC 개발

Turtle·2024년 6월 8일
0
post-thumbnail

✔️회원 웹 기능 - 홈 컨트롤러

package hello.hello_spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/")
    public String home() {
        return "home";
    }
}

@GetMapping("/")을 URL로 나타내면 http://localhost:8080/와 같다.

❗정적 컨텐츠 vs 컨트롤러의 매핑

❗스프링 부트에서는 정적 및 템플릿 welcome page를 지원한다. 처음에는 정적 컨텐츠 쪽에서 index.html이란 이름의 파일을 찾는다. 만약 없다면 index 템플릿을 찾는다. 둘 중 하나를 찾으면 어플리케이션의 welcome page로 자동으로 사용된다.

❓그렇다면 만약 /static 디렉터리에 index.html 정적 파일이 존재하는 상황에서 위와 같이 컨트롤러의 @GetMapping어노테이션을 "/"로 해주면 어떤 결과가 나타날까?

✔️컨트롤러가 정적 컨텐츠보다 우선순위가 높다.

✔️회원 웹 기능 - 등록 및 조회

package hello.hello_spring.controller;

import hello.hello_spring.domain.Member;
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;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class MemberController {
    private final MemberService memberService;

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

    @GetMapping("/members/new")
    public String createForm() {
        return "members/createMemberForm";
    }

    @PostMapping("members/new")
    public String create(MemberForm memberForm) {
        Member member = new Member();
        member.setName(memberForm.getName());
        
  		// 서비스 로직 실행
  		memberService.join(member);
  		// "/"으로 리다이렉트
        return "redirect:/";
    }
  
    @GetMapping("/members")
    public String list(Model model) {
        List<Member> members = memberService.findMembers();
        model.addAttribute("members", members);
        return "members/memberList";
    }
}

🔒출처

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

0개의 댓글