본문 바로가기
프로그래밍/SpringBoot

[스프링 부트 게시판] 게시글 읽기 만들기

by 소소로드 2020. 9. 30.

게시글 읽기 만들기

읽는다는 뜻은 글 제목을 클릭했을 때 내용을 보여준다는 뜻이 된다.
생각해보니 우리는 BoardVO에서 writer, num, title, content, regdate를 만들었지만
이 중에서 게시판에 보여준 것은 content를 제외한 데이터들이었다.
content는 글제목을 클릭했을 때 보여줄 용도로 사용하는 데이터이다.
읽기를 만들기 위해서 필요한 건, 맨 처음 게시판 만들기에서 우리가 만들었던 boardList.jsp 내용을 볼 필요가 있다.


boardList.jsp
<td><a href="/boardRead?num=${data.num}">${data.title}</a></td>

이 부분은 글제목에 링크를 붙일건데, 그 주소는 /boardRead?num= + 글번호로 만들어줄거다.
라고 명시를 하는 것이다. 즉 /boardRead는 controller로 연결되는 주소를 말하고
num은 파라미터로 사용할 것임을 뜻한다.



BoardController

1
2
3
4
5
6
7
// 게시판 내용 읽기
    @RequestMapping(value="/boardRead")
    public String boardRead(@RequestParam("num"int num, Model model) throws Exception {
        BoardVO data = boardService.boardRead(num);
        model.addAttribute("data", data);        
        return "boardRead";    
    }
cs

${data.num}에 상응하듯이 @RequestParam("num") int num가 써진 것을 볼 수 있다.
이렇게 하나의 값을 파라미터로 전달할 때 @RequestParam을 사용한다.
int num이라는 이름으로 받아서 service에 num을 통해 넘겨주면 
그 번호에 맞는 내용을 가져오게 된다.


BoardService

1
2
3
4
 // 게시판 읽기
     public BoardVO boardRead(int num) throws Exception {
            return boardMapper.boardRead(num);
     }
cs



BoardMapper

1
2
// 게시판 읽기
     public BoardVO boardRead(int num) throws Exception;
cs



BoardMapper.xml

1
2
3
4
5
<select id="boardRead" resultType="BoardVO">
        SELECT num, title, content, writer
        FROM hello_board
        WHERE num = #{num}
    </select>
cs

mapper 쿼리에서도 마찬가지로 해당 번호가 일치하고 존재하는지 확인하고 
내용을 끌어온다.



boardRead.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<html>
<head>
</head>
<body>
<h2>[게시판 내용]</h2>
<form name="form" method="post">
    <div>글번호<input name="num" readonly="readonly" value="${data.num}"></div>
    <div>제목<input name="title" readonly="readonly" value="${data.title}"></div>
    <div>내용<input name="content" readonly="readonly" value="${data.content}"></div>
    <div>작성자<input name="writer" readonly="readonly" value="${data.writer}"></div>
</form>
<button onclick="location.href='boardList'">목록</button>
<button id="modify" onclick="location.href='boardModifyForm?num=${data.num}'">수정</button>
<button id="delete" onclick="location.href='boardDelete?num=${data.num}'">삭제</button>
<%-- <a href='<c:url value='/boardDelete?bno=${data.bno}'/>'>삭제</a> --%>
<!-- 두가지 모두 가능 -->
</body>
</html>
cs



해당 글을 클릭했을때 이런 그림이 나온다면 성공한 것이다.