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/
와 같다.
❗스프링 부트에서는 정적 및 템플릿 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";
}
}