MelonPeach

6.스프링 게시판 만들기 / 게시판 목록 기능 구현

 

안녕하세요?

이전 포스팅에서는 게시판 작성 기능 구현에 대해 포스팅하였는데요.

오늘은 게시판 목록 기능에 대해 구현하도록 하겠습니다.

글을 작성했다면 작성한 목록이 보여야겠지요

 


 

 

 

BNO, TITLE, WRITER, REGDATE를 조회할것인데 조회되는 순서는

ORDER BY BNO DESC 번호를 기준으로 내림차순으로 조회 하겠다는 뜻입니다.

그리고 resultType를 보시면 패키지명에 BoardVO라고 되어있지요

이것은 쿼리를 실행하고난 결과값을 BoardVO에 담아주겠다! 이런뜻으로 해석하시면 됩니다.

그럴려면 BoardVO의 위치를 알아야하기때문에 패키지명에 BoardVO로 써준것입니다.

boardMapper.xml에 들어가셔서 코드를 추가해줍니다.

 

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

 

 

 

 

BoardDAO로 들어가셔서 boardMapper과 연결되는 코드를 작성해줍니다.

 

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

 

 

 

 

 

 

 

구현부인 BoardDAOImpl로 들어가셔서 인터페이스 BoardDAO에 정의된 멤버들을 클래스에서 대신 구현 해야합니다.

return sqlSession.selectList("boardMapper.list");

이것은 boardMapper.xml에서 mapper의 namespace가 boardMapper이고 그중에 id가 list인것을 가져와서 반환해라

라고 생각하시면 됩니다.

 

	// 게시물 목록 조회
	@Override
	public List<BoardVO> list() throws Exception {
	
		return sqlSession.selectList("boardMapper.list");

	}

 

 

 

 

 

BoardDAO와 연결되는 BoardService를 작성해줍니다.

 

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

 

 

 

 

 

구현부인 BoardServiceImpl을 작성해줍니다.

여기서 dao.list();는 dao에있는 list()함수를 호출해서 반환하겠다는 뜻입니다.

 

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

		return dao.list();
	}

 

 

 

 

 

이제 BoardController로 들어와서 URL은 /list로 정하고 

오라클 > 다오 > 서비스 > 컨트롤러로 가져온 데이터들을 jsp에 뿌려주는 작업을 해야 합니다.

model은 데이터를 담을 그릇이고 addAttribute("list", service.list())는 

service.list()에 담긴 데이터를 "list"라는 이름으로 담을것이다 라는 뜻으로 해석하시면됩니다. 

 

 

 

	// 게시판 목록 조회
	@RequestMapping(value = "/list", method = RequestMethod.GET)
	public String list(Model model) throws Exception{
		logger.info("list");
		
		model.addAttribute("list",service.list());
		
		
		return "board/list";
		
	}

 

 

 

 

board폴더에 list.jsp파일을 만들어주고 코드를 입력해줍니다.

<c:forEach items="${list}" var = "list">에서 보시면 forEach는 받은 ${list}값 만큼 반복해주는건데

자바에서 for문이랑 비슷하다고 생각하시면 됩니다. 여기서 보시면 ${list}가 있지요 이것이

BoardController에서 이름을 list로 정한 service.list()를 가져온것입니다.

그리고 var는 ${list}를 list라는 이름으로 선언해준것이고요. 

<c:out value="${list.bno}" /> 이것은 이제 데이터를 불러왔으닌까 뿌려줘야겠지요.

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"%>써주시면 됩니다.

 

 

<%@ 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>

 

 

 

 

이제 서버를 실행시키고 URL에 컨트롤러에서 정한 /list를 통해 접속합니다.

 

다음포스팅에선 게시판 조회 기능을 구현하는 포스팅을 작성하겠습니다.

이 글을 공유합시다

facebook twitter googleplus kakaostory naver