📄 글을 작성을 했으니 이제는 불러와보자!
JSP의 taglib을 사용하기 위하여 맨 위에 아래 코드를 추가합니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
table 태그 안에 정적 데이터들을 삭제하고 이와 같이 작성합니다.
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<th>글 번호</th>
<th>제목</th>
<th>작성자</th>
<th>생성 날짜</th>
</tr>
</thead>
<tfoot>
<tr>
<th>글 번호</th>
<th>제목</th>
<th>작성자</th>
<th>생성 날짜</th>
</tr>
</tfoot>
<tbody>
<c:forEach items="${postList}" var="post">
<tr>
<td>${post.id}</td>
<td>${post.title}</td>
<td>${post.name}</td>
<td>
<fmt:formatDate value="${post.created_date}" pattern="yyyy-MM-dd"/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
${모델이름}은 모델을 출력합니다. 여기서 표현하는 모델이 무엇인지는 밑에서 나옵니다.
<c:forEach> 태그는 반복문입니다. 위의 코드는 postList모델을 post변수에 넣으며 반복하는 태그입니다.
<fmt:formatDate> 태그는 Date의 형식을 지정하며 문자열로 변환하는 태그입니다. 위의 코드에서는 2021-03-14 이와 같은 형식으로 나옵니다.
public interface PostMapper {
public void save(PostVO postVO);
public List<PostVO> findAll();
}
<mapper namespace="ac.kr.smu.mapper.PostMapper">
<insert id="save">
INSERT INTO post(title,content,created_date,name)
VALUES(#{title},#{content},#{created_date},#{name})
</insert>
<select id="findAll" resultType="PostVO">
SELECT * FROM post
</select>
</mapper>
public interface PostService {
public void save(PostVO postVO);
public List<PostVO> findAll();
}
@Service
public class PostServiceImpl implements PostService {
@Autowired
private PostMapper postMapper;
public void save(PostVO postVO){
postMapper.save(postVO);
}
@Override
public List<PostVO> findAll() {
return postMapper.findAll();
}
}
@Controller
@RequestMapping(value = "/board")
public class BoardController {
@Autowired
private PostService postService;
@GetMapping
public void getBoard(Model model){
model.addAttribute("postList",postService.findAll());
}
}
위의 코드에서 나온 Model 클래스가 MVC패턴의 Model역할을 한다고 생각하면 된다. board.jsp에서 ${postList}를 반복하는 이유가 위의 코드에서 DB에서 받아온 List를 postList라는 이름의 Model의 속성으로 지정되기 때문이다.