1. boardMapper.xml에 소스 추가
<select id="list" resultType="com.dandycompany.vo.BoardVO">
SELECT BNO
, TITLE
, WRITER
, REGDATE
FROM DANDY_BOARD
ORDER BY BNO DESC
</select>
2. BoardDAO에서 boardMapper과 연결되는 코드를 작성
// 게시물 목록 조회
public List<BoardVO> list() throws Exception;
3. BoardDAOImpl에서 BoardDAO 인터페이스에서 정의 받은 것을 구현 해야함.
소스
// 게시물 목록 조회
@Override
public List<BoardVO> list() throws Exception {
return sqlSession.selectList("boardMapper.list");
}
ctrl + shift + o는 잊지말기를 import java.util.List 를 위해서
이 소스의 뜻은
return sqlSession.selectList("boardMapper.list");
이것은 boardMapper.xml에서 mapper의 namespace가 boardMapper이고 그중에 id가 list인것을 가져와서 반환해라는 뜻
4. BoardDAO와 연결되는 BoardService를 작성
// 게시물 목록 조회
public List<BoardVO> list() throws Exception;
5. 구현부인 BoardServiceImpl을 작성
// 게시물 목록 조회
@Override
public List<BoardVO> list() throws Exception {
return dao.list();
}
여기서 dao.list();는 dao에있는 list()함수를 호출해서 반환하겠다는 뜻입니다.
6. BoardController
소스 :
// 게시판 목록 조회
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(Model model) throws Exception{
logger.info("list");
model.addAttribute("list",service.list());
return "board/list";
}
URL은 /list로 정하고
오라클 > DAO> Service > controller로 가져온 데이터들을 jsp에 뿌려주는 작업을 진행 해야함.
model은 데이터를 담을 그릇이고 addAttribute("list", service.list())는
service.list()에 담긴 데이터를 "list"라는 이름으로 담을것이다 라는 뜻으로 해석
7. view - board - list.jsp
소스
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
<head>
<title>게시판</title>
</head>
<body>
<div id="root">
<header>
<h1> 게시판</h1>
</header>
<hr />
<nav>
홈 - 글 작성
</nav>
<hr />
<section id="container">
<form role="form" method="post" action="/board/write">
<table>
<tr><th>번호</th><th>제목</th><th>작성자</th><th>등록일</th></tr>
<c:forEach items="${list}" var = "list">
<tr>
<td><c:out value="${list.bno}" /></td>
<td><c:out value="${list.title}" /></td>
<td><c:out value="${list.writer}" /></td>
<td><fmt:formatDate value="${list.regdate}" pattern="yyyy-MM-dd"/></td>
</tr>
</c:forEach>
</table>
</form>
</section>
<hr />
</div>
</body>
</html>
<c:forEach items="${list}" var = "list">에서 보시면 forEach는 받은 ${list}값 만큼 반복해주는건데
자바에서 for문이랑 비슷하다고 생각하시면 됩니다. 여기서 보시면 ${list}가 있는데, 이것이
BoardController에서 이름을 list로 정한 service.list()를 가져온것입니다.
그리고 var는 ${list}를 list라는 이름으로 선언해준것이고요.
이것은 이제 데이터를 불러왔으닌까 뿌려줘야겠지요.
list에 있는 bno를 가져와라 라고 생각하시면됩니다.
forEach와 c:out를 쓰려면 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 필요함
그리고 fmt날짜 포맷을 써주려면 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 사용
8. BoardController 수정
목록이 만들어졌으니 list 작성시에 바로 board/list로 가도록 수정
9. 톰켓 재실행
10. 목록 확인 완료
'개발 > Spring Framework' 카테고리의 다른 글
httpSession에 대해서 개념 및 활용법 (0) | 2022.11.25 |
---|---|
@Value (0) | 2022.11.25 |
[Spring] Controller 에서 HTML텍스트를 HTML페이지로 리턴하기. (0) | 2022.11.25 |
[Spring 3.1.1] datasource 2개 사용하기 (2) | 2022.07.18 |
Spring - board 작성 구현(1) (0) | 2022.06.18 |