• DB의 등록된 컬럼들이다
  • PIN 컬럼은 메인상단공지를 작성할 때 구분을 짓기위해 선언
  • CATEGORY는 하나의 게시판 테이블로 여러개의 게시판을 생성하기위해 선언

Mapper.xml(Oracle)

<!-- 게시글 목록 -->
<select id="lists" resultMap="boardResult">
	<![CDATA[
		select * from board
	]]>
</select>
<!-- 게시글 목록(자유)-->
<select id="free" resultMap="boardResult">
	<![CDATA[
		select * from board
        where category = 1
	]]>

</select>
<!-- 게시글 목록(질문) -->
<select id="qna" resultMap="boardResult">
	<![CDATA[
		select * from board
        where category = 2
	]]>
</select>
<!-- 게시글 목록(공략) -->
<select id="tip" resultMap="boardResult">
	<![CDATA[
		select * from board
        where category = 3
	]]>
</select>
<!-- 게시글 목록(자랑) -->
<select id="brag" resultMap="boardResult">
	<![CDATA[
		select * from board
        where category = 4
	]]>
</select>

Controller

	//게시판 목록
	@GetMapping("/lists")
	public void list(Model model) {
		log.info("All-list");
		model.addAttribute("lists",service.lists());

	}
	//게시판 목록(자유)
	@GetMapping("/free")
	public void free(Model model) {
		log.info("free-list");
		model.addAttribute("free",service.free());

	}
	//게시판 목록(질문)
	@GetMapping("/qna")
	public void qna(Model model) {
		log.info("qna-list");
		model.addAttribute("qna",service.qna());

	}
	//게시판 목록(자랑)
	@GetMapping("/brag")
	public void brag(Model model) {
		log.info("brag-list");
		model.addAttribute("brag",service.brag());

	}
	//게시판 목록(공략)
	@GetMapping("/tip")
	public void tip(Model model) {
		log.info("tip-list");
		model.addAttribute("tip",service.tip());

	}
  • 게시판 목록 부분 구현이 5가지가 되는 이유는 우선 전체 리스트를 조회하는 것 하나와 , 그 외 카테고리 별로 조회 될 수 있게 나눴습니다.

Service

	//게시판 목록
	@Override
	public List<BoardVO> lists() {
		return dao.lists();
	}
	//게시판 목록(자유)
	@Override
	public List<BoardVO> free() {
		return dao.free();
	}
	//게시판 목록(질문)
	@Override
	public List<BoardVO> qna() {
		return dao.qna();
	}
	//게시판 목록(공략)
	@Override
	public List<BoardVO> tip() {
		return dao.tip();
	}
	//게시판 목록(자랑)
	@Override
	public List<BoardVO> brag() {
		return dao.brag();
	}

DAO

	//게시판 목록
	@Override
	public List<BoardVO> lists() {
		return session.selectList("mapper.board.lists");
	}
	//게시판 목록(자유)
	@Override
	public List<BoardVO> free() {
		return session.selectList("mapper.board.free");
	}
	//게시판 목록(질문)
	@Override
	public List<BoardVO> qna() {
		return session.selectList("mapper.board.qna");
	}
	//게시판 목록(공략)
	@Override
	public List<BoardVO> tip() {
		return session.selectList("mapper.board.tip");
	}
	//게시판 목록(자랑)
	@Override
	public List<BoardVO> brag() {
		return session.selectList("mapper.board.brag");
	}

JSP

<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.1/dist/jquery.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
  • 부트스트랩 링크 및 스크립트 입니다.
  <ul class="nav">
  	<li class="nav-item">
      <a class="nav-link" href="${path}/board/lists">전체</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="${path}/board/free">자유</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="${path}/board/qna">질문</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="${path}/board/tip">공략</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="${path}/board/brag">자랑</a>
    </li>
  </ul>
  • 우선 공통되는 nav 부분입니다. 이렇게 하나를 만들고 <%@include file="../common/nav.jsp"%> 를 사용해서              각 리스트 화면 상단에 배치를 하였습니다.
<%@include file="../common/nav.jsp"%>

<div class="container" >
<table class="table">
<thead>
	<tr>
		<td>말머리</td>
		<td>제목</td>
		<td>닉네임</td>
		<td>작성일</td>
		<td>조회</td>
	</tr>
</thead>
<tbody>
	<c:forEach var="list" items="${free}">
		<tr>
				<td>
					<c:choose>
						<c:when test="${list.category == 1}">자유</c:when>
						<c:when test="${list.category == 2}">질문</c:when>
						<c:when test="${list.category == 3}">공략</c:when>
						<c:when test="${list.category == 4}">자랑</c:when>
					</c:choose>
				</td>
			<td><a href="${path}/board/detail?bno=${list.bno}">${list.title}</a></td>
			<td>${list.nickname}</td>
			<td>${list.credate}</td>
			<td>${list.hit }</td>
		</tr>
		</c:forEach>
	</tbody>
</table>
</div>
  • 이런식으로 해서 5개의 jsp를 만들어서 사용했습니다

결과화면

복사했습니다!