jsp상에서 DB로부터 가져온 데이터를 표시해야하고 싶은 페이지가 있다.
db상에서 가져온 데이터를 표시하려면 우선 컨트롤러 상에 원하는 페이지가 포워딩된 메서드를 작업해야한다.
이때 Model인터페이스가 쓰인다. Model이란 MVC(model-view-controller)에서의 model이다.
Model인터페이스의 addAttribute(attributeName, attributeValue) 메서드를 사용한다.
BoardController.java의 일부
@GetMapping("/main")
public String main(Model model) {
model.addAttribute("project", service.getList());
return "board/main";
}
원하는 페이지가 포워딩된 메서드에 Model 인터페이스 타입의 model파라미터를 받아온다. 이렇게 받아온 model 객체에 project란 이름으로 service(db와 연동된 인터페이스의 인스턴스)의 메서드 getList()(DB와 연동된 쿼리문)의 결과를 저장한다. 이제 view를 작성한다.
Project.jsp의 일부
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<c:forEach items="${project}" var="board" varStatus="vs">
<div class="col-lg-4 col-md-6 portfolio-item filter-app">
<style> img { width:360px} </style>
<c:out value="${board.content}" escapeXml="false"/>
<div class="portfolio-info">
<h4><c:out value="${board.title}"/>${board.bno}</h4>
<p><c:out value="${board.id}"/></p>
<button class="my-button" data-bno="${board.bno}">details</button>
<a href="assets/img/portfolio/portfolio-1.jpg" data-gallery="portfolioGallery" class="portfolio-lightbox preview-link" title="App 1"><i class="bx bx-plus"></i></a>
<a href="portfolio-details.html" class="details-link" title="More Details"><i class="bx bx-link"></i></a>
</div>
</div>
</c:forEach>
상단의 태그 라이브러리를 jsp파일에 추가하면(이때 정의한 prefix속성 값의 이름으로 태그를 작성한다.) Model 객체로 얻어온 project란 이름의 데이터들을 화면상에 표시할 수 있게 된다.
댓글