게시판 리스트 만들기
게시판을 만들기 전에 가장 먼저 해야할 일은 mysql에 접속해서 게시판용 테이블을 만드는 것이다.
1. 테이블 만들기
자신이 쓰는 데이터베이스는 다 다르겠지만 필드나 네임을 만드는 방법은 동일할 것이다.
내가 처음에 게시판을 만들 때 곤혹스러웠던 부분이 type을 설정하는 것이었는데
이렇게 테이블 명세를 자세히 알면 게시판을 만드는데 도움이 되지 않을까 싶다.
난 테이블 이름을 hello_board로 했는데 이 부분은 자신이 원하는대로 정하면 될 것 같다.
2. 게시판 리스트 만들기
프로젝트 구조
com.helloproject
ㄴcontroller - BoardController
ㄴmapper - BoardMapper
ㄴservice - BoardService
mapper - BoardMapper
view는 src>main>webapp>WEB-INF>views 안에 만들면 된다.
1. 폴더 생성에 대한 내용은 https://yulfsong.tistory.com/45?category=797541
2. 아래 게시판 작업에 생략한 어노테이션에 전체 부분은 https://yulfsong.tistory.com/46
Controller
1 2 3 4 5 6 7 | @RequestMapping(value="/boardList") public String boardList(Model model) throws Exception { List<BoardVO> list = boardService.boardList(); model.addAttribute("list", list); return "boardList"; } | cs |
*
Model은 하나의 객체로 컨트롤러에서 페이지로 넘길 값을 저장하는데 사용된다.
model.addAttribute("list", list);
이 구간은 model 객체를 파라미터로 받아서 view인 boardList에 리턴해주는 역할인데
model.addAttribute("변수 이름", 변수에 넣을 데이터); 라고 생각하면
view 단계에서 ${변수 이름}, 즉 ${list} 이렇게 받아주면 된다.
BoardService
BoardMapper
1 | public List<BoardVO> boardList() throws Exception; | cs |
1 2 3 4 | <select id="boardList" resultType="BoardVO"> SELECT * FROM hello_board </select> | cs |
1 2 3 4 5 6 7 8 9 10 11 12 | import java.util.Date;
import lombok.Getter;
import lombok.Setter; @Setter @Getter public class BoardVO { private String writer; private int num; private String title; private String content; private Date regdate; } | cs |
*
@만 붙이면 setter, getter를 편리하게 쓸 수 있는 lombok 사용법은 인터넷에 많이 나와있으며
설치 방법도 pom.xml에 디펜던시 하나만 추가하면 될 정도로 아주 간단하다.
boardList (대문자 B 아님)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <table border="1"> <tr> <th>글번호</th> <th>작성자</th> <th>제목</th> <th>작성시간</th> </tr> <c:forEach items="${list}" var="data"> <tr> <td>${data.num}</td> <td>${data.writer}</td> <td><a href="/boardRead?num=${data.num}">${data.title}</a></td> <td><fmt:formatDate pattern="yyyy-MM-dd HH:mm" value="${data.regdate}"/></td> </tr> </c:forEach> </table> | \cs |
그러고보니 아까 Controller에서 사용한 model인 ${list}는 리스트 형식인데
view에서 어떻게 뿌려주나요..?
바로 이렇게 하면 됩니다.
중요하지 않은 부분은 회색처리
<c:forEach>
배열 요소를 반복적으로 처리하겠다는 의미(java for문처럼)
items="${list}" var="data"
그 배열이 바로 우리가 model로 받아온 ${list}인데,
이름은 data라고 정하겠다고 명시
<td>${data.num}</td>
<td>${data.writer}</td>
그러므로 data.num은 list.num과 다름없다.
title, regdate이 뭔가가 주렁주렁 달려서 어려워보이지만
가져오는 방법은 마찬가지이며 각각 링크, 시간 출력 때문에 모양에 맞게 썼을 뿐이다.
이렇게 해서 띄웠을 때 리스트 내용이 Mysql의 테이블 내용과 일치하고
리스트 형태로 나온다면 테이블의 내용을 아주 잘 가져온 것이다.
<완성된 게시판 리스트>
전체적인 완성작은 해당 소스를 참고
github.com/yulfsong/spring-boot-hello-project
'프로그래밍 > SpringBoot' 카테고리의 다른 글
[스프링 부트 게시판] 게시판 글쓰기 만들기 (0) | 2020.09.30 |
---|---|
[스프링 부트 게시판] 게시판 리스트 페이징 처리 (0) | 2020.09.30 |
[스프링 부트 게시판] 로그 설정하기 (0) | 2020.09.25 |
[스프링 부트 게시판] Mysql, Mybatis 적용하기 (0) | 2019.12.01 |
[스프링 부트 게시판] Spring Boot Project 생성하기 / View 띄우기 (0) | 2019.12.01 |