spring/게시판 만들기

[spring/mybatis] 게시판 리스트 출력

carrotdy 2022. 2. 15. 20:42

게시판 정보 테이블(Board)을 DB에서 불러와 간단하게 게시판 리스트를 출력하였다. 

페이징기능과 검색기능은 나중에 추가하는걸로~~

Board.java

 

lombok을 이용하여 간단하게 setter, getter을 사용할 수 있다.

lombok을 이용하기 위해서는 pom.xml에서 dependency 하나만 추가하면 된다!

 

		<!-- lombok : getter/setter 자동추가 -->
		<dependency>
		    <groupId>org.projectlombok</groupId>
		    <artifactId>lombok</artifactId>
		    <version>1.18.0</version>
		    <scope>provided</scope>
		</dependency>

 

 

@Data
public class Board {
	private int boardNo;                    // 게시판번호
	private String boardTitle;		// 제목
	private String boardContent;	        // 내용
	private String boardWriter;		// 작성자
	private int readCount;			// 조회수
	private String regDate;			// 작성날짜(YYYY-MM-DD hh24:mi)
	private int priority;			// 고정공지사항
	private String fileName;		// 파일이름
	private String filePath;		// 첨부파일경로
	private int ncCount;			// 댓글수
}

 

 

 boardList.jsp

 

<c:forEach items="${list }" var="b" varStatus="i">

배열 요소를 반복적으로 처리하겠다는 의미로 controller -> service -> dao -> mapper -> db  ... 를 통해

Board 테이블의 list를 가져와 list를 b로 정의하였다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:import url="/WEB-INF/views/common/header.jsp"/>
	<div class="container">
		<fieldset>
			<legend>자유게시판</legend>
			<c:if test="${not empty sessionScope.m && (sessionScope.m.memberLevel eq 0 || sessionScope.m.memberLevel eq 1)}">
				<a class="btn btn-secondary" href="/boardWriteFrm.do" style="float:right; margin-bottom:5px;">글쓰기</a>
			</c:if>
			<table class="table table-hover">
			    <tr class="table-active">
			      <th scope="row">번호</th>
			      <th>제목</th>
			      <th>작성자</th>
			      <th>작성일</th>
			      <th>조회수</th>
			    </tr>
			    <c:forEach items="${list }" var="b" varStatus="i">
			    	<tr class="table-default">
			    		<td>${start + i.index+1 }</td>
			    		<td><a href='/boardView.do?boardNo=${b.boardNo}' style="text-decoration:none;">${b.boardTitle}</a></td>
			    		<td>${b.boardWriter}</td>
			    		<td>${b.regDate}</td>
			    		<td>${b.readCount}</td>
			    	</tr>
			    </c:forEach>
			</table>
		</fieldset>
	</div>
	<c:import url="/WEB-INF/views/common/footer.jsp"/>
</body>
</html>

 

 

 

BoardController.java

 

return "board/boardList"; 

board 앞에는 자동으로 /WEB-INF/views/가 붙고, boardList 뒤에는 자동으로 .jsp가 붙는다.

두개 모두 합치면 /WEB-INF/views/board/boardList.jsp

boardList.jsp 페이지로 이동이 된다.

-> 자동으로 생성되게끔 설정하는건 servlet-context.xml에서 ~

 

   //servlet-context.xml
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
    </beans:bean>

 

	//게시판 
	@RequestMapping(value="/board.do")
	public String board(Model model) {
		ArrayList<Board> list = service.boardList();
		model.addAttribute("list",list);
		return "board/boardList";
	}

 

 

BoardService.java

 

	public ArrayList<Board> boardList() {
		ArrayList<Board> list = dao.boardList();
		return list;
	}

 

 

BoardDao.java

 

	public ArrayList<Board> boardList() {
		List<Board> list = session.selectList("board.boardList");
		return (ArrayList<Board>)list;
	}

 

 

boardSQL.xml

 

id값은 boardDao.java의 session.selectList("board.boardList"); 와 일치해야 한다!!!

그리고 parameterType의 b는 board를 의미하며,  mybatis-config.xml 에 자주 사용하는 타입의 별칭을 지어주었다.

 

	//mybatis-config.xml
    <typeAliases>
		<typeAlias type="kr.or.member.model.vo.Member" alias="m"/>
		<typeAlias type="kr.or.board.model.vo.Board" alias="b"/>
    </typeAliases>

 

 

	<select id="boardList" parameterType="b" resultType="b">
		select 
			board_no as boardNo,
			board_title as boardTitle,
			board_content as boardContent,
			board_writer as boardWriter,
			readCount,
			regDate,
			priority,
			fileName,
			filePath,
			ncCount
		from board
	</select>

 

반응형