프로그래밍/Spring

[게시판] 5. 게시판 목록 기능 구현

daykim 2021. 12. 11. 18:43

본 게시물은 아래 링크를 정리한 내용입니다.

 

Coala Spring Study

A new tool for teams & individuals that blends everyday work apps into one.

eminent-track-b16.notion.site

1. boardMapper.xml 파일에 아래 코드 추가

   	<select id="list" resultType="kr.co.vo.BoardVO">
		SELECT   BNO
			   , TITLE
			   , WRITER
			   , REGDATE
		FROM MP_BOARD
		ORDER BY BNO DESC
	</select>

resultType : 쿼리 실행한 결과값을 담는 곳의 위치

 

2. BoardDAO 파일에 들어가 boardMapper와 연결되는 코드 작성

// 게시물 목록 조회
public List<BoardVO> list() throws Exception;

 

3. 구현부인 BoardDAOImpl에서 인터페이스 BoardDAO에 정의된 멤버들을 클래스에서 대신 구현한다.

	// 게시물 목록 조회
	@Override
	public List<BoardVO> list() throws Exception {
		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()함수 호출해 반환
	}

 

6. BoardController로 들어와 URL은 '/list'로 정의

	// 게시판 목록 조회
	@RequestMapping(value = "/list", method = RequestMethod.GET)
	public String list(Model model) throws Exception{
		logger.info("list");
		
		model.addAttribute("list",service.list());
		//service.list()에 담긴 데이터를 list 라는 이름으로 담을 것
		return "board/list";
	}

+ 게시판 글 작성 코드의 return값을 "redirect:/board/list"; 로 변경

오라클 -> DAO -> Service -> Controller로 가져온 데이터들을 jsp에 뿌려주는 작업을 할 것이다.

 

7. src/main/webapp/WEB-INF/views/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" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<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>
	</div>
</body>
</html>

 

8. 확인하기

1) 서버 실행

2) localhost:8080/board/list 접속

 

참고 자료

https://eminent-track-b16.notion.site/c9c5a42ef7a84c24bc787aeb03d789e1?v=7e9c66b790514bd697bfc8d3d134097f