본문 바로가기
프로젝트/Spring Boot 블로그프로젝트

[블로그프로젝트] 21. 글목록 만들기

by dantriss 2023. 6. 11.

유튜브에서 블로그 만들기 프로젝트를 따라하면서 나의 스킬을 조금더 레벨업 하고자 한다.

IDE : IntelliJ

언어 : Java

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


글을 작성했으니 이제 작성한 글들을 메인화면에 띄워주자

boardController.java 에서 아래와 같이 작성한다.

@Autowired
BoardService boardService;

@GetMapping({"", "/"})
    public String index() {
        return "index";     
    }

 

컨트롤러를 작성했으니 이제 서비스를 작성하자

글목록이라는 메서드를 작성하고 작성된 글이 여러개 일 수도 있으니 List타입으로 board를 넣어준다.

모든 글들을 가져오기위해 FindAll()을 사용한다

    @Transactional(readOnly = true)
    public Page<Board> 글목록(Pageable pageable){

        return boardRepository.findAll(pageable);
    }

 

db에 저장되어 있는 데이터들을 가져오기 위해서 Model이 필요하다.

매개변수로 넣어주고 Index로 리턴해줄 때 해당 데이터들을 가지고 간다.

@GetMapping({"", "/"})
    public String index(Model model) {
        model.addAttribute("boards", boardService.글목록());
        return "index";
    }

 

index.jsp로 이동해서 header부분에 넣은 c tag를 사용하여 반복문을 만들어주고 items로 컨트롤러에서 리턴한 boards를 받는다.

제목부분에 ${board.title}을 해주면 board.java에 getter setter 어노테이션을 넣어주었기 때문에 board.getTitle과 같은 기능으로 작동할 수있다. 해당 내용으로 이동하는 부분은 임시로 #로 만들어 놓았고 align="center"를 이용해 가운데 정렬로 해놓았다.

<div class="container">

    <c:forEach var="board" items="${boards}">

        <div class="card m-3">
            <div class="card-body" align="center">
                <h4 class="card-title">${board.title}</h4>  <%--board.getTitle 과 같음--%>
                <a href="#" class="btn btn-primary m-2" style="width: 100px">detail</a>
            </div>
        </div>

    </c:forEach>



</div>

 

글을 최소 2개이상 만들어서 확인하기 위해 글을 한개 더 작성해보자

 

db에 있는 글들을 가져와서 메인화면에서 이렇게 볼 수 있다.

 

댓글