예시)
- Controller
@Controller
@RequestMapping("/board")
public class BoardController {
private BoardService boardService;
private ApplicationContext applicationContext;
@Autowired
public BoardController(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
@GetMapping("/free-detail.do")
public String freeDetailView(BoardDto boardDto, Model model) {
// Spring 애플리케이션 컨텍스트에서 BoardService 인터페이스의 구현체인
// freeBoardServiceImpl을 가져와 boardService 변수에 할당하는 역할을 합니다.
// Spring 애플리케이션 컨텍스트란?
// Spring 프레임워크의 핵심 개념 중 하나입니다.
// 이것은 애플리케이션 내에서 Bean(객체)의 생성, 관리, 의존성 주입 등을
// 담당하는 중앙 컨테이너
boardService = applicationContext.getBean("freeBoardServiceImpl", BoardService.class);
// boardDto에서 id를 가져와 freeBoard라는 이름을 지정. 이것을 model에 넣는다.
model.addAttribute("freeBoard", boardService.getBoard(boardDto.getId()));
return "board/free-detail";
}
- view
<div class="form-group">
<label for="title">제목</label>
//freeBoard라는 Model명을 가진 컨테이너 활용
<input type="text" class="form-control" id="title" name="title" value="${freeBoard.title}" required>
</div>
model은 Spring MVC의 Model 인터페이스를 나타냅니다.
Model 인터페이스는 컨트롤러에서 뷰로 데이터를 전달하기 위해 사용됩니다.
Model 인터페이스의 주요 역할은 다음과 같습니다:
컨트롤러에서 생성한 데이터(객체, 값 등)를 뷰에 전달할 수 있게 해줍니다.
뷰에서 해당 데이터를 사용할 수 있도록 합니다.
구체적으로 이 코드에서는 다음과 같이 model이 사용되고 있습니다:
이 코드에서 boardService = applicationContext.getBean("freeBoardServiceImpl", BoardService.class); 부분은 Spring 애플리케이션 컨텍스트에서 BoardService 인터페이스의 구현체인 freeBoardServiceImpl을 가져와 boardService 변수에 할당하는 역할을 합니다.
boardService.getBoard(boardDto.getId()) 메서드를 호출하여 얻은 게시글 데이터를 "freeBoard" 라는 이름으로 model에 추가합니다.
이렇게 추가된 데이터는 뷰 템플릿(예: JSP)에서 ${freeBoard} 와 같이 사용할 수 있게 됩니다.
즉, 컨트롤러에서 생성된 데이터를 model에 담아 뷰로 전달함으로써, 뷰 템플릿에서 해당 데이터를 사용할 수 있게 해주는 것이 model의 주요 역할입니다.
'백엔드 > 스프링 프레임워크 단어정리' 카테고리의 다른 글
Spring Framework 기본 설정 시 궁금한 사항들(Maven, pom.xml, 빌드 자동화, web.xml 등) (0) | 2024.07.21 |
---|---|
form 데이터 submit 시 어떤 정보가 전달되는가? (0) | 2024.07.19 |
Spring Framework / @Autowired 어노테이션 / 스프링 컨테이너: ApplicationContext 역할 (0) | 2024.07.17 |
get vs post (0) | 2024.07.16 |
(오류) Mapped Statements... 해결 방안 (0) | 2024.07.16 |