pom.xml은 Maven 프로젝트에서 프로젝트의 설정과 의존성을 관리하는 XML 파일
주요 역할
[사용자 브라우저]
↓ (1)
[DispatcherServlet] ← 핵심 컨트롤 타워!
↓ (2)
[Controller] → (3) → [Service] → (4) → [Repository] → (5) → [DB]
↑ ↓
←----------- (6) -------------←
↓ (7)
[ViewResolver → View] (HTML 생성)
↓ (8)
[브라우저 응답]
🧍♀️ 사용자가 웹사이트에서 버튼을 누르거나, 주소창에 /books/1 같은 URL을 입력해요.
📩 예:
GET http://내사이트.com/books/1
📌 DispatcherServlet은 Spring MVC의 중심 관리자예요.
어떤 Controller가 이 요청을 처리할지 찾아줘요.
📦 비유: 마치 프론트 데스크 직원이 손님을 적절한 부서로 연결해주는 느낌!
📌 요청에 맞는 Controller 메서드로 연결해요.
예:
@GetMapping("/books/{id}")
public String getBook(@PathVariable Long id, Model model) {
Book book = bookService.getBookById(id);
model.addAttribute("book", book);
return "book_detail";
}
📦 비유: "책 1번 정보를 보여달라고요? 알겠습니다!" 하고 Controller가 Service에게 말해요.
즉, 비즈니스로직을 처리하는 클래스로 간다!!
📌 Controller는 직접 DB를 다루지 않고, Service에게 일을 맡겨요.
예:
public Book getBookById(Long id) {
return bookRepository.findById(id).orElseThrow();
}
📦 비유: Controller는 주문만 받고, 실제 요리는 주방장(Service)이 해요.
📌 Repository는 진짜 DB랑 연결되어 있고, 데이터를 가져오거나 저장해요.
예:
Optional<Book> findById(Long id);
📦 비유: 주방장(Service)이 저장고(DB)에서 필요한 재료를 꺼내오는 단계.
📌 Controller는 HTML 템플릿 이름을 반환해요 ("book_detail").
Spring의 ViewResolver가 그 이름에 해당하는 파일을 찾아요.
JavaConfig 클래스 사용 예:
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Bean
public InternalResourceViewResolver viewResolver() {
// ViewResolver 설정
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
// 뷰의 접두사와 접미사를 지정
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
}
📌 View 템플릿에 데이터를 넣어 HTML로 만들고,
브라우저에게 보여줘요.
📄 예:
<h1>${book.title}</h1>
<p>저자: ${book.author}</p>
브라우저에 이런 결과가 나타나요:
MVC 쉽게 배우기
저자: 홍길동
/books/1요청 → 디스패처 → 컨트롤러 → 서비스 → 리포지토리 → DB → 다시 올라와서 → 뷰 → 응답
| 역할 | 비유 |
|---|---|
| DispatcherServlet | 프론트 데스크 |
| Controller | 주문 받는 점원 |
| Service | 주방장 |
| Repository | 재료 창고 관리자 |
| View | 완성된 요리 (화면) |
| 사용자 | 손님 (브라우저) |