게시글 목록 구현

chrkb1569·2022년 7월 8일
0

개인 프로젝트

목록 보기
3/28

지난글에 이어서 오늘은 게시글의 목록을 구현해보았습니다.

머리로만 이해하던걸 직접 해보자니 아직 갈길이 멀었다는 걸 느끼게 됩니다.

개발자 될 수 있을까요...ㅠ

일단 지난번에 만들었던 게시글 작성 완료 폼을 수정하였습니다.

처참한 디자인
전에는 게시글 작성 완료폼에서 제목, 아이디, 게시글을 수정할 수 있었으나, 읽기 전용으로 변경하여 수정하지 못하도록 하였으며, 목록으로 이동하는 버튼을 추가해주었습니다.

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>게시글 작성 완료</title>
</head>

<style>
    .layout {
        width : 500px;
        margin : 0 auto;
        margin-top: 40px;
    }

    .board_title {
        width : 500px;
        margin-bottom: 10px;
    }

    .board_user_id {
        width : 500px;
        margin-bottom: 10px;
    }

    .board_content {
        width : 500px;
        margin-bottom: 10px;
    }
</style>

<body>
<div class = "layout">
    <div class>
        <h2>게시글 상세</h2>
    </div>

    <div class = "board_title">
        <label for="title">게시글 제목</label>
        <input type="text" id="title" name="title" class="form-control" th:value="${board.title}" readonly>
    </div>

    <div class = "board_user_id">
        <label for="user_id">사용자 ID</label>
        <input type="text" id="user_id" name="user_id" class="form-control" th:value="${board.user_id}" readonly>
    </div>

    <div class = "board_content">
        <label for="content">게시글</label>
        <input type="text" id="content" name="content" class="form-control" th:value="${board.content}" readonly>
    </div>

    <div class>
        <div>
            <button onclick="location.href='/boards'" th:onclick="|location.href='@{/boards}'|"
                    type="button">게시글 목록</button>
        </div>
    </div>

</div>
</body>
</html>

이제 게시글의 목록으로 이동해주기 때문에, Controller도 수정해주었는데, Repository에 존재하는 데이터들을 리스트의 형태로 반환해주는 getList() 메소드를 통하여 리스트를 Model에 담아 boards로 이동시켜주는 역할을 수행하도록 하였습니다.


@Controller
public class CrudController {
    @Autowired
    private CrudService crudService;

    @RequestMapping
    public String write_form() {
        return "writeform";
    }

    @PostMapping("/board/write")
    public String write(board board, Model model) {
        crudService.save(board);
        model.addAttribute("board", board);

        return "writeresultform";
    }

    @GetMapping("boards")
    public String boards(Model model) {
        List<board> boards = crudService.getList();

        model.addAttribute("boards", boards);

        return "boards";
    }

}

@Service
public class CrudService {
    @Autowired
    private CrudRepository crudRepository;

    public void save(board board) {
     crudRepository.save(board);
    }

    public List<board> getList() {
        return crudRepository.findAll();
    }

}

그리고 boards.html파일을 만들어서 데이터베이스에 존재하는 데이터들을 출력해주도록 하였습니다.

처참한 디자인2

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>게시글 목록 조회</title>
</head>

<style>
    .layout {
        width : 500px;
        margin : 0 auto;
        margin-top: 40px;
    }
</style>

<body>
<div class="layout">
    <table>
        <thead>
        <tr>
            <th>번호</th>
            <th>제목</th>
            <th>사용자</th>
        </tr>
        </thead>

        <tbody>
        <tr th:each="board : ${boards}">
            <td><a th:text="${board.number}"></a></td>
            <td><a th:text="${board.title}"></a></td>
            <td><a th:text="${board.user_id}"></a></td>
        </tr>
        </tbody>

    </table>
</div>
</body>
</html>

일단 게시글 목록을 출력하는데에는 성공했습니다.

스프링으로 로직 구현하는 건 재미있는데 html파일 만들어야 한다는게 좀 부담이 되네요...

그래도 정상적으로 작동되는거 보고 있으면 뿌듯합니다ㅋㅋ

0개의 댓글